3.1简介
学过struts2的同学都知道,有个知识点叫模型驱动action,就是当我们表单参数特别多的时候,用传统的方式就要在action中定义很多表单参数成员,然后写很多set方法。为了解决这样的麻烦,我们就有个模型驱动action,可以让表单参数直接和实体类的对象进行绑定,就省去了很多麻烦,那么我们这里SimpleFormController也是这样的作用。
3.2 开发环境
开发工具:myeclipse8.6.1
数据库:mysql5.5.23
服务器: tomcat6.0.37
框架版本: spring3.2.2
3.2 案例开发步骤(注册)
步骤一:在myeclipse8.6中新建web工程springmvc03,拷贝如下包到lib目下:
步骤二:编写web.xml 配置文件,代码如下:
=================================web.xml========================
<?xmlversion="1.0" encoding="UTF-8"?>
<web-appversion="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 配置spring的字符集过滤 -->
<filter>
<filter-name>encode</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encode</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
================================================================
步骤三:建立Register.jsp,如下所示:
=========================Register.jsp==============================
<body>
<divid="show">
<h2align="center">用户注册</h2>
<formaction="register.do"method="post">
<tableborder="1px"cellspacing="0">
<tr><td>请输入用户名:</td><td><inputtype="text"
name="userName"/></td></tr>
<tr><td>请输入密码:</td><td><inputtype="password"
name="pwd1"/></td></tr>
<tr><td>请再次输入密码:</td><td><inputtype="password"
name="pwd2"/></td></tr>
<tr><td>请输入真实姓名:</td><td><inputtype="text"
name="realName"/></td></tr>
<tr><td>请输入电子邮箱:</td><td><inputtype="text"
name="email"/></td></tr>
<tr><td>请输入联系电话:</td><td><inputtype="text"
name="phone"/></td></tr>
<tr><tdcolspan="2"><inputtype="submit"value="提交"/>
<inputtype="reset"value="重置"/></td></tr>
</table>
</form>
</div>
</body>
=====================================================================
步骤四:建立实体类UserEntity.java,请自行建立,如图所示:
注意:实体类的属性名称必须和表单参数的name值保持一致,否则无法控制器中无法绑定。
步骤五:在com.wx.controls包下面编写控制器RegControl.java,如下:
==========================LoginControl.java==========================
public class RegControlextendsSimpleFormController{
public RegControl() {
this.setCommandClass(UserEntity.class);
}
@Override
protected ModelAndView processFormSubmission(
HttpServletRequestrequest,HttpServletResponse response,
Object fromBean, BindException errors) throws Exception {
UserEntity theUser=(UserEntity)fromBean;
ModelAndView mav=new ModelAndView("index");
mav.addObject("msg", "模型驱动controler");
mav.addObject("theUser", theUser);
return mav;
}
}
==================================================================
知识讲解:在RegControl构造方法中有如下一句代码:setCommandClass(UserEntity.class); 这句代码就指明了此控制器绑定UserEntity类来和表单进行匹配,匹配成功,控制器会根据表单值生成实体类的对象,并传递给Object fromBean参数,注意代码中画横线处。还有有同学会问为啥SimpleFormController删除线,这是因为这个类在新版本中已经不推荐使用了(仍然可用),新版本中建议用注解代替。
步骤六:在核心配置文件springmvc-servlet.xml里面完善如下配置
======================== springmvc-servlet.xml=======================
<beans>
<beanid="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<propertyname="mappings">
<props>
<propkey="/register.do">regControl</prop>
</props>
</property>
</bean>
<beanid="resourceView" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<propertyname="prefix"value="/"></property>
<propertyname="suffix"value=".jsp"></property>
</bean>
<beanid="regControl" class="com.wx.controls.RegControl"></bean>
</beans>
====================================================================
步骤七:在webroot目录下建立index.jsp
================================index.jsp=======================
<body>
<h2>${requestScope.msg}</h2>
<h2>用户名:${requestScope.theUser.userName }</h2>
</body>
==================================================================
步骤八: 启动tomcat,发布项目,在地址栏输入 http://localhost:8080/springmvc03/Register.jsp 进行测试,得到结果: