spring mvc基础篇(三):后端控制器之SimpleFormController

    xiaoxiao2021-03-25  79

    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 进行测试,得到结果:

     

     

    转载请注明原文地址: https://ju.6miu.com/read-17140.html

    最新回复(0)