spring Mvc 的 简单总结 上

本文介绍了SpringMVC框架中的关键注解用法,包括请求映射、参数绑定、模型数据处理等,并详细解释了视图解析过程及RESTful风格的CRUD操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值