1.Struts2的Action可以不需实现任何接口或继承任何类,就是一个包含了execute()方法的POJO,下面是一个简单的Action的实现
package com;
import com.opensymphony.xwork2.ActionContext;
public class LogonAction {
private String userName;
private String userPwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String execute(){
if(userName.equals("callan") && userPwd.equals("fjf")){
// ActionContext的getSession()返回的不是一个HttpSession,是一个Map
// 但struts2的拦截器会负责该session与httpsession的转换
ActionContext.getContext().getSession().put("userName", "callan");
return "succee";
} else {
return "error";
}
}
}
配置文件
<package name="logon" extends="struts-default">
<action name="logon" class="com.LogonAction">
<result name="succee">/logon/welcome.jsp</result>
<result name="error">/logon/error.jsp</result>
</action>
</package>
当请求时,Struts运行时根据struts.xml里的Action映射,实例化com.LogonAction类,
默认情况下会调用其execute方法。不过我们可以通过配置改变他的方法,配置如下:
<action name="logon" method="userLogon" class="com.LogonAction">
<result name="succee">/logon/welcome.jsp</result>
<result name="error">/logon/error.jsp</result>
</action>
Method配置调用的方法名为userLogon,这时当请求logon.action时会调用userLogon()方法,不会在去调用默认的execute()方法
2. 虽然Action可以不实现任何接口或继承任何类,但大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重载execute()方法.(比如说我们需要request和response对象时)
public class LogonAction2 extends ActionSupport{
private String userName;
private String userPwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String execute(){
// 得到request对象
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
return SUCCESS;
}
}
SUCCESS是在ActionSupport定义的,同时还定义了ERROR,INPUT,LOGIN,NONE,在配置result的name时,他们的值分别为success,error,input,login,none 3.继承ActionSupport类能得到request,response等对象,通过ioc方式也能得到request,response(实现ServletRequestAware, ServletResponseAware接口)
public class LogonAction implements SessionAware, ServletRequestAware, ServletResponseAware {
private String userName;
private String userPwd;
private Map session;
private HttpServletRequest request;
private HttpServletResponse response;
public String execute(){
// session是一个map
// struts2的拦截器会负责该session与httpsession的转换
// 在页面上取值和在session中取一样.session.getAttribute(userName)
session.put("userName", "callan");
return "succee";
}
public void setSession(Map session) {
this.session = session;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
}
分享到:
相关推荐
Struts2 中 Action 接收参数的方法 Struts2 框架中,Action 组件可以通过多种方式接收参数,这些方式包括使用 Action 的属性、使用 DomainModel 和使用 ModelDriven。下面将详细介绍这些方法: 使用 Action 的属性...
在Struts2中,Action类是核心组件,它扮演着控制器的角色,负责处理用户请求并驱动模型。以下是对"struts2中action的使用"的详细解释。 1. **Action类**:Action类是Struts2框架中的核心组件,它继承自`...
在 Struts2 中使用 `redirect-action` 来实现 Action 之间的跳转是一种常见的做法,特别是在需要按顺序执行多个 Action 的业务场景中。通过这种方式,不仅可以保持应用程序的良好结构,还能有效地组织业务流程。同时...
详解Struts2中Action访问Servlet API的几种方法 在通常的web开发中Request和Response对象比较常见,但在Struts2框架中由于Action能与JSP页面进行数据交互,所以通常都不会用到这两个对象。如果想在Struts2程序中用到...
- **定义**:Action类是Struts 2中的核心组件之一,它负责处理用户的请求并将数据传递给视图层。 - **特点**:Action类可以使用注解或XML配置文件进行配置,这为开发人员提供了极大的灵活性。通过实现`Action`接口...
- **Action**:在Struts2中,Action是业务逻辑的载体,负责处理用户请求并返回结果。每个Action对应一个特定的用户操作。 - **Result**:Action执行完毕后,会返回一个Result,定义了页面跳转或数据呈现的方式。 ...
6. **国际化与本地化**:学习如何在Struts2中实现多语言支持,提供全球化用户体验。 7. **Tiles布局**:结合Tiles插件,创建复用性强、结构化的页面布局。 8. **异常处理**:理解Struts2的异常处理机制,如何...
这篇名为“Struts2 使用action属性接收中文参数(post提交)”的博文可能讲述了如何在Struts2框架中正确处理中文POST请求。在处理中文参数时,主要涉及以下几个关键知识点: 1. **字符编码设置**: - 请求编码:...
根据提供的信息,我们可以推断出这是一本关于Struts 2框架的书籍——《Struts 2实战 Struts 2 in action 的中文版》。本书主要介绍了Struts 2框架的相关概念、工作原理以及实际应用案例等内容。接下来,我们将根据...
Struts2 中 Action 名字的大小写问题浅谈 Struts2 框架中 Action 的命名规则是开发者需要注意的问题之一。在日常开发中,开发者可能会遇到各种错误,例如在使用 Struts2 框架编写 Action 类以及在 jsp 中写调用相关...
1. **Action类**:在Struts2中,Action类是业务逻辑的核心,它接收用户请求,执行相关操作,并返回结果。Action类可以被配置在struts.xml文件中,指定其对应的URL和返回的结果类型。 2. **拦截器(Interceptors)**...
在Struts2中,Action充当控制器的角色,它接收并处理请求,然后根据业务逻辑决定返回哪个视图。 ### Struts2的架构组件 Struts2框架的架构主要由以下几个关键组件构成: 1. **Action**:这是Struts2中最核心的...
1. **Action配置**:在Struts2中,Action是业务逻辑的主要承载者。每个Action通常对应一个或多个结果页面。在`struts.xml`配置文件中,我们需要为每个Action定义一个唯一的`name`,这将成为URL的一部分。例如: ```...
Action类在Struts2中扮演着业务逻辑处理者的角色,它负责接收用户的请求,执行相应的业务操作,并返回结果到视图层进行展示。 首先,让我们了解`Struts2_0100_Introduction`,这是对Struts2框架的基础介绍。Struts2...
总的来说,《Struts2 in Action》中文版是Java Web开发者必备的参考书籍之一,它不仅提供了全面的技术解析,还强调了实际开发中的问题解决和性能优化。通过学习这本书,开发者可以提升自己在Struts2框架上的专业技能...
struts2 in action 源码
本文档将详细介绍如何在Struts 2中实现Action动态方法调用,并通过实例演示其具体应用。 #### 二、基础知识回顾 在开始深入探讨动态方法调用之前,让我们先回顾一下Struts 2框架的基本概念。 1. **Action**: 在...
在Struts2的工作机制中,Action是核心概念,它是业务逻辑的载体,负责处理用户请求。Action的命名空间在配置文件中定义,用于区分不同功能的Action,避免URL冲突。Action的命名空间与Servlet API相结合,可以帮助...
1. **Action和结果**: Action是Struts2框架中处理用户请求的核心组件,它封装了业务逻辑。结果则定义了Action执行后的跳转目标,可以是另一个Action、JSP页面或者其他资源。 2. **配置文件**: Struts2的配置主要...