Spring MVC 实现一个控制器写多个方法
2013-04-26 18:39
381 查看
Spring MVC 控制器
在之前的开发与看框架的时候,误认为一个动作一定要一个控制器来与之对应,这使得我对Spring MVC 没有很好的印象,用起来就感觉和以前的最原始的servlet 开发是一个模子,像我这么个偷懒的人,怎么用这兴趣去每个都要相应的写与开发呢?于是产生了以下疑问。Spring这么好的一个框架为何不能支持像struts2.x一样,通过一个配置文件,一个类,可以写很多个不同的方法,访问的时候以带参数的形式来区分到底调用哪一个业务方法来处理我们相关的请求。在经过半天的查找资料以及同事的提醒,总算知道了Spring MVC中一个类写多个方法,完完全全的实现了像struts2.x 那么方便而又犀利的方法。主要是通过以下两种方式可以实现。与struts2.x有过而无不及啊。
1.还是继承老思想,实现控制器方法。在这里,我们只要继承了SpringMVCMultiActionController 便可以在里面写我们想要的方法了,写好之后,在配置文件里面需要让他依赖于这个ParameterMethodNameResolver 。
<bean id="paramMethodResolver"class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName"><value>method</value></property>
</bean>
依赖这个bean后,在写控制器的时候,让其继承MultiActionController这个类。我们就可以在访问的时候以xxx.do?method=getxxx 就可以访问了。
2.运用Spring 2.5以后新起的一种方式,注解开发。通过注解的方式,也可以实现相同地功能。注解开法主要是运用AnnotationMethodHandlerAdapter类来进行映射。主要的映射方式是通过配置文件xxx-servlet.xml中<!--:启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.
AnnotationMethodHandlerAdapter"/>
在配置文件中注入这个类以后,就完成了注解的配置,当一个请求发起的时候,这个类就会根据地址来扫描,是否存在控制器中有相应的注解。通过注解来进行各种转发和操作。
配置好了配置文件后,就要开始写控制器,这里的控制器不需要继承或实现任何类或接口。换句话说,在这个类里面不用做其它的任何事,这个类是一个和其它普通类一样的的类。我们要做的就是在这个类和方法前面加上注解。即可以完成映射。
主要的注解有:@Controller这个注解是最核心的注解,在类前面加上这个注解后,它便成了一个控制器。SpringMVC容器就会监视着这个类。第二个核心注解就是@RequestMapping,加上这个注解后,表示这个方法会经过转发。可以直接通过地址栏进行访问。
几种常见的控制器
Spring MVC的核心就是控制器,而在我们写控制器的时候,Spring MVC有那么多的控制器,我们选用哪一个才是最佳选择呢?
Spring MVC 的控制器主要都直接或间接的实现了Controller 接口。主要有以下几类控制器。
1.简单控制器(AbstractController),适合于无参数或者少参数的访问,如我们要一子显示所有留言,显示所有帖子等。在使用该控制器的时候,一般会重写handleRequestInternal方法。
2.命令控制器(AbstractCommandController),自我感觉可以用简单控制器替换,适合于更少参数的传递访问。如:显示我喜欢的帖子。。。。。
3.表单控制器(SimpleFormController)这个控制器是最通用的一个控制器,主要用于对表单的操作和控制。例如:增加,修改帖子等。
4.向导控制器(AbstractWizardFormController)适用于分步注册,分步保存数据的情况下。该控制器里面有很多方法供选择。
5.多动作控制器(multiActionController),该控制器允许在同一个类中写多个不同的方法,以参数的来区别访问哪一个方法。在这个控制器类中可以定义自己的方法。主要定义方式有public (ModeAndView|Map|String |void)actionName(HttpServletRequest,HttpServletResponse,response).
相关文章推荐
- Spring MVC实现一个控制器写多个方法(注解方式、继承方式)
- 用JS实现一个表单多个按钮的方法,两个onclick事件处理
- Python实现对一个函数应用多个装饰器的方法示例
- SpringMVC实现一个controller写多个方法
- Spring MVC配置双数据源实现一个java项目同时连接两个数据库的方法
- Spring mvc 在一个定时器类里实现多个定时器任务
- js实现同一个页面多个渐变效果的方法
- 一个UIViewController控制器中,实现多个UITableView的方法
- 根据参数动态加载bean(一个接口多个实现的调用方法)
- SpringMVC实现一个controller写多个方法
- SpringMVC实现一个controller写多个方法
- 加载多个实现类实现了同一个接口方法
- 在一个ajax extender 工程中实现多个 ajax extender 控件的方法
- YIi2.0 中有没有一个方法是跟TP框架里的setInc和setDec相同的功能,实现 加 减
- orange's一个操作系统的实现实验遇到的问题及处理方法
- 定义一个类DOG,包含age,weight等属性,以及对这些属性操作的方法,实现并测试这个类。
- struts2.1.*中再实现了一个servlet的方法
- 2106某某面试编程题:必须用Java语言实现,给出一个由元素数范围从0到N-1个唯一正整数组成的列表。设计一种方法,将该列表所有元素的元素值和其相应的索引值互换
- jQuery封装一个方法实现监控页面所有ajax请求
- 一个很苯的方法实现TreeView节点的动态添加