spring mvc基础篇(四):后端控制器之MultiActionController
2017-03-09 22:52
381 查看
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
进行测试。
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
进行测试。
相关文章推荐
- Spring MVC MultiActionController---多动作控制器
- springMVC--多动作控制器: MultiActionController
- SpringMVC学习之控制器—MultiActionController
- SpringMVC的控制器MultiActionController
- SpringMVC—MultiActionController控制器
- 在同一控制器类中处理多个请求的MultiActionController
- 在同一控制器类中处理多个请求的MultiActionController
- SpringMVC源码(七)Controller控制器5-MultiActionController
- Spring MVC-控制器(Controller)-多动作控制器(Multi Action Controller)示例(转载实践)
- SPRING MVC 中的 MULTIACTIONCONTROLLER 用法详解 (转载)
- spring MultiActionController 简单配置
- spring mvc MultiActionController !!!
- Spring MVC 中的 MultiActionController 用法详解 (转载)
- MultiActionController对表单的验证
- “/”应用程序中的服务器错误。 找到了多个与名为“Home”的控制器匹配的类型。如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间来搜索匹配此请求的
- 详解Asp.Net MVC――控制器与动作(Controller And Action)
- SPRING MVC 中的 MULTIACTIONCONTROLLER 用法详解 (转载)
- MultiActionController
- MultiActionController绑定表单数据的两种实现方式
- Spring MultiActionController 使用 Command 将Form中的数据绑定