SpringMVC进阶(三)——控制器
2015-09-23 15:34
357 查看
在Spring MVC中,有几种控制器,下面我们来一一介绍一下。
1.ParameterizableViewController(参数控制器)
示例:在springmvc-servlet.xml中配置映射处理器和参数控制器
执行结果如下:
2.AbstractCommandController(命令控制器)
示例:在springmvc-servlet.xml中配置映射处理器和参数控制器
新建命令控制器:
访问结果如下:
控制台打印信息:
3.FormController(表单控制器)
示例:在springmvc-servlet.xml中配置映射处理器和参数控制器
新建表单控制器:
控制台打印结果:
总结:
Spring MVC为我们提供了很好的参数封装,而struts2通过属性驱动或者模型驱动或自定义来获得参数的封装,相知之下,个人感觉SpringMVC封装的更加完善一些,在控制器类中不用提供get/set方法,只要和Model的属性名称对应即可。
1.ParameterizableViewController(参数控制器)
示例:在springmvc-servlet.xml中配置映射处理器和参数控制器
<!-- 简单URL映射处理器,映射处理器之间相互独立不受影响 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/login.do">toLogin</prop> </props> </property> </bean> <!-- 如果使用参数控制器就不能用ControllerClassNameHandlerMapping类名映射处理器 --> <bean id="toLogin" class="org.springframework.web.servlet.mvc.ParameterizableViewController"> <!-- 配置你所要跳转到视图的名称 --> <property name="viewName" value="login"></property> </bean>
执行结果如下:
2.AbstractCommandController(命令控制器)
示例:在springmvc-servlet.xml中配置映射处理器和参数控制器
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/command.do">comm</prop> </props> </property> </bean> <!-- 命令控制器的Controller --> <bean id="comm" class="com.tgb.controller.CommController"> <!-- 指定接收参数的类型 --> <property name="commandClass" value="com.tgb.model.Person"></property> </bean>
新建命令控制器:
public class CommController extends AbstractCommandController{ @Override protected ModelAndView handle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, BindException arg3) throws Exception { //将封装的参数转化为person对象 Person p = (Person) arg2; System.out.println(p); Map<String, Object> map = new HashMap<String, Object>(); map.put("person", p); return new ModelAndView("index",map); } //日期转换 @Override protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); }
访问结果如下:
控制台打印信息:
3.FormController(表单控制器)
示例:在springmvc-servlet.xml中配置映射处理器和参数控制器
<bean id="form" class="com.rl.controller.FormController"> <!-- 指定接收参数的类型 --> <property name="commandClass" value="com.rl.model.Person"></property> <!-- 表单页面 --> <property name="formView" value="form"></property> <!-- 成功页面 --> <property name="successView" value="success"></property> </bean>
新建表单控制器:
public class FormController extends SimpleFormController{ @Override protected void doSubmitAction(Object command) throws Exception { Person p = (Person) command; System.out.println(p); super.doSubmitAction(command); } //转化日期格式 @Override protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); } }
控制台打印结果:
总结:
Spring MVC为我们提供了很好的参数封装,而struts2通过属性驱动或者模型驱动或自定义来获得参数的封装,相知之下,个人感觉SpringMVC封装的更加完善一些,在控制器类中不用提供get/set方法,只要和Model的属性名称对应即可。
相关文章推荐
- java复习
- count(*)不能和limit一起使用
- 区分Java的方法覆盖与变量覆盖
- 关于Eclipse中“ctrl+鼠标左击类”快捷键不能查看该类API源代码的解决方法
- spring mvc freemaker form表单提交
- Java switch开关语句的break,default作用
- java 中return语句的用法总结
- 关于大数(阶乘的位数)三种方法
- java中的序列化
- 浅谈Java中的n种随机数产生办法
- Struts2对象栈和值栈的操作
- test5.19
- 有效选择七个关于Java的JSON开源类库
- java中return语句的用法总结
- [转]将java的console日志写入文件
- java log4j日志 写入数据库
- struts2开发-validate-表单验证案例2
- Java中getResourceAsStream的用法
- 使用Struts的Token机制解决表单的重复提交
- java学习笔记:使用zip api进行文件解压缩以及不解压直接读取指定文件内容