spring MVC笔记2—用注入和注解解决一个controller多个方法

一、   实现一个Controller多个方法

           1、controller继承MutliActionController

                 publicclass SpringController extends MultiActionController{

                 }

                   

           2、在spring_mvc.xml配置一个多请求的bean

                <bean id="parameNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">

                         <property name="paramName" value="userCotroller"/>

                </bean>

                注:这个bean有一个属性paramName,它的作用是相当以一个传递参数。比如要访问SpringController中的add()方法,那这里我们的

                传递参数就是?userCotroller=add。而已该属性的value值是随意的。

               

          3、SpringController交给spring容器管理

                <bean name="/springController" class="controller.SpringController">

                         <property name="methodNameResolver" ref="parameNameResolver"/>

                </bean>

                这里,name是为访问该类是设置访问路径。而且为SpringController注入一个paramName  Bean,这个bean是继承了

                MutliActionController后自带的属性 。它映射向多请求的bean

 

         4、在SpringController类中添加方法

                publicclass SpringController extends MultiActionController{

               

                        public ModelAndView add(HttpServletRequest request,HttpServletResponse response){

                                ModelAndView mv = new ModelAndView();

                                mv.addObject("message","this is a add method");

                                mv.setViewName("/helloWorld");

                                return mv;

                         }

                        

                         public ModelAndView delete(HttpServletRequest request,HttpServletResponse response){

                                 ModelAndView mv = new ModelAndView();

                                 mv.addObject("message","this is a delete method");

                                 mv.setViewName("/helloWorld");

                                 return mv;

                         }

                }

                这方法很简单,编写structAction方法差不多,但注意的是方法中要有HttpServlerRequest,和HttpServlerResponse(这个方法也可以

                没有)参数。

               

          5、测试:

                调用add方法:http://localhost:8080/springMVC/springController?userCotroller=add

                调用delete方法:http://localhost:8080/springMVC/springController?userCotroller=delete

 

                PSspring_mvc.xml

                

二、用注解实现

        1、添加spring_mvc.xml命名空间contextmvc

              

              这里我用的是spring3.2,但配置mvc命名空间的时间,只能用mvc-3.1.xsd(不知道原因)

             

        2、在配置文件中配置spring的扫描机制

              <context:component-scan base-package="controller"/>

              base-package表示要扫描哪些包,如果有多个包的话,用逗号分开。配置完扫描机制后,在SpringController类中添加@Component

              添加这个注解后,spring扫描机制会把该类交给spring容器管理。同时我们可以删去之前我们为该类配置的bean

 

        3、开启spring mvc的注解

              <mvc:annotation-driven/>

              开启这个注解后,我们就可以删掉之前配置的多个请求的bean。开启后,spring mvc自动我们实现多配置功能。

             

        4、修改SpringController

              @Component

              @RequestMapping(value="/springController")

              publicclass SpringController extends MultiActionController{

   

                  @RequestMapping(value="/add", method=RequestMethod.POST)

                  public ModelAndView add(){

                       ModelAndView mv = new ModelAndView();

                       mv.addObject("message","this is a add method");

                       mv.setViewName("/helloWorld");

                       return mv;

                  }

                  @RequestMapping(value="/delete")

                  public ModelAndView delete(){

                       ModelAndView mv = new ModelAndView();

                       mv.addObject("message","this is a delete method");

                       mv.setViewName("/helloWorld");

                       return mv;

                  }

             }

             这里用@RequesrMapping的注解来标示要访问的路径,其属性value表示访问路径,method表示这个方法只能有哪些提交方法可以访

             问,默认什么提交方法都可以访问。在这些方法了,可以没有HttpServlerRequest,和HttpServlerResponse参数。但有时需要用到这两

             个参数,所以我认为还是加进去两个参数比较好。比如说,我们不用ModelAndView作为参数返回(直接返回字符串作为逻辑视图

             return/helloWorld”;)。那么我们要返回从业务处理后的数据,就必须用到HttpServlerRequest传参。因为我认为以ModelAndView

             为返回值比较方便,所以就直接用ModelAndView返回

 

       5、测试:

             调用add方法:http://localhost:8080/springMVC/springController/add

             调用delete方法:http://localhost:8080/springMVC/springController/delete

             此时可以看到,我们的访问方式与上面例子不一样,这里是不带参数的。

             PSspring_mvc.xml

                

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值