发表于: 2017-10-27 21:50:06

2 710


今天完成的事情:

今天把ssm框架搭建正式完成。然后让师兄看了一下,师兄说没有一点restful风格。好吧,但是最起码是搭建完成了。任务里面要求的json今天下午也运用了,还有log4j打印日志也可以了,接下来就是修改成restful风格。

首先是我的controller层:

@RequestMapping(value = "/users",method = RequestMethod.GET)
public String listUser(Model model) {
   List<User> list = userService.queryAllUser();
   model.addAttribute("list", list);
   logger.info("所有用户");
   return "listUser";
}
@RequestMapping(value = "add",method = RequestMethod.POST)
public String addUserForm(){
    return "addUser";
}
@RequestMapping(value = "delete",method = RequestMethod.GET)
public String delete(){ return "deleteUser"; }
@RequestMapping(value = "update",method = RequestMethod.POST)
public String updateUserForm(){
   return "updateUser";
}

@RequestMapping(value = "/addUser",method = RequestMethod.POST)
public String add(Model model,User user) {
   userService.add(user);
   model.addAttribute("user", user);
   return "redirect:/users";
}

@RequestMapping(value = "/deleteUser",method = RequestMethod.GET)
public String deleteUser(int id) {
   if (userService.queryUserById(id) != null) {
       userService.delete(id);
       return "redirect:/users";
   } else {
       return "error";
   }
}
@RequestMapping(value = "updateUser",method = RequestMethod.POST)
public String update(Model model,User user){
   User user1=new User();
   if(userService.queryUserById(user.getId())!=null){
       user1.setQq(user.getQq());
       user1.setStuType(user.getStuType());
       user1.setEntrance(user.getEntrance());
       user1.setGraduated(user.getGraduated());
       user1.setOnlineId(user.getOnlineId());
       user1.setName(user.getName());
       user1.setWish(user.getWish());
       user1.setTutor(user.getTutor());
       user1.setWhereGet(user.getWhereGet());
       user1.setLink(user.getLink());
   }else {
      return "error";
   }
   userService.update(user1);
   List<User> list=userService.queryAllUser();
   model.addAttribute("list",list);
   return "redirect:/users";
}

对于师兄提出的三个问题,首先今天看书找了一下没有找到,然后师兄告诉我不使用@requestparam注解实现传递参数的方法,可以把user封装成一个对象直接传递给controller层。

public String update(Model model,User user){

就像这样。直接把对象穿过来。

第二个问题,参数太多,将参数封装成一个对象,这个我想了好久找不到具体的方法。这个也是困扰我没有实现restful风格的一个难题。这个问题还要学习知识点解决。

然后自己没有用restful风格,所以写了好多个jsp页面,然后在每个页面添加form表头,进行表单和controller的传递。

这是我的jsp页面:

我的listUser.jsp:

<json:object>
   <json:array items="${list}" var="u" name="user">
       <json:object>
           <json:property name="id" value="${u.id}"/>
           <json:property name="name" value="${u.name}"/>
           <json:property name="qq" value="${u.qq}"/>
           <json:property name="stuType" value="${u.stuType}"/>
           <json:property name="entrance" value="${u.entrance}"/>
           <json:property name="graduated" value="${u.graduated}"/>
           <json:property name="onlineId" value="${u.onlineId}"/>
           <json:property name="tutor" value="${u.tutor}"/>
           <json:property name="wish" value="${u.wish}"/>
           <json:property name="link" value="${u.link}"/>
           <json:property name="whereGet" value="${u.whereGet}"/>
       </json:object>
   </json:array>
</json:object>

用json-taglib输出所有的用户。

然后贴一下我的form标签传递会controller层:

<form method="post" action="${ctx}/add">
   <input type="submit" value="新增用户"/>
</form>
<form method="post" action="${ctx}/update">
   <input type="submit" value="修改"/>
</form>
<form method="get" action="${ctx}/delete">
   <input type="submit" value="删除"/>
</form>

分别传递到增删改查控制器,再通过控制器传回增删改查页面:

RequestMapping(value "add",method = RequestMethod.POST)
public String addUserForm(){
return "addUser";
}
@RequestMapping(value "delete",method = RequestMethod.GET)
public String delete(){ return "deleteUser"}
@RequestMapping(value "update",method = RequestMethod.POST)
public String updateUserForm(){
return "updateUser";
}

然后在页面添加信息回传给控制器,比如:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<html>
<head>
   <title>修改用户信息</title>
</head>
<body>
<form action="${ctx}/updateUser" method="post">
   <table>
       <caption>修改用户信息</caption>

像这样。然后增删改查基本都是通过这种方法实现的。没有用上restful风格,接下来要修改成restful风格。

然后随便添加了两条数据,发现json输出到页面的内容好难看,还没有c标签输出的好看:

json风格:

最后本来一切都挺顺利,结果我的日志,死活打印不出来,用的是和任务一一样的东西,任务一可以,任务二就是不行。然后各种百度,都是让

<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>

放在

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

这个前面,还是没有用,最后只能请教师兄,师兄看了半天也是没有发现错误。

最后没有办法,师兄把他的日志拷贝给我,试了一下OK了,然后我对着对了半天发现基本一样。我就试着把我的日志一行一行的代替师兄的日志,来找错误,然后发现,我的日志一句一句粘贴回来,竟然也可以运行,不是很理解。这个问题困了我比较久。

然后是日志配置:

# logger设置
log4j.rootLogger = INFO,stdout,error,info

# 输出到控制台
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.systemOut.layout.ConversionPattern=[%-3p][%-d{yyyy/MM/dd HH:mm:ss}][%l][%n][%m][%n]
log4j.appender.systemOut.immediateFlush=TRUE
# 输出到文件-ERROR级别
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.File = /root/log2/error.log
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
# 输出到文件-INFO级别
log4j.appender.info = org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.File =/root/log2/info.log
log4j.appender.info.Append = true
log4j.appender.info.Threshold = INFO
log4j.appender.info.layout = org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ]   %m%n

师兄的日志,但是我已经一句一句的替换成我自己的了。

输出效果:

然后测试了一下,没有问题。

明日计划的事情:

明天请假回家5天,有急事。

遇到的问题:

log4j日志打印输出,还有restful风格。log4j日志,师兄把他的日志配置文件拷贝给我,算是解决了。restful还是得继续学习。

收获:

我感觉我的任务二就是一直在磨,但是还是快磨成功了。这里面一度以为自己没有不适合做程序员,哎,最后耐着性子一点一点得总结知识点,慢慢实验,实在搞不出来问师兄,最终还是看到效果得。

任务开始时间:2017/10/18

预计完成时间:2017/10/25

延期:延期2天

延期原因:任务二,知识点比较零散,边学习边敲代码,比较慢,目前剩下restful风格没有完成,接下来要请假5天,任务会继续延期。请假回来,争取早日完成restful风格。

下次预计完成时间:2017/11/2

禅道:http://task.ptteng.com/zentao/project-task.html



返回列表 返回列表
评论

    分享到