struts一个action处理多个方法
2019独角兽企业重金招聘Python工程师标准>>>
在前面的介绍中,我们了解了struts的action是实现execute()方法来完成业务逻辑的,可是,在实际开发中,让一个业务逻辑对应一个Acton类是不现实的,通常我们都是在一个action中定义多个方法的。
下面了解一下strtus1和struts2在一个action中处理多个方法的实现。
struts1:
struts1中一个action处理多个方法,通过让action继承DispachAction来实现
1. action继承DispachAction,并实现多个方法的业务逻
- public class LogonAction extends DispatchAction {
- public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
- //业务逻辑
- return mapping.findForward("success");
- }
- public ActionForward logon(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)throws Exception {
- return mapping.findForward("success");
- }
- public ActionForward register(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)throws Exception {
- return mapping.findForward("success");
- }
2. strtus-config.xml配置文件中,每个action标签后面,加上parameter=""这个属性
[html] view plain copy
- <action path="/user" type="com.tgb.struts1.LogonAction" name="logonForm" parameter="method">
- <forward name="success" path="/success.jsp"></forward>
- <forward name="error" path="/error.jsp"></forward>
- </action>
3. 页面提交时确定执行action中的哪个方法,如果不指定,则执行action中的unspecified()方法.
[html] view plain copy
- <form action="user" mehtod="post">
- <input type="hidden" name="method" value="logon">
struts2:
action中定义多个方法:
[java] view plain copy
- public String logon(){
- eturn"success";
- }
- publicString register(){
- return"success";
- }
有三种方式可以将页面提交和action的方法对应。
(一)动态方法调用,配置文件不变,一个action类对应配置文件中一个action标签,表单提交的action不直接等于某个action的name,而是以action的name!action的方法名来提交。
1. 配置文件
[html] view plain copy
- <action name="user" class="com.tgb.struts2.action.LogonAction" >
- <result name="success">/success.jsp</result>
- <result name="error">/error.jsp</result>
- </action>
2. 表单提交
[html] view plain copy
- 登录:<form id="form" action="user!logon" method="post">
- 注册:<form id="form" action="user!register" method="post">
(二)修改配置文件,将同一个action中的每个方法都用一个action标签映射
1. 配置文件
[html] view plain copy
- <action name="logon" class="com.tgb.struts2.action.LogonAction" >
- <result name="success">/success.jsp</result>
- <result name="error">/error.jsp</result>
- </action>
- <action name="register" class="com.tgb.struts2.action.LogonAction" >
- <result name="success">/success.jsp</result>
- <result name="error">/error.jsp</result>
- </action>
2. 表单提交
[html] view plain copy
- 登录:<form id="form" action="logon" method="post">
- 注册:<form id="form" action="register" method="post">
(三)使用通配符映射方式
1. 配置文件
[html] view plain copy
- <action name="*User_*" class="com.tgb.struts2.action.LogonAction" method="{1}" >
- <result name="success">/{2}.jsp</result>
- <result name="error">/error.jsp</result>
- lt;/action>
2. 表单提交
[html] view plain copy
- <form id="form" action="logonUser_index" method="post"><!-- 执行action中的logon方法,执行成功后返回index首页面 -->
- nbsp; <form id="form" action="registerUser_logon" method="post"><!--执行action中的register方法,执行成功后返回logon登录页面 -->
这三种方式中,使用!会暴露所使用的框架,第二种方式会使配置文件变得复杂冗余,第三种方式中和了前两种方式的缺点,建议使用通配符映射方式。
转载于:https://my.oschina.net/chenliyong/blog/1036500
struts一个action处理多个方法相关推荐
- Struts2从一个action转到另一个action的两种方法
在Struts2中,Action处理完用户请求后,将会返回一个字符串对象,这个字符串对象就是一个逻辑视图名.Struts 2通过配置逻辑视图名和物理视图之间的映射关系,一旦系统收到Action返回的某 ...
- 关于将struts2框架下,使自定义过滤器对部分的action(一个action或多个action)请求忽略的方法
关于将struts2框架下,使自定义过滤器对部分的action请求忽略的方法 首先需要了解一个方法 request.getServletPath() 他将返回一个当前请求的路径的醉详细名称 例如对路径 ...
- 一个action类中写多个方法需要继承MappingDispatchAction
原本action里只有一个默认execute方法,今天我在action里增加了方法后发现页面卡死无法跳转了,原来如果写多个方法要继承DispatchAction类. 一个action中有一个execu ...
- struts 的action 线性安全问题
为什么struts2的action是线程安全的,struts1的action不是线程安全的? 先对struts1和struts2的原理做一个简单的讲解 对于struts1 ,当第一次**.do的请求 ...
- Struts2中Action的动态调用方法
在Struts2中,Action执行的时候并不一定要执行execute,我们可以指定Action执行哪个方法,下面分别介绍三种方法来指定Action执行哪个方法: 1.第一种方法,通过Action里的 ...
- struts中action名称反复导致的神秘事件
近期由于项目需求变更.须要本人对当中的某个业务功能进行改动.本人依照前台页面找action,依据action找代码的逻辑进行了改动(公司项目是ssh框架,struts配置全部是通过注解的方式进行.配置 ...
- Struts2学习(二):第一个Action
前面我们已经把Struts2的运行环境搭建起来了,下面我们开始创建我们的第一个Action,还是按照Max的教程来,我新创建了如下几个文件: sayHello.jsp: <%@ page lan ...
- action中的动态方法调用
action中的动态方法调用有两种形似 一.不指定method方法 <%@page contentType="text/html" pageEncoding="UT ...
- JAVA框架——struts(一)struts快速入门,struts访问流程,struts配置文件详解,动态方法调用
一. Struts2框架概述 是一种基于MVC模式的轻量级web框架.本质是一个Servlet.作为控制器建立模型与视图的数据交互.Struts2以WebWord为核心,采用拦截器的机制处理客户的请求 ...
最新文章
- 将 SqlDataReader 类用于快速只进数据游标
- 零基础快速学习Java技术的方法整理
- 目标检测比赛中的tricks集锦
- apache solr velocity 注入远程命令执行漏洞 (cve-2019-17558)
- 微软SQL Server数据库的两种请求游标
- vue项目中对axios的全局封装
- C语言 十进制和十六进制相互转换 - C语言零基础入门教程
- python内置json模块_python的常用内置模块之序列化模块json
- Shell账户管理,用户和组管理
- 图像按钮ImageButton
- GBase 8atmp 目录权限改变导致加载失败
- Vue框架的初识入门
- 保研之路——北航计算机学院直硕夏令营
- linux一分钟关机命令,Linux关机命令集合
- Latex CJK,tex使用中文
- mysql中的包含与被包含
- 数据驱动的网络入侵检测:最新动向与研究趋势
- 64位应用程序的开发
- 局域网限制网速软件_Oka WiFi测网速 for Mac(网络测速软件)
- 年度巅峰对决 GOW携虚幻3决战Crysis
热门文章
- gitee创建ssh公钥
- pe怎么删除linux文件夹,PE环境下,面对无法删除的文件夹怎么办?
- linux删除win分区工具,Win 10 和 Linux 双系统,从硬盘删除Linux分区,Win 10引导修复...
- 简单html源码_HTML 文本格式化
- layer checkbox
- mysql事务保证幂等_事务与一致性:刚性or柔性
- 重庆中职高考计算机专业试题,职业高中高考计算机专业试卷3答案
- mysql optimize 用法_mysql中OPTIMIZE TABLE的作用
- python服务器运维书_python自动化运维书
- c语言 链表_小陈的C语言笔记---链表(详细讲解基本操作和概念)