一、 实现一个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;
}
}
struct的Action方法差不多,但注意的是方法中要有HttpServlerRequest,和HttpServlerResponse(这个方法也可以
没有)参数。
5、测试:
add方法:http://localhost:8080/springMVC/springController?userCotroller=add
调用delete方法:http://localhost:8080/springMVC/springController?userCotroller=delete
PS:spring_mvc.xml
二、用注解实现
1、添加spring_mvc.xml命名空间context、mvc
这里我用的是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
此时可以看到,我们的访问方式与上面例子不一样,这里是不带参数的。
PS:spring_mvc.xml