2019独角兽企业重金招聘Python工程师标准>>>

在前面的介绍中,我们了解了struts的action是实现execute()方法来完成业务逻辑的,可是,在实际开发中,让一个业务逻辑对应一个Acton类是不现实的,通常我们都是在一个action中定义多个方法的。

下面了解一下strtus1和struts2在一个action中处理多个方法的实现。

struts1:

struts1中一个action处理多个方法,通过让action继承DispachAction来实现

1. action继承DispachAction,并实现多个方法的业务逻

  1. public class LogonAction extends DispatchAction {
  2. public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
  3. //业务逻辑
  4. return mapping.findForward("success");
  5. }
  6. public ActionForward logon(ActionMapping mapping, ActionForm form,
  7. HttpServletRequest request, HttpServletResponse response)throws Exception {
  8. return mapping.findForward("success");
  9. }
  10. public ActionForward register(ActionMapping mapping, ActionForm form,
  11. HttpServletRequest request, HttpServletResponse response)throws Exception {
  12. return mapping.findForward("success");
  13. }

2. strtus-config.xml配置文件中,每个action标签后面,加上parameter=""这个属性

[html] view plain copy

  1. <action path="/user" type="com.tgb.struts1.LogonAction" name="logonForm"  parameter="method">
  2. <forward name="success" path="/success.jsp"></forward>
  3. <forward name="error" path="/error.jsp"></forward>
  4. </action>

3. 页面提交时确定执行action中的哪个方法,如果不指定,则执行action中的unspecified()方法.

[html] view plain copy

  1. <form action="user" mehtod="post">
  2. <input type="hidden" name="method" value="logon">

struts2:

action中定义多个方法:

[java] view plain copy

  1. public String logon(){
  2. eturn"success";
  3. }
  4. publicString register(){
  5. return"success";
  6. }

有三种方式可以将页面提交和action的方法对应。

(一)动态方法调用,配置文件不变,一个action类对应配置文件中一个action标签,表单提交的action不直接等于某个action的name,而是以action的name!action的方法名来提交。

1. 配置文件

[html] view plain copy

  1. <action name="user" class="com.tgb.struts2.action.LogonAction" >
  2. <result name="success">/success.jsp</result>
  3. <result name="error">/error.jsp</result>
  4. </action>

2. 表单提交

[html] view plain copy

  1. 登录:<form id="form" action="user!logon" method="post">
  2. 注册:<form id="form" action="user!register" method="post">

(二)修改配置文件,将同一个action中的每个方法都用一个action标签映射
       1. 配置文件

[html] view plain copy

  1. <action name="logon" class="com.tgb.struts2.action.LogonAction" >
  2. <result name="success">/success.jsp</result>
  3. <result name="error">/error.jsp</result>
  4. </action>
  5. <action name="register" class="com.tgb.struts2.action.LogonAction" >
  6. <result name="success">/success.jsp</result>
  7. <result name="error">/error.jsp</result>
  8. </action>

2. 表单提交

[html] view plain copy

  1. 登录:<form id="form" action="logon" method="post">
  2. 注册:<form id="form" action="register" method="post">

(三)使用通配符映射方式

1. 配置文件

[html] view plain copy

  1. <action name="*User_*" class="com.tgb.struts2.action.LogonAction" method="{1}" >
  2. <result name="success">/{2}.jsp</result>
  3. <result name="error">/error.jsp</result>
  4. lt;/action>

2. 表单提交

[html] view plain copy

  1. <form id="form" action="logonUser_index" method="post"><!-- 执行action中的logon方法,执行成功后返回index首页面 -->
  2. nbsp;       <form id="form" action="registerUser_logon" method="post"><!--执行action中的register方法,执行成功后返回logon登录页面  -->

这三种方式中,使用!会暴露所使用的框架,第二种方式会使配置文件变得复杂冗余,第三种方式中和了前两种方式的缺点,建议使用通配符映射方式。

转载于:https://my.oschina.net/chenliyong/blog/1036500

struts一个action处理多个方法相关推荐

  1. Struts2从一个action转到另一个action的两种方法

    在Struts2中,Action处理完用户请求后,将会返回一个字符串对象,这个字符串对象就是一个逻辑视图名.Struts 2通过配置逻辑视图名和物理视图之间的映射关系,一旦系统收到Action返回的某 ...

  2. 关于将struts2框架下,使自定义过滤器对部分的action(一个action或多个action)请求忽略的方法

    关于将struts2框架下,使自定义过滤器对部分的action请求忽略的方法 首先需要了解一个方法 request.getServletPath() 他将返回一个当前请求的路径的醉详细名称 例如对路径 ...

  3. 一个action类中写多个方法需要继承MappingDispatchAction

    原本action里只有一个默认execute方法,今天我在action里增加了方法后发现页面卡死无法跳转了,原来如果写多个方法要继承DispatchAction类. 一个action中有一个execu ...

  4. struts 的action 线性安全问题

    为什么struts2的action是线程安全的,struts1的action不是线程安全的?  先对struts1和struts2的原理做一个简单的讲解 对于struts1 ,当第一次**.do的请求 ...

  5. Struts2中Action的动态调用方法

    在Struts2中,Action执行的时候并不一定要执行execute,我们可以指定Action执行哪个方法,下面分别介绍三种方法来指定Action执行哪个方法: 1.第一种方法,通过Action里的 ...

  6. struts中action名称反复导致的神秘事件

    近期由于项目需求变更.须要本人对当中的某个业务功能进行改动.本人依照前台页面找action,依据action找代码的逻辑进行了改动(公司项目是ssh框架,struts配置全部是通过注解的方式进行.配置 ...

  7. Struts2学习(二):第一个Action

    前面我们已经把Struts2的运行环境搭建起来了,下面我们开始创建我们的第一个Action,还是按照Max的教程来,我新创建了如下几个文件: sayHello.jsp: <%@ page lan ...

  8. action中的动态方法调用

    action中的动态方法调用有两种形似 一.不指定method方法 <%@page contentType="text/html" pageEncoding="UT ...

  9. JAVA框架——struts(一)struts快速入门,struts访问流程,struts配置文件详解,动态方法调用

    一. Struts2框架概述 是一种基于MVC模式的轻量级web框架.本质是一个Servlet.作为控制器建立模型与视图的数据交互.Struts2以WebWord为核心,采用拦截器的机制处理客户的请求 ...

最新文章

  1. 将 SqlDataReader 类用于快速只进数据游标
  2. 零基础快速学习Java技术的方法整理
  3. 目标检测比赛中的tricks集锦
  4. apache solr velocity 注入远程命令执行漏洞 (cve-2019-17558)
  5. 微软SQL Server数据库的两种请求游标
  6. vue项目中对axios的全局封装
  7. C语言 十进制和十六进制相互转换 - C语言零基础入门教程
  8. python内置json模块_python的常用内置模块之序列化模块json
  9. Shell账户管理,用户和组管理
  10. 图像按钮ImageButton
  11. GBase 8atmp 目录权限改变导致加载失败
  12. Vue框架的初识入门
  13. 保研之路——北航计算机学院直硕夏令营
  14. linux一分钟关机命令,Linux关机命令集合
  15. Latex CJK,tex使用中文
  16. mysql中的包含与被包含
  17. 数据驱动的网络入侵检测:最新动向与研究趋势
  18. 64位应用程序的开发
  19. 局域网限制网速软件_Oka WiFi测网速 for Mac(网络测速软件)
  20. 年度巅峰对决 GOW携虚幻3决战Crysis

热门文章

  1. gitee创建ssh公钥
  2. pe怎么删除linux文件夹,PE环境下,面对无法删除的文件夹怎么办?
  3. linux删除win分区工具,Win 10 和 Linux 双系统,从硬盘删除Linux分区,Win 10引导修复...
  4. 简单html源码_HTML 文本格式化
  5. layer checkbox
  6. mysql事务保证幂等_事务与一致性:刚性or柔性
  7. 重庆中职高考计算机专业试题,职业高中高考计算机专业试卷3答案
  8. mysql optimize 用法_mysql中OPTIMIZE TABLE的作用
  9. python服务器运维书_python自动化运维书
  10. c语言 链表_小陈的C语言笔记---链表(详细讲解基本操作和概念)