SpringMVC总结
1、@RequestMapping 请求映射器
value、method、params 及 heads分别 请求URL、请求方法、请求参数及请求头。它支持
Ant 风格资源地址,支持 3 种匹配方式
?匹文件名中一个字 –
*匹文件名中任意字 –
**** 匹配多层路径
如:
@RequestMapping(value="/emp/{id}", method=RequestMethod.DELETE, params=? ,heads=? )
2、@PathVariable 映射 URL 绑定占位
通过 @PathVariable 可以将 URL 中占位参数 可以通过 @PathVariable("xxx") 绑定到操作方法入参中。
如:
@RequestMapping(value="/emp/{id}", method=RequestMethod.GET)
public String input(@PathVariable("id") Integer id, Map<String, Object> map){
map.put("employee", employeeDao.get(id));
map.put("departments", departmentDao.getDepartments());
return "input";
}
3、@RequestParam 绑定请求参数值
在方法入参处使用 @RequestParam 可以把请求参数传给请求方法
value 参数名 –
required 是否必须,若为 true, 请求参数中必须包含对应参数,否则不存在将抛出异常
如:
public void getEmployee(@RequestParam(value="id",required=false) Integer id,
Map<String, Object> map){
if(id != null){
map.put("employee", employeeDao.get(id));
}
}
4、@RequestHeader 绑定请求报文头属性值
如:
public void getEmployee(@RequestHeader(value="Accept-Encoding",required=false) String encoding,
Map<String, Object> map){
}
5、@CookieValue 绑定请求中 Cookie 值
如:
public void getEmployee(@CookieValue(value="sessionId",required=false) String sessionId,
Map<String, Object> map){
}
6、使 POJO 对绑定请求参数值
Spring MVC 会按请求参数名和 POJO 属性名进行动态匹配,支持级联
MVC Handler 方法可以接受
哪些 ServletAPI 类型参数
HttpServletRequest
HttpServletResponse
HttpSession
java.security.Principal
Locale
InputStream
OutputStream
Reader
Writer
如:
public void getEmployee(User user, HttpServletRequest request){
}
7、Spring 处理模型数据
ModelAndView 可作为方法体的参数:,方法返回值类型为 ModelAndView 可对该对象添加模型数据
如:
@RequestMapping("/ModelAndView")
public ModelAndView testModelAndView(ModelAndView modelAndView ,HttpServletRequest request, @RequestParam String desc) {
User user = new User(1, "zhaoyq", "123456", 888, null);
modelAndView.addObject("user", user);
return modelAndView;
}
Map Model ModelMap
如:
@RequestMapping("/ModelAndView")
public String testModelAndView(Model model ,HttpServletRequest request, @RequestParam String desc) {
User user = new User(1, "zhaoyq", "123456", 888, null);
model.put("user", user);
return "success";
}
8、@SessionAttributes:
将模型中某个属性暂存到HttpSession 中以便多个控制器页面进行共享这个属性@SessionAttributes:注意(@SessionAttributes注解,只能加在类的上面)
如:
@SessionAttributes(value={“user1”, “user2”},types={User.class, String.class})
public class FileUploadCommon {
@RequestMapping("/ModelAndView")
public String testModelAndView(Model model ,HttpServletRequest request, @RequestParam String desc) {
User user1 = new User(1, "zhaoyq", "123456", 888, null);
User user2 = new User(1, "zhaoyq", "123456", 888, null);
model.put("user", user1);
model.put("user", user2);
model.put("desc", "desc8888");
return "success";
}
}
9、@ModelAttribute 注解
使用@ModelAttribute 注解可以实现表单回显,实际上是从数据库中拿到数据,然后将数据放在模型中
注意(使用@ModelAttribute 注解标注的方法会在所有方法之前执行)
如:
@Controller
@RequestMapping("/user")
public class UserController {
@ModelAttribute
public void getEmployee(@RequestParam(value="id",required=false) Integer id,
Map<String, Object> map){
if(id != null){
map.put("employee", employeeDao.get(id));
}
}
@RequestMapping(value = "/testModelAttribute")
public String handle72( ModelMap modelMap,SessionStatus sessionStatus){
}
}
10、Spring MVC 是如何解析视图的
请求处方法执完成后返回一个 String View 或 ModeMap ModelAndView 类型
Spring MVC 也会在内部将它们转成一个 ModelAndView 对象其中它包含了逻辑名(字符串)和模型和视图
Spring MVC 借助视图解析器 ViewResolver 得到最终视图对 View 最终视图,可以是 JSP 也可是
Excel、JFreeChart 各种形式的视图,然后对视图模型数据进行渲染,呈现给客户端。
JSP 视图 : 视图解析器 InternalResourceViewResolver
模板视图 : 视图解析器 FreeMarkerViewResolver
Excel 视图 : 视图解析器 AbstractExcelView 或 AbstractJExcelView
11、关于返回值的转发、定向
一般情况下控制器方法返回字符串类型值会当成逻辑视图解析
如果回字串中带 forward: 或 redirect: 前缀时 SpringMVC 会对他们进特殊处理
将 forward: 和 redirect: 当成指其后字串作为 URL 来处理
redirect:success.jsp会完成一个到 success.jsp 定向操作
forward:success.jsp会完成一个到 success.jsp 转发操作
12、RESTful 风格的 SpringMVC CRUD 操作
添加 : post 查询 : get
删除 : delete 更新 : put
1、@RequestMapping 请求映射器
value、method、params 及 heads分别 请求URL、请求方法、请求参数及请求头。它支持
Ant 风格资源地址,支持 3 种匹配方式
?匹文件名中一个字 –
*匹文件名中任意字 –
**** 匹配多层路径
如:
@RequestMapping(value="/emp/{id}", method=RequestMethod.DELETE, params=? ,heads=? )
2、@PathVariable 映射 URL 绑定占位
通过 @PathVariable 可以将 URL 中占位参数 可以通过 @PathVariable("xxx") 绑定到操作方法入参中。
如:
@RequestMapping(value="/emp/{id}", method=RequestMethod.GET)
public String input(@PathVariable("id") Integer id, Map<String, Object> map){
map.put("employee", employeeDao.get(id));
map.put("departments", departmentDao.getDepartments());
return "input";
}
3、@RequestParam 绑定请求参数值
在方法入参处使用 @RequestParam 可以把请求参数传给请求方法
value 参数名 –
required 是否必须,若为 true, 请求参数中必须包含对应参数,否则不存在将抛出异常
如:
public void getEmployee(@RequestParam(value="id",required=false) Integer id,
Map<String, Object> map){
if(id != null){
map.put("employee", employeeDao.get(id));
}
}
4、@RequestHeader 绑定请求报文头属性值
如:
public void getEmployee(@RequestHeader(value="Accept-Encoding",required=false) String encoding,
Map<String, Object> map){
}
5、@CookieValue 绑定请求中 Cookie 值
如:
public void getEmployee(@CookieValue(value="sessionId",required=false) String sessionId,
Map<String, Object> map){
}
6、使 POJO 对绑定请求参数值
Spring MVC 会按请求参数名和 POJO 属性名进行动态匹配,支持级联
MVC Handler 方法可以接受
哪些 ServletAPI 类型参数
HttpServletRequest
HttpServletResponse
HttpSession
java.security.Principal
Locale
InputStream
OutputStream
Reader
Writer
如:
public void getEmployee(User user, HttpServletRequest request){
}
7、Spring 处理模型数据
ModelAndView 可作为方法体的参数:,方法返回值类型为 ModelAndView 可对该对象添加模型数据
如:
@RequestMapping("/ModelAndView")
public ModelAndView testModelAndView(ModelAndView modelAndView ,HttpServletRequest request, @RequestParam String desc) {
User user = new User(1, "zhaoyq", "123456", 888, null);
modelAndView.addObject("user", user);
return modelAndView;
}
Map Model ModelMap
如:
@RequestMapping("/ModelAndView")
public String testModelAndView(Model model ,HttpServletRequest request, @RequestParam String desc) {
User user = new User(1, "zhaoyq", "123456", 888, null);
model.put("user", user);
return "success";
}
8、@SessionAttributes:
将模型中某个属性暂存到HttpSession 中以便多个控制器页面进行共享这个属性@SessionAttributes:注意(@SessionAttributes注解,只能加在类的上面)
如:
@SessionAttributes(value={“user1”, “user2”},types={User.class, String.class})
public class FileUploadCommon {
@RequestMapping("/ModelAndView")
public String testModelAndView(Model model ,HttpServletRequest request, @RequestParam String desc) {
User user1 = new User(1, "zhaoyq", "123456", 888, null);
User user2 = new User(1, "zhaoyq", "123456", 888, null);
model.put("user", user1);
model.put("user", user2);
model.put("desc", "desc8888");
return "success";
}
}
9、@ModelAttribute 注解
使用@ModelAttribute 注解可以实现表单回显,实际上是从数据库中拿到数据,然后将数据放在模型中
注意(使用@ModelAttribute 注解标注的方法会在所有方法之前执行)
如:
@Controller
@RequestMapping("/user")
public class UserController {
@ModelAttribute
public void getEmployee(@RequestParam(value="id",required=false) Integer id,
Map<String, Object> map){
if(id != null){
map.put("employee", employeeDao.get(id));
}
}
@RequestMapping(value = "/testModelAttribute")
public String handle72( ModelMap modelMap,SessionStatus sessionStatus){
}
}
10、Spring MVC 是如何解析视图的
请求处方法执完成后返回一个 String View 或 ModeMap ModelAndView 类型
Spring MVC 也会在内部将它们转成一个 ModelAndView 对象其中它包含了逻辑名(字符串)和模型和视图
Spring MVC 借助视图解析器 ViewResolver 得到最终视图对 View 最终视图,可以是 JSP 也可是
Excel、JFreeChart 各种形式的视图,然后对视图模型数据进行渲染,呈现给客户端。
JSP 视图 : 视图解析器 InternalResourceViewResolver
模板视图 : 视图解析器 FreeMarkerViewResolver
Excel 视图 : 视图解析器 AbstractExcelView 或 AbstractJExcelView
11、关于返回值的转发、定向
一般情况下控制器方法返回字符串类型值会当成逻辑视图解析
如果回字串中带 forward: 或 redirect: 前缀时 SpringMVC 会对他们进特殊处理
将 forward: 和 redirect: 当成指其后字串作为 URL 来处理
redirect:success.jsp会完成一个到 success.jsp 定向操作
forward:success.jsp会完成一个到 success.jsp 转发操作
12、RESTful 风格的 SpringMVC CRUD 操作
添加 : post 查询 : get
删除 : delete 更新 : put