用后端控制器(上)
概述SpringMVC后端控制器:
为了方便开发人员快捷地建立适合特定应用的后端控制器,springMVC实现Controller接口,
自定义了许多特定控制器。这些控制器的层次关系如下:
-AbstractController
-AbstractUrlViewController
-UrlFilenameViewController
-BaseCommandController
-AbstractCommandController
-AbstractFormController
-AbstractWizardFormController
-SimpleFormController -------------简单的表单控制器
-CancellableFormController
-MultiActionController
-ParameterizableViewController
-ServletForwardingController
-ServletWrappingController
我们以比较有特色的两个控制为例:
下面先介绍第一个后端控制器--------SimpleFormController-------简单表单控制器
步骤一 建立一个后端控制器 RegControl.java 还有一个用户的pojo类:User.java
这个类要继承SimpleFormController 后端控制器
1 package com.test; 2 3 import javax.servlet.http.HttpServletRequest; 4 import javax.servlet.http.HttpServletResponse; 5 6 import org.springframework.validation.BindException; 7 import org.springframework.web.servlet.ModelAndView; 8 import org.springframework.web.servlet.mvc.SimpleFormController; 9 10 import com.pojo.User; 11 12 /** 13 * 后端控制器 14 * 15 * @author xzt 16 * 17 */ 18 19 20 @SuppressWarnings("deprecation") 21 public class RegControl extends SimpleFormController { 22 // 重写构造方法 23 public RegControl() { 24 25 super(); 26 // 指明是哪个pojo对象,form传过来的值会与之一一对应 27 setCommandClass(User.class); 28 // TODO Auto-generated constructor stub 29 } 30 /*概述此步要点: 31 * 32 * (1)继承 SimpleFormController 类 33 * (2)构造器中调用 setCommandClass 方法绑定定命令对象(这里为User类) 34 * (3)转换formbean为User类进行业务逻辑操作 35 */ 36 protected ModelAndView processFormSubmission(HttpServletRequest arg0, HttpServletResponse arg1, Object formbean, 37 BindException arg3) throws Exception { 38 User user = (User) formbean; 39 ModelAndView mav = new ModelAndView("reg"); 40 mav.addObject("message", "Hello World!"); 41 mav.addObject("user", user); 42 return mav; 43 } 44 45 protected ModelAndView showForm(HttpServletRequest arg0, HttpServletResponse arg1, BindException arg2) 46 throws Exception { 47 return null; 48 } 49 50 }
1 package com.pojo; 2 3 public class User { 4 5 private String username; 6 private String password; 7 public User() { 8 super(); 9 // TODO Auto-generated constructor stub 10 } 11 public String getUsername() { 12 return username; 13 } 14 public void setUsername(String username) { 15 this.username = username; 16 } 17 public String getPassword() { 18 return password; 19 } 20 public void setPassword(String password) { 21 this.password = password; 22 } 23 24 25 26 27 }
步骤二:配置web.xml(这个不需要变,和前面的一样)
步骤三 配置spmvc-servlet.xml文件(需要添加后端控制器类的配置)
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 3 <beans> 4 <!--在spring中一切资源都被视为bean --> 5 <bean id="simpleUrlHandlerMapping" 6 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 7 <property name="mappings"> 8 <props> 9 <prop key="/my.do">MyControl</prop> 10 <prop key="/login.do">LoginControl</prop> 11 <prop key="/reg.do">RegControl</prop> 12 </props> 13 </property> 14 </bean> 15 <!-- 在访问的jsp页面的前后加上前缀和后缀 --> 16 <bean id="viewResolver" 17 class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 18 <property name="prefix" value="/jsp/" /> 19 <property name="suffix" value=".jsp" /> 20 </bean> 21 22 <!-- 说明: my.do 的请求将给名为 MyControl 的 bean 进行处理。 --> 23 <bean id="MyControl" class="com.test.MyController"></bean> 24 <bean id="LoginControl" class="com.test.LoginControl"></bean> 25 <bean id="RegControl" class="com.test.RegControl"></bean> 26 27 28 29 </beans>
步骤四 根据配置文件完善相应页面
需要完善两个界面:login.jsp 和 reg.jsp
注意要使用post方式提交才会显示
1 只贴出部分代码 2 <body> 3 <form action="<%=basePath%>reg.do" method="post"> 4 用户名:<br> <input type="text" name="username"> <br> 5 密码:<br> <input type="password" name="password"> 6 <input type="submit"> <input type="reset"> 7 8 </form> 9 ${什么的干活} 10 11 </body>
1 </head> 2 3 <body> 4 5 <h1>显示登录信息</h1> 6 用户名 :${user.username} 7 <br> 8 密码:${user.password} 9 10 11 </body>
步骤五: 启动服务器
提交信息:自动跳转页面
中文会显示乱码,这个问题后续会添加过滤器解决