发表于: 2017-10-25 23:07:13
1 743
今日完成的事情:
今天写了一下我的controller层。
@Controller
@RequestMapping(value = "/test")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/listUser",method = RequestMethod.GET)
public String listUser(Model model) {
List<User> list = userService.queryAllUser();
model.addAttribute("list", list);
return "listUser";
}
@RequestMapping(value = "/user",method = RequestMethod.POST)
public String detailForUser(int id, Model model) {
if (userService.queryUserById(id) != null) {
User user = userService.queryUserById(id);
model.addAttribute("user", user);
return "listUser";
} else {
return "error";
}
}
有点长,我只贴一部分。这部分我没有用上restful风格的风格,我也看了一下restful风格,但是优点看不懂,明天还得继续,把controller层全部替换成restful风格。
利用jsp的taglib标签写了一个展示全部用户的简单页面。
%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>所有用户信息</title>
<style type="text/css">
table tr td,th{mso-cellspacing: 0;border:1px solid #000}
</style>
</head>
<body>
<table>
<caption>所有用户信息</caption>
<tr>
<th>id</th><th>姓名</th><th>qq</th><th>stuType</th><th>entrance</th><th>graduated</th>
<th>onlineId</th><th>link</th><th>wish</th><th>tutor</th><th>whereGet</th>
</tr>
<c:forEach items="${list}" var="u">
<tr>
<td>${u.id }</td><td>${u.name }</td><td>${u.qq}</td><td>${u.stuType}</td><td>${u.entrance}</td>
<td>${u.graduated}</td><td>${u.onlineId}</td><td>${u.link}</td><td>${u.wish}</td><td>${u.tutor}</td><td>${u.whereGet}</td>
</tr>
</c:forEach>
页面展示效果,我数据库只有一条数据:
今天完成的事情比较少,主要是我的controller层一直调不出页面来。
弄了好长时间,最好只好求助学长,求助师兄的过程也收获不少,看到了师兄解决问题的步骤。
由于师兄帮我调试时,没有办法截图,在这里我就说一下过程吧:
首先师兄用tomcat帮我部署一下,根据报错日志进行查找错误,但是tomcat提示信息不准确,换了好多种方式,tomcat始终报一个错误。
然后师兄用jetty部署:jetty插件:
<!-- maven下的jetty插件 -->
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.6.v20170531</version>
<configuration>
<!-- scanIntervalSeconds用来设置时间的间隔,即每隔多长时间部署一次 -->
<scanIntervalSeconds>5</scanIntervalSeconds>
<webApp>
<contextPath>/</contextPath>
</webApp>
<!-- <connectors> 默认的nio会将jsp和css文件锁定,可以更改为bio <connector implementation="org.eclipse.jetty.server.bio.SelectChannelConnector">
<port>8080</port> </connector> </connectors> -->
</configuration>
</plugin>
这是师兄部署的jetty插件。
这里师兄告诉我,jetty部署可以用来帮助我们有效的查找我们的错误。
然后根据jetty的日记进行查找,很快定位到我的错误出在这个地方:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:SqlSessionFactory.xml"/>
<property name="typeAliasesPackage" value="com.mmy.model"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.mmy.dao"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
这是后来正确的。
然后进行了分析:
我的代码写得都没有错误,主要就是写的文件的位置的问题,我推测文件位置放的不合理的话,有可能会造成不能加载。然后师兄帮我把dao接口的映射文件放在了sources里面,这个文件是根路径,可以利用classpath:找到。
然后重新帮我配置了一个SqlSessionFactory文件:
configuration>
<settings>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<mappers>
<mapper resource="UserDao.xml"/>
</mappers>
</configuration>
添加了一个mappers。
然后在configLocation上加了一个classpath:
<property name="configLocation" value="classpath:SqlSessionFactory.xml"/>
至此,问题解决。
然后师兄告诉我了一些书写规范,这是师兄帮我修改后的工程结构:
这种工程结构,便于以后的维护和开发,而且按照开发规范写的话,会减少很多不必要的麻烦。
明日计划的事情:
restful风格接口规范,以及完善后续的jsp和controller。
遇到的问题:
controller部署不到服务器上面,师兄帮忙解决。
收获:
今天虽然代码部分完成的少,但是学到的内容还是不少的。首先,碰到问题该如何解决,把困难分解成小部分,逐个尝试,解决。其次,写代码和工程结构一定要按照规范来写,会减少很多不必要的麻烦,而且可以直接过度到后期。最后是一个很重要的,就是碰到问题,不要死磕,我这个问题其实中午就碰到了,吃过饭之后找了很多方法,都没有解决,一直拖到晚上吃饭,才找师兄解决。
任务开始时间:2017/10/18
预计完成时间:2017/10/25
延期:无
禅道:http://task.ptteng.com/zentao/project-task.html
评论