在struts2中关于action的请求url请求基本上由三种情况:
首先要先提下struts在发送请求的处理流程:
客户端请求(http://localhost:8080/HelloWorld/stu/stuadd)->tomcat接收请求->根据HelloWorld这个项目来加载处理web.xml->把请求交给strutstfilter来处理,strutsfilter交给doFilter处理->doFilter根据struts.xml找到对应的namespace、action,及action处理完成返回的信息来显示调用对应的result页面->返回给客户端
struts.xml配置如下:
<package name="student" namespace='/stu' extends="struts-default">
#1:不指定 <action method="methodName">由StudentAction中的默认函数execute来处理
<action name="default" class="com.hupu.action.StudentAction" >
<result>/Student_index.jsp</result>
</action>
#2:指定<action method="methodName"> 来处理
<action name="index" class="com.hupu.action.StudentAction" method="index" >
<result>/Student_index.jsp</result>
</action>
<!-- method 请求时 回调用 method=add的方法 -->
<action name="stuadd" class="com.hupu.action.StudentAction" method="add" >
<result name='add_student'>/Student_add.jsp</result>
<result name='add_student_error'>/Student_add_error.jsp</result>
</action>
#3: <!-- DMI 动态方法调用 user!add 这样 就可以只配置这一样action 就能处理相似的请求-->
<action name="user" class="com.hupu.action.UserAction">
<result name='add_user'>/user_add.jsp</result>
</action>
#4:通配符处理
<action name="*_*" class="com.hupu.action.{1}Action" method="{2}">
<result>/{1}_{2}.jsp</result>
</action>
</package>
参数传递:struts中参数传递有基本三种方法:
1:Action接收参数:
1:由Action中的getXXX(),setXXX()来处理参数的接收,其中的Action的属性名称不一定要传递的参数的名称一样,但是getXXX后面的名称一定要一致。
代码:
public class UserAction extends ActionSupport {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//参数和成员变量时一一对应的 类型自动转换
private String name;
private int age;
public String add(){
return "add_user";
}
}
2:域模型对象
创建一个域模型对象接收参数此时参数的传递:user.name=.....
同时由于可能域模型字段比要接收的字段少比如password的输入的验证,这时可以使用DTO(数据传输对象)
作为中间的数据接收然后再传递来处理
DTO:数据传输对象
DO:数据对象
3:modeldriven 模型驱动
代码:使用的是com.opensymphony.xwork2.ModelDriven;模型驱动类
这是请求的url地址:http://localhost:8080//HelloWorld/stu/stuadd?name=liujijun&age=27 就能填充到
Student类中,这是需要单独的new出来一个student对象
public class StudentAction extends ActionSupport implements ModelDriven<Student> {
private Student student = new Student();
public String index(){
return SUCCESS;
}
public String add(){
if(true){
this.addFieldError("name", "name is error");
this.addFieldError("name", "name is too long");
return "add_student_error";
}
return "add_student";
}
@Override
public Student getModel() {
// TODO Auto-generated method stub
return student;
}
@Override
public String execute(){
return SUCCESS;
}
}
分享到:
相关推荐
在Struts2框架中,Action类是业务...通过这些方式,我们可以高效地管理Action,使一个Action类能够处理多种请求,降低代码冗余,提高代码维护性。在实际项目中,应根据需求选择最合适的策略,以达到最佳的设计效果。
Struts2和Struts1是两个非常著名的Java Web框架,它们在处理请求时通常会在URL中显式地显示.action或.do后缀。然而,为了提供更友好的用户体验和增强安全性,有时我们需要隐藏这些扩展名。本篇文章将详细介绍如何在...
在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含中文字符的数据时,可能会遇到编码问题,因为HTTP请求默认使用的是ASCII编码,而中文字符需要UTF-...
总结来说,Struts2通过动态方法调用、通配符映射和拦截器+`@Action`注解等方式,提供了灵活的多请求处理能力,使Action类能够更好地组织和管理不同的业务逻辑。开发者可以根据项目需求和代码可维护性选择适合的方法...
这里定义了一个名为 `login` 的 Action,当表单提交到 `/login.action` 时,Struts2 将会调用 `action.LoginAction` 类来处理这个请求。如果 `LoginAction` 返回 `"success"`,那么根据配置的 `redirect-action` ...
在本文中,我们将深入探讨如何将Ajax技术与Struts2框架结合,实现异步请求数据。这种方式能够提高用户体验,因为它允许后台处理数据而无需刷新整个页面。以下是对关键知识点的详细说明: 1. **Ajax(Asynchronous ...
在Struts2中,Action的配置和使用方式有多种,下面将详细介绍Struts2 Action参数的详细说明。 首先,我们来看Action的配置格式。在Struts2的配置文件(通常是struts.xml)中,Action的基本配置结构如下: ```xml ...
在Struts2中,Action类扮演着控制器的角色,负责处理用户请求并协调模型与视图之间的交互。以下是关于"struts2 Action编写方式"的详细讲解: 1. POJO(Plain Old Java Object)方式: 在Struts2中,Action类可以...
1. **Action配置**:在Struts配置文件中,每个Action都有一个唯一的名称,这个名称用于映射URL请求。配置还包括了Action类的全限定名,以及Action的输入、成功和错误结果的定义。 2. **Action类**:Action类是...
这些拦截器可以灵活地插入到请求处理流程中,为开发者提供了一种强大的扩展框架的方式。 对于视图层,书里可能会涵盖使用JSP、Taglibs(标签库)和Freemarker模板技术来构建动态页面的方法。Struts的自定义标签库,...
当用户通过浏览器发送请求时,Struts2会将请求转发给相应的Action处理。 - **执行流程**: - 用户发起HTTP请求。 - 请求被Struts2的前端控制器(FilterDispatcher)拦截。 - FilterDispatcher根据配置找到对应的...
Struts2通过FilterDispatcher这个Servlet过滤器来拦截所有到达服务器的请求,判断是否需要由Struts2框架处理,如果是,则根据配置的Action映射调用相应的execute()方法。 Struts2的包结构清晰,每个包都有其特定的...
资源中示例了一个struts2的配置文件中配置的action的result结果为另外一个action的配置,该跳转的过程中是带所有参赛调整的,在另外一个action中可以接受到当前action的所有参数,此配置文件是我日常开发中的经验...
- **Action**:在Struts2中,Action是业务逻辑的载体,负责处理用户请求并返回结果。每个Action对应一个特定的用户操作。 - **Result**:Action执行完毕后,会返回一个Result,定义了页面跳转或数据呈现的方式。 ...
它根据配置文件(struts-config.xml)中的映射信息来处理请求,将请求分发到相应的Action,Action执行完毕后返回一个ActionForward对象,指示应该转向哪个JSP页面或者其他的Action。 Struts与Spring框架的结合使用...
2. **配置文件**:`struts-config.xml`是Struts框架的核心配置文件,它定义了Action与请求URL的映射关系,以及Action如何转发到JSP或其它视图。例如,你可以定义如下配置: ```xml <action path="/example1" type=...
通过两个自定义结果集,解决struts2请求转发或重定向时,一个结果码无法对应多个视图的问题。以前的做法,是在配置Action时使用通配符解决,但这样需要JSP页面名称和Action的方法名称一致,如果命名不一致或不规范,...
Struts是Java Web开发中的一个开源框架,主要负责控制应用程序的流程,而Action技术是Struts的核心组件之一,用于处理用户的请求。在这个场景中,我们讨论的是如何利用Struts的Action来实现对数据库数据的增删改查...
Action在处理完请求后,可以通过ActionForm将数据传递给视图,或者通过模型驱动的方式直接传递到业务对象。 4. **国际化和本地化**:Struts 1支持多语言,Action可以处理用户的语言选择,加载相应的资源文件,提供...
从给定的部分内容来看,这段文本深入介绍了Struts2框架的核心组件——Action,以及如何在MVC(Model-View-Controller)架构中运用Action来处理用户请求、管理业务逻辑及响应数据。 ### Struts2框架中的Action概念 ...