发表于: 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



返回列表 返回列表
评论

    分享到