发表于: 2020-01-08 15:33:24

1 1106


今天完成的事情:

1.将接口改成restfuf风格的

controller层:根据ID查询是个小测试所以没改。

package com.wp.sm.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wp.sm.beans.User;
import com.wp.sm.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {
@Resource(name = "userService")
private UserService userService;

   /**
    * 根据id查询
    */
   @RequestMapping(value = "/selectUserById")
public ModelAndView selectUserById(HttpServletRequest request) {
ModelAndView mv = new ModelAndView();
       int id = Integer.parseInt(request.getParameter("id"));
       try {
User user = userService.selectUserById(id);
           mv.setViewName("selectbyid");
           mv.addObject("user", user);
       } catch (Exception e) {
e.printStackTrace();
       }
return mv;
   }

@RequestMapping(value ="/delete",method=RequestMethod.DELETE)
public String deleteById(int id) throws Exception {
userService.deleteUser(id);
       return "redirect:show";
   }

@RequestMapping(value ="/insertUserView")
public String addUserView() {
return "insert";
   }

@RequestMapping(value = "/insert",method=RequestMethod.POST)
public String insertUser(User user) throws Exception {
userService.insertUser(user);
       return "redirect:show";
   }
@RequestMapping(value ="/update/{id}",method=RequestMethod.GET)
public String update(@PathVariable("id") int id, Model model) throws Exception {
model.addAttribute("user",userService.selectUserById(id));
       return "update";
   }

@RequestMapping(value = "/update",method = RequestMethod.PUT)
public String update(User user) throws Exception {
userService.updateUser(user);
       return "redirect:show";
   }

@RequestMapping(value ="/show",method=RequestMethod.GET)
public String userList(@RequestParam(required=true,defaultValue="1") Integer page, HttpServletRequest request, Model model) throws Exception {
//page默认值是1,pageSize默认是10,我写的是2 意思是从第1页开始,每页显示2条记录。
       PageHelper.startPage(page, 10);
       List<User> userList = userService.selectAllUser();
       System.out.println(userList);
       PageInfo<User> p=new PageInfo<User>(userList);
       model.addAttribute("page", p);
       model.addAttribute("userList",userList);
       return "show";
   }

}

web.xml中添加一个过滤器

<!-- 浏览器form表单只支持get和post请求,而delete和put请求并不支持。HiddenHttpMethodFilter是spring中自带的一个过滤器,
可以将浏览器表单请求转换为标准的http请求,使它们支持get、post、delete、put请求。-->
<filter>
   <filter-name>HiddenHttpMethodFilter</filter-name>
   <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>HiddenHttpMethodFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

jsp页面作出如下更改:

<form action="/user/delete?id=${p.id}" method="post">
   <input type="hidden" name="_method" value="DELETE">
<form id="updateForm" action="${pageContext.request.contextPath}/user/update" method="post">
   <input type="hidden" name="_method" value="PUT">
<form id="insertForm" action="${pageContext.request.contextPath}/user/insert" method="post">
   <input type="hidden" name="_method" value="POST">


明天计划的事情:

完成后面的任务


遇到的问题:

1.改添加数据时,出现乱码,猜测应该是过滤器的原因,在添加HidedenHttpMethodFilter的时候把这个过滤器加到了解决post乱码过滤器的上面,就出现乱码,放到下面就没有乱码了。可能执行有先后顺序?我也不太清楚。

<!-- 解决post乱码 -->
<filter>
   <filter-name>CharacterEncodingFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   <init-param>
       <param-name>encoding</param-name>
       <param-value>utf-8</param-value>
   </init-param>
</filter>
<filter-mapping>
   <filter-name>CharacterEncodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 浏览器form表单只支持get和post请求,而delete和put请求并不支持。HiddenHttpMethodFilter是spring中自带的一个过滤器,
可以将浏览器表单请求转换为标准的http请求,使它们支持get、post、delete、put请求。-->
<filter>
   <filter-name>HiddenHttpMethodFilter</filter-name>
   <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>HiddenHttpMethodFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

2.改更新数据的时候不知道应该怎么改。改过之后不是报错就是更新功能失效。原因是:看下面的代码,原来是只有第三行的代码,如果把第三行代码改成第二行的,更新功能就会失效,因为如果去掉第三行id传不进去,自然就不会成功,没有第二行程序也会报错。我之前以为只能有一个隐藏字段,尝试又加了一个隐藏字段,就可以正常运行了。说明是可以加多个隐藏字段的。

<form id="updateForm" action="${pageContext.request.contextPath}/user/update" method="post">
   <input type="hidden" name="_method" value="PUT">
   <input type="hidden" value="${user.id}" name="id"/>
   <table align="center" bgcolor="lightgrey" border="1" cellpadding="0">

Hidden

<input type="hidden" /> 定义隐藏字段。隐藏字段对于用户是不可见的。隐藏字段通常会存储一个默认值,它们的值也可以由 JavaScript 进行修改。

3.还是没搞懂步骤三怎么操作,明天再看看吧。


收获:

1.什么是假数据?

当我们做好了客户端的开发,为了从服务器获取数据,就要从后台调用接口进行json解析。由于没有数据库,但还是要测试的时候,就需要假数据来实现这部分的功能。

2.什么是Jetty? 

Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。

3.Json练习


返回列表 返回列表
评论

    分享到