Struts2 配置多个业务处理Action的通配符

1.Action

 代码如下 复制代码

package org.Rudiment.action;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport
{
    @Override
    public String execute() throws Exception
    {
        System.out.println("执行了execute");
        return SUCCESS;

    }
   
    public String test1() throws Exception
    {
        System.out.println("执行了test1");
        return SUCCESS;
    }
   
    public String test2() throws Exception
    {
        System.out.println("执行了test2");
        return SUCCESS;
    }   
}

2.struts.xml配置文件内容

 代码如下 复制代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
        <constant name="struts.custom.i18n.resource" value="mess" />
        <constant name="struts.i18n.encoding" value="GBK" />
       <package name="default" extends="struts-default">
               <action name="*Action" class="org.Rudiment.action.LoginAction" method="{1}">
                   <result name="input">/login.jsp</result>
                   <result name="error">/error.jsp</result>
                   <result name="success">/welcom.jsp</result>
               </action>
       </package>
</struts>   

3.前台提交表单举例

当前台表单form的action="Action" 则struts将业务交给execute()执行
当前台表单form的action="test1Action" 则struts将业务交给test1()执行
当前台表单form的action="test2Action" 则struts将业务交给test2()执行
当前台表单form的action="executeAction" 则struts将业务交给execute()执行

========================== 扩展内容 ===========================

1.依旧使用上面的Action,然后将配置文件改成这样

 代码如下 复制代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
        <constant name="struts.custom.i18n.resource" value="mess" />
        <constant name="struts.i18n.encoding" value="GBK" />
       <package name="default" extends="struts-default">
               <action name="*_*" class="org.Rudiment.action.{1}" method="{2}">
                   <result name="input">/login.jsp</result>
                   <result name="error">/error.jsp</result>
                   <result name="success">/welcom.jsp</result>
               </action>
       </package>
</struts>   

2.前台提交表单举例

当前台表单form的action="LoginAction_execute" 则struts将业务交给execute()执行
当前台表单form的action="LoginAction_test1" 则struts将业务交给test1()执行
当前台表单form的action="LoginAction_test2" 则struts将业务交给test2()执行
 

注:当请求的action="LoginAction_test1" 则struts会把请求交给类org.Rudiment.action.LoginAction 的 test1() 方法处理

除此之外表达式{1}不仅能在action中用在result里面也可以用
当我们配置

 代码如下 复制代码

 <action name="*">
                   <result>/*.jsp</result>
 </action>

这里action没有指定处理的class则struts默认使用ActionSuppoer这个类总是返回Action.SUCCESS
所以当前台请求action="index" 则strtus会将请求映射到index.jsp页面,即返回给用户的视图是index.jsp
有点需要说明 如果result 里面没有指定name这个属性,那么默认为name=success。

时间: 2024-11-13 08:46:39

Struts2 配置多个业务处理Action的通配符的相关文章

Struts2框架学习之二:action详解

前言 在struts 2中,action是其核心功能,使用struts 2框架,主要的开发都是围绕action进行的,我们编写的action通常需要实现com.opensymphony.xwork2.Action接口,需要实现的方法是execute方法,但是在实际的开发中,编写的action也可以不必实现action接口,而是直接创建一个普通Java类,并添加execute方法就可以public String execute(){return "success";}.还有一种方式是集成

javaweb-关于是struts2配置json注解问题

问题描述 关于是struts2配置json注解问题 这是我的一段注解: @ParentPackage("json-default") @Namespace("/") public class SubjectAction extends BaseAction{ private JSONArray resultObj; @Action(value="subject", results={@Result(type="json")},

web xml-求大神看一下,我的struts2配置是否有问题

问题描述 求大神看一下,我的struts2配置是否有问题 为什么不能访问登陆界面,之前好好的 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchem

Struts2.3.28.1升级后action中实体Bean第一个字母小写 第二字母大写

问题描述 Struts2.3.28.1升级后action中实体Bean第一个字母小写 第二字母大写 我将 Struts升级至2.3.28.1后,action中实体Bean第一个字母小写 第二字母大写的情况后台获取值为null如:UserAction中有 private User user; 在User:private String uName; public String getUName() { return uName; } public void setUName(String uName

struts2.1.6升级到struts2.3.20之后,所有action请求出现404,

问题描述 struts2.1.6升级到struts2.3.20之后,所有action请求出现404, GET http://localhost:8080/member/campaign/manager/campaign!registerList.action [HTTP/1.1 404 Not Found 6ms] 解决方案 我现在也升级到2.3.20 发现包互相依赖,现在启动不了.不知道你现在弄好了吗,能否分享一下你的经验. 解决方案二: 我现在也升级到2.3.20 发现包互相依赖,现在启动不

struts2 怎么在js中获取action传回的数据

问题描述 struts2 怎么在js中获取action传回的数据 在action类里 有一个 List users = new ArrayList();action返回之后想要想要在onload里 先把users做一下处理这时在function load(){ .... }中怎么得到users 解决方案 可以用EL表达式var t = ${users} 解决方案二: 在js里可以直接用var t = '' 关键不要忘了最外面的引号 if和iterator可以直接用 不需要引号 解决方案三: 如果

webwork+-xwork.xml要有什么配置,为什么我用action类的属性接收不了请求来的同名参数

问题描述 xwork.xml要有什么配置,为什么我用action类的属性接收不了请求来的同名参数 结果name和age都是null 页面里是这样的 解决方案 把你的配置文件贴出来一起看.光看这个还不清楚. 有可能出错的就是配置文件 配置文件首先你得有actions节点,内部有action节点.name值对应form的action属性去掉.action的值:

Struts2 的问题 异步请求访问Action方法出现bug

问题描述 Struts2 的问题 异步请求访问Action方法出现bugpublic class EnumConstAction extends BaseAction {EnumConstService enumConstService;WEnumConstTab selInfo;// 专门为初始化select 使用public WEnumConstTab getInfo() {return info;}public void setInfo(WEnumConstTab info) {this.

Struts2配置报错:java.lang.ClassNotFoundException

问题描述 Struts2配置报错:java.lang.ClassNotFoundException 严重: Exception starting filter struts2 java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter .StrutsPrepareAndExecuteFilter at org.apache.catalina.loader.WebappClassLoader.loadClass