spring mvc基础篇(四):后端控制器之MultiActionController

    xiaoxiao2021-03-25  92

    4.1简介

    Struts2里面有种多方法action,能够让我们在一个类里面处理多个请求,经过我们的配置,能让每个请求对应一个方法。这样,系统就减少了很多类,系统性能也会得到提升。Spring的MultiActionController也是这样的作用。

     

    4.2 开发环境

    开发工具:myeclipse8.6.1

    数据库:mysql5.5.23

    服务器: tomcat6.0.37

    框架版本: spring3.2.2

     

    4.3 案例开发步骤

    步骤一:在myeclipse8.6中新建web工程springmvc04,拷贝如下包到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>

    <div id="show">

        <h2 align="center">用户注册</h2>

        <form action="register.do" method="post">

           <table border="1px"cellspacing="0">

           <tr><td>请输入用户名:</td><td><input type="text"

    name="userName"/></td></tr>

               <tr><td>请输入密码:</td><td><input type="password"

    name="pwd1"/></td></tr>

               <tr><td>请再次输入密码:</td><td><input type="password"

    name="pwd2"/></td></tr>

               <tr><td>请输入真实姓名:</td><td><input type="text"

    name="realName"/></td></tr>

               <tr><td>请输入电子邮箱:</td><td><input type="text"

    name="email"/></td></tr>

               <tr><td>请输入联系电话:</td><td><input type="text"

    name="phone"/></td></tr>

               <tr><td colspan="2"><input type="submit" value="提交"/> 

                   <input type="reset" value="重置"/></td></tr>

           </table>

        </form>

    </div>

    </body>

    =====================================================================

     

    步骤四:建立Login.jsp,如下所示:

    =========================Login.jsp===================================

    <body>

    <div id="show">

    <form action="login.do"method="post">

        <table border="1px" cellpadding="0">

           <tr><td>请输入用户名:</td>

    <td><input type="text" name="userName"/></td></tr>

           <tr><td>请输入密码:</td>

    <td><input type="password" name="passWord"/></td></tr>

           <tr><td colspan="2">

    <input type="submit" value="提交" /></td></tr>

        </table>

    </form>

    </div>

    </body>

    =====================================================================

     

    步骤五:建立Delete.jsp,如下所示:

    =========================Delete.jsp==================================

    <body>

    <div id="show">

    <form action="delete.do"method="post">

        <table border="1px" cellpadding="0">

           <tr><td>请输入用户名:</td><td>

    <input type="text" name="userName"/></td></tr>

           <tr><td colspan="2">

    <input type="submit" value="提交" /></td></tr>

        </table>

    </form>

    </div>

    </body>

    =====================================================================

     

    步骤六:建立实体类UserEntity.java,请自行建立,如图所示:

     

    步骤七:在com.wx.controls包下面编写控制器UserControl.java,如下:

    ===================== UserControl.java===========================

    public class UserControl extends MultiActionController{

        public ModelAndView register(HttpServletRequestrequest,HttpServletResponse response){

           UserEntity theUser=new UserEntity();

           theUser.setUserName(request.getParameter("userName"));

           theUser.setPwd1(request.getParameter("pwd1"));

           theUser.setUserName(request.getParameter("realName"));

           theUser.setEmail(request.getParameter("email"));

           ModelAndView mov=new ModelAndView("index");

           mov.addObject("theUser", theUser);

           return mov;

        }

       

        public ModelAndView login(HttpServletRequestrequest,HttpServletResponse response){

           String userName=request.getParameter("userName");

           String passWord=request.getParameter("pwd1");

           ModelAndView mov=new ModelAndView("index");

           mov.addObject("userName", userName);

           mov.addObject("passWord", passWord);

           return mov;

        }

       

        /*返回字符串的形式*/

        public String delete(HttpServletRequestrequest,HttpServletResponse response){

           String userName=request.getParameter("userName");

           System.out.println("来此了");

           request.setAttribute("delUser", userName);

           return "index";

        }

    }

    ==================================================================

    知识讲解:在UserControl中分别定义了三个方法:register() , login() , delete(),是为了对应三个请求—->【/register.do , /login.do , /delete.do】。这三个方法不处理具体业务逻辑,仅仅为了演示绑定三个请求。特别注意第三个方法,视图名不是封装到ModelAndView中,而是直接以字符串的形式返回,特别适合从jsp、servlet开发或从struts2开发转到springmvc开发的童鞋们。

     

    步骤八:在核心配置文件springmvc-servlet.xml里面完善如下配置

    ======================== springmvc-servlet.xml=======================

    <beans>   

        <bean id="resourceView" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

           <property name="prefix"value="/"></property>

           <property name="suffix" value=".jsp"></property>

        </bean>

        <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

             <property name="mappings">

                <props>

                    <prop key="/register.do">userControl</prop>

                    <prop key="/login.do">userControl</prop>

                    <prop key="/delete.do">userControl</prop>

                </props>

             </property>

        </bean>

        <bean id="userControl" class="com.wx.controls.UserControl">

            <property name="methodNameResolver"  ref="springMethodNameResolver">

           </property>

        </bean>   

        <bean id="springMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">

           <property name="mappings">

               <props>

                  <prop key="/register.do">register</prop>

                  <prop key="/login.do">login</prop>

                  <prop key="/delete.do">delete</prop>

               </props>

           </property>

        </bean>

    </beans>

    ====================================================================

    知识讲解:springMethodNameResolver负责从请求中解析出需要调用的方法名称。Spring本身已经提供了一系列MethodNameResolver的实现,当然也可以编写自己的实现。在这里我们使用了Pro方式来解析,具体表现如下:

    <prop key="/register.do">register</prop>当请求为/register.do时,调用register方法

    <prop key="/login.do">login</prop>当请求为/login.do时,调用register方法

    <prop key="/delete.do">delete</prop>当请求为/delete.do时,调用register方法。

    然后通过把springMethodNameResolver解析器注入给UserControl的methodNameResolver(注意划横线处),这样配置后才完成了一个真正的具有请求转发能力的MultiActionController控制器对象——UserControl。强调:此步骤实质完成了一个

    工作:就是为UserControl控制器配置一个方法解析器。【<bean id="simpleUrlMapping"

    表示配置一个映射处理器,把下面三个请求都交给【id=userControl】的bean去处理。

        <prop key="/register.do">userControl</prop>

        <prop key="/login.do">userControl</prop>

        <prop key="/delete.do">userControl</prop>

     

    步骤九:在webroot目录下建立index.jsp

    ================================index.jsp=======================

    <body>

    <h2>用户注册:${requestScope.theUser.userName}</h2>

    <h2>用户登录:${requestScope.userName}</h2>

    <h2>用户删除:${requestScope.delUser}</h2>

    </body>

    ==================================================================

    步骤十: 启动tomcat,发布项目,在地址栏分别输入 http://localhost:8080/springmvc04/Register.jsp

    http://localhost:8080/springmvc04/Login.jsp

    http://localhost:8080/springmvc04/Delete.jsp

    进行测试。

     

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

    最新回复(0)