1.开启注解优化
原来版本,每次开启注解都要这个配置,为什么不合为一个配置呢,而且需要知道是哪个包的哪个类.
<!-- 根据url找方法 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
<!-- 根据扫描包下找类 -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>
优化版
<mvc:annotation-driven></mvc:annotation-driven>
2.注解URL优化
原版
@Controller
public class UserController {
@RequestMapping(value="/user/addUser", method=RequestMethod.GET)
public ModelAndView addUser(){
return new ModelAndView("annotation","result", "addUser-----");
}
@RequestMapping(value="/user/delUser", method=RequestMethod.GET)
public ModelAndView delUser(){
return new ModelAndView("annotation","result", "delUser-----");
}
}
这里的URL都是"/user/*********",这个/user重复了,增加了代码量.
优化版
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(value="/addUser", method=RequestMethod.GET)
public ModelAndView addUser(){
return new ModelAndView("annotation","result", "addUser-----");
}
@RequestMapping(value="/delUser", method=RequestMethod.GET)
public ModelAndView delUser(){
return new ModelAndView("annotation","result", "delUser-----");
}
}
3.请求方式get/post优化
原版是这样:
@RequestMapping(value="/addUser", method=RequestMethod.GET)
其实很多时候不需要区分get/post,现在经常使用的ajax,都要指定get/post,开发的时候如果都要知道后台的处理方式是get/post,就太麻烦了.
优化版:去掉method
@RequestMapping(value="/addUser")
这里还可以进一步优化,每次都会写个value="******",这个value是重复的,可去掉
@RequestMapping("/addUser")
4.ModelAndView优化
原版
public ModelAndView addUser(){
return new ModelAndView("annotation","result", "addUser-----");
}
这里引入了ModelAndView,不够简洁,struts2里可是用的String,springmvc也可以
@RequestMapping("/addUser")
public String addUser(){
return "annotation";
}
但是这么做要怎样传递数据呢?用最传统的方式request.setAttribute.
@RequestMapping("/addUser")
public String addUser(HttpServletRequest request){
request.setAttribute("result", "addUser-----");
return "annotation";
}
方法的参数里加入了HttpServletRequest request,如果没用到respones,可先不加response参数.