springmvc注解

一.spring-serlvet.xml

1      <!-- 注解搜索包 -->
2      <context:component-scan base-package="com.dwl.controller.annotation"></context:component-scan>
3      <!-- 注解需要的两个支持,开启注解 -->
4      <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
5      <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>


二.Controller

 1 @Controller
 2 public class PersonController {
 3 
 4     @RequestMapping(value="/test/add" , method=RequestMethod.GET )
 5     public ModelAndView add(){
 6         String data = "这是一个添加人的方法";
 7         return new ModelAndView("/index","data",data);
 8     }
 9     @RequestMapping(value="/test/del" , method=RequestMethod.GET)
10     public ModelAndView delete(){
11         String data = "删除人的方法";
12         return new ModelAndView("/index" , "data" , data);
13     }
14     
15 }

这样就可以实现springmvc注解,但是我们这样看很别扭,无论是xml还是Controller,配置的很繁琐,和原来我们学的annotation不太一样,下面,就进行一下springmvc注解的优化
  1.优化xml配置

    这个注解需要两个类来支持,也可以说成开启注解,这两句话不好记也不好写,这个可以换成

1      <!-- 注解需要的两个支持,开启注解 -->
2      <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
3      <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>
4      <!-- 上面两句话可以合成下面这一句话 -->
5      <mvc:annotation-driven/>

  2.优化访问路径(Controller)

    在Controller里,注解@RequestMapping(value="/test/del",这里的/test/,我们每个方法都要写个,这根java的规范有冲突,所以,这句话可以提到类上面来,意思就是为这个类下面的所有方法都添加这个路径。

 1 @Controller
 2 @RequestMapping(value="/test")
 3 public class PersonController {
 4 
 5     @RequestMapping(value="/add" , method=RequestMethod.GET )
 6     public ModelAndView add(){
 7         String data = "这是一个添加人的方法";
 8         return new ModelAndView("/index","data",data);
 9     }
10     @RequestMapping(value="/del" , method=RequestMethod.GET)
11     public ModelAndView delete(){
12         String data = "删除人的方法";
13         return new ModelAndView("/index" , "data" , data);
14     }
15     
16 }

  3.优化method(Controller)

    @RequestMapping(value="/add" , method=RequestMethod.GET),这里的提交方式method,如果说页面是post提交,而这里是get,那就会有错,这个问题不大,但是如果代码量庞大的话,你肯定得懵,这里,可以不用写,method=RequestMethod.GET,这句话可以去掉,springmvc会自动的根据你提交的方式提交。

1 @RequestMapping(value="/add")
2     public ModelAndView add(){
3         String data = "这是一个添加人的方法";
4         return new ModelAndView("/index","data",data);
5     }

  4.优化value(Controller)

    @RequestMapping(value="/add"),这里面只有一个value感觉很多余,我们可以把这个value去掉

1 @RequestMapping("/add")
2     public ModelAndView add(){
3         String data = "这是一个添加人的方法";
4         return new ModelAndView("/index","data",data);
5     }

  5.优化ModelAndView(Controller)

     我们记得struts的action返回的是void或者String,没有这个返回值,我们每次引用也很不方便,这里也可以改成String,那么修改成String的话我们怎么想页面传值呢?

我们先用最原始的request。

1 @RequestMapping("/add")
2     public String add(HttpServletRequest request){
3         String data = "这是一个添加人的方法";
4         request.setAttribute("data", data);
5         return "/index";
6     }

  优化这我5个点我们在来看看,springmvc

  1.配置文件xml

1 <!-- 注解搜索包 -->
2      <context:component-scan base-package="com.dwl.controller.annotation"></context:component-scan>
3      <!-- 注解需要的两个支持,开启注解 -->
4      <mvc:annotation-driven/>

  2.Controller

 1 @Controller
 2 @RequestMapping(value="/test")
 3 public class PersonController {
 4 
 5     @RequestMapping("/add")
 6     public String add(HttpServletRequest request){
 7         String data = "这是一个添加人的方法";
 8         request.setAttribute("data", data);
 9         return "/index";
10     }
11     @RequestMapping("/del" )
12     public String delete(HttpServletRequest request){
13         String data = "删除人的方法";
14         request.setAttribute("data" , data);
15         return "/index";
16     }
17     
18 }

  和上面的以比较,看着很清爽,这里如果你想操作响应的,直接在给方法参数添加响应HttpservletResponse就行了。

    

如果有使用请标明来源:http://www.cnblogs.com/duwenlei/
原文地址:https://www.cnblogs.com/duwenlei/p/3509248.html