1、什么是restful风格
大家在做Web开发的过程中,method常用的值是get和post. 可事实上,method值还可以是put和delete等等其他值。 既然method值如此丰富,那么就可以考虑使用同一个url,但是约定不同的method来实施不同的业务,这就是Restful的基本考虑。
2、restful风格独特之处
2.1 url的不同
2.2 请求方法的不同
学习javaweb的时候,我们只知道了get和post两种请求方法,当restful却不止这两种
获取数据:GET请求
增加数据:POST请求
修改数据:PUT请求
删除数据:DELETE请求
3、ssm实现restful风格增删改查
3.1 配置HiddenHttpMethodFilter过滤器
浏览器form表单只支持get和post请求,而delete和put请求并不支持。HiddenHttpMethodFilter是spring中自带的一个过滤器,可以将浏览器表单请求转换为标准的http请求,使它们支持get、post、delete、put请求。
HiddenHttpMethodFilter
org.springframework.web.filter.HiddenHttpMethodFilter
HiddenHttpMethodFilter
/*
3.2 在jsp中如何指定form表单的请求方式
在表单中加入隐藏域,name属性一定要为 ”_method“,这样刚才配的HiddenHttpMethodFilter拦截器才能够识别,value属性就是我们需要的请求方式。这样springmvc就会帮我们做
3.3 restful参数传递
在获取一条数据时或删除一条数据时,一般情况下前端要向后端传入一个id值,restful风格的参数传递与之前讲的注解@RequestMapping()注解映射请求中的URI模板一样,将参数作为变量放在URL中。
示例:
前端传入id值为10000,id为以参数变量
前端浏览器URL:http://www.example.com/users/10000
@RequestMapping()注解:@RequestMapping("/users/{id}")
方法中接收id:public String getOneUser(@PathVariable("id") int id){}
3.4增删改查实例
controller:
@Controller
public class UserController {
@Resource(name="userService")
UserService userService;
/*
* 查询所有用户
*/
@RequestMapping(value="/users",method=RequestMethod.GET)
public String index(Model model) {
List users = userService.getAllUser();
model.addAttribute("users", users);
return "users";
}
/*
* 转发到添加用户的视图
*/
@RequestMapping("/addUserView")
public String addUserView() {
return "add";
}
/*
* 添加用户
*/
@RequestMapping(value="/addUser",method=RequestMethod.POST)
public String addUser(User user) {
userService.addUser(user);
return "redirect:/users";
}
/*
* 获取所要修改用户的信息
*/
@RequestMapping(value="/user/{id}",method=RequestMethod.GET)
public String updateUserView(@PathVariable("id") Integer id,Model model) {
User user = userService.getOneUserById(id);
model.addAttribute("user",user);
return "updateUserView";
}
/*
* 修改用户信息
*/
@RequestMapping(value="/user",method=RequestMethod.PUT)
public String updateUser(User user) {
userService.updateUser(user);
return "redirect:/users";
}
/*
* 删除用户
*/
@RequestMapping(value="/user/{id}",method=RequestMethod.DELETE)
public String deleteUser(@PathVariable("id") Integer id) {
userService.deleteUser(id);
return "redirect:/users";
}
}
jsp:
users.jsp:
pageEncoding="UTF-8"%>
获取全部用户信息编号 | 用户名 | 密码 | 操作 | |
---|---|---|---|---|
${user.id } | ${user.username } | ${user.password } | 修改 |
add.jsp:
pageEncoding="UTF-8"%>
Insert title here用户名:
密 码:
updateUserView.jsp:
pageEncoding="UTF-8"%>
Insert title here编号 | value="${requestScope.user.id }"> |
---|---|
用户名 | value="${requestScope.user.username }"> |
密码 | value="${requestScope.user.password }"> |