Struts2 中的Action分发
Struts2中Action不需要单独继承任何的特殊Action,当继承ActionSupport就支持分发,同时validate验证方法也支持分发,实现分发有以下两种形式:
通过Struts2自定义的分发字符(!)完成Action分发:
action格式为:action名!方法名.action。
validate验证方法则为:validate+方法名,分发方法名首字母大写。如:validateLogin()
index.jsp:
<center>
<s:actionerror name="error"/>
<s:fielderror />
<form action="user!login.action" method="post">
User ID:<input type="text" name="user.userid"/>
<br/>${fieldErrors["userid"][0]}<br/>
PassWord:<input type="password" name="user.password"/>
<br/>${fieldErrors["password"][0]}<br/>
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</form>
</center>
--------------------------------------------------------------------------------------------------------------------------
在Action中不再覆写execute方法,直接定义一个login方法,而且该方法返回值类型为String。
UserAction.java:
public class UserAction extends ActionSupport {
private User user = new User();
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String login() {
if (user.getUserid().equals("Hello")&& user.getPassword().equals("12345")) {
ServletActionContext.getRequest().getSession().setAttribute("users", user);
return "suc";
}
super.addActionError("用户名或密码错误!");
return "input";
}
public void validateLogin() {
if (user.getUserid() == null || user.getUserid().trim().equals("")) {
super.addFieldError("userid", "用户ID不能为空!");
}
if (user.getPassword() == null || user.getPassword().trim().equals("")) {
super.addFieldError("password", "密码不能为空!");
}
}
}
------------------------------------------------------------------------------------------------------------------------
struts.xml:
<struts>
<package name="login" namespace="/" extends="struts-default">
<action name="user" class="org.wu.struts.action.UserAction">
<result name="suc">/suc.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
-----------------------------------------------------------------------------------------------------------------------
suc.jsp:
<center>
欢迎光临,${users.userid}
</center>
-----------------------------------------------------------------------------------------------------------------------
二、任意定义分隔符,通过在struts.xml中的配置来进行分发的处理。
<form action="user_login.action" method="post">
---------------------------------------------------------------------------------------
<struts>
<package name="login" namespace="/" extends="struts-default">
<action name="user_*" class="org.wu.struts.action.UserAction" method="{1}">
<!—- {1}表示取得在name中出现的第一个*,填写到method值中 -->
<result name="suc">/suc.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
分享到:
相关推荐
在Struts2中,Action充当控制器的角色,它接收并处理请求,然后根据业务逻辑决定返回哪个视图。 ### Struts2的架构组件 Struts2框架的架构主要由以下几个关键组件构成: 1. **Action**:这是Struts2中最核心的...
OGNL是Struts2中的默认表达式语言,用于在Action和视图之间传递数据。例如,`${user.name}`可以获取User对象的name属性。 **7. Struts2的注解** 除了XML配置外,Struts2还支持使用注解进行配置,使得代码更加简洁。...
Struts2 的主要特点是使用 FilterDispatcher 作为核心控制器,将请求分发到相应的 Action 中。下面是 Struts2 面试题中涉及到的知识点: 1. Struts1 和 Struts2 的区别: Struts1 和 Struts2 是两个不同的框架,...
- **Action类详解**:Action类是Struts2的核心组件之一,负责处理用户的请求并返回相应的结果。了解如何编写Action类、设置其属性以及处理请求参数至关重要。 - **Result配置**:Result用于指定Action执行后的结果...
在Struts2中,前端控制器由`StrutsPrepareAndExecuteFilter`扮演,它负责拦截所有请求,并根据配置将请求传递给相应的Action处理。 #### 二、Struts2快速入门 ##### 2.1 安装与配置 1. **下载Struts2开发包** - ...
2. **配置Action**:在struts.xml文件中配置Action,包括Action名称、结果类型和可能的参数映射。 3. **编写视图**:创建JSP页面,展示Action返回的数据。 4. **使用拦截器**:学习如何添加和配置拦截器,了解其工作...
1. **Action与Dispatcher**:在Struts2中,Action类是业务逻辑处理的主要载体。用户请求首先会被Struts2的前端控制器(DispatcherServlet)捕获,然后根据配置文件(struts.xml)中的映射信息,将请求分发到相应的...
`控制器组件`可能详细讲解了Struts2中的Action类和拦截器。Action类是用户交互的桥梁,它处理请求、调用业务逻辑,并返回结果。拦截器则在Action调用前后执行,提供了对请求处理的增强功能。 `标签库`部分会介绍...
在Struts 中,Action 分发是核心控制器DispatcherServlet 的工作,它接收HTTP 请求,解析请求参数,然后根据配置文件(如struts-config.xml 或struts2的struts.xml)将请求分发到相应的Action 类进行处理。Action ...
Struts2的异常处理更为优雅,它可以通过拦截器来捕获并处理异常,同时提供全局的异常处理策略,而在Struts1中,异常处理往往需要在每个Action中单独处理。 **7. 插件支持:** Struts2拥有丰富的插件系统,如JSON...
数据校验是Struts2中的另一个重要部分。开发者可以通过注解或XML配置来定义字段的校验规则。当Action执行后,如果校验失败,Struts2会自动将错误信息绑定到Action的属性上,并展示给用户。 视图层在Struts2中通常是...
6. **Action类**:在Struts2中,Action类是控制器的实现,它处理用户请求,调用业务逻辑,然后返回一个结果到视图。每个Action类通常对应一个特定的业务操作。 7. **配置文件**:包括struts.xml和web.xml。struts....
Struts2中的`ActionServlet`就是对Servlet API的一种扩展,它作为整个框架的调度中心,负责接收请求、调用Action并返回相应的结果。 在Struts2中,Servlet API主要体现在以下几点: 1. **过滤器(Filter)**:...
拦截器是Struts2中的一个重要特性,它允许开发者在Action执行前后添加自定义的行为,比如身份验证、数据校验等。通过配置文件可以轻松地控制哪些Action需要经过哪些拦截器。 **1.2.3 FilterDispatcher与Action映射*...
Struts2框架作为Java Web开发领域中的一款经典MVC(Model-View-Controller)框架,其工作原理涉及到了一系列复杂的组件交互与流程控制。本文将深入解析Struts2的工作流程,帮助开发者理解其核心机制。 ### 一、...
在Struts2框架中,核心组件包括Action、Result、Interceptor和配置文件(struts.xml)。Action是业务逻辑的执行者,Result负责展示结果页面,Interceptor则是处理请求前后的逻辑,如日志、权限检查等。配置文件struts....
- 使用`struts2-spring-plugin`,可以直接在Spring容器中管理Action实例,实现依赖注入,提高可测试性。 10. **安全考虑** - 虽然Struts2提供了强大的功能,但历史上也存在过一些严重的安全漏洞,如CVE-2017-5638...
8. **FilterDispatcher**:作为Struts2的前端控制器,FilterDispatcher负责接收HTTP请求,解析并分发到相应的Action。 Struts2-2.5.13的更新可能包括: - 性能优化:可能对核心组件进行了优化,以提高处理速度和...
拦截器是Struts 2中非常重要的特性,它们在Action执行前后执行,可以实现如日志记录、事务管理、权限验证等功能。通过自定义拦截器,开发者可以扩展框架功能。 3. **配置文件** `struts-default.xml`是Struts 2的...