在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处理多个请求
Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射
资源中示例了一个struts2的配置文件中配置的action的result结果为另外一个action的配置,该跳转的过程中是带所有参赛调整的,在另外一个action中可以接受到当前action的所有参数,此配置文件是我日常开发中的经验...
通过两个自定义结果集,解决struts2请求转发或重定向时,一个结果码无法对应多个视图的问题。以前的做法,是在配置Action时使用通配符解决,但这样需要JSP页面名称和Action的方法名称一致,如果命名不一致或不规范,...
首先,Struts的ActionServlet接收到一个请求,然后根据struts-config.xml的配置定位到相应的mapping (映射);接下来如果form的范围是request或者在定义的范围中找不到这个form,创建一个新的form实例;取得form...
js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action
androind http 请求 struts2 action 返回 json 数据 例子
Struts2一个Action内包含多个请求处理方法的处理
2 线程模式方面的对比:Struts 1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts 1 Action能做的事,并且要在开发时特别小心。Action资源必须是线程安全的...
4.1 为什么要拦截请求 61 4.1.1 清理MVC 61 4.1.2 从拦截器受益 63 4.1.3 开发拦截器 64 4.2 拦截器的工作原理 64 4.2.1 总指挥ActionInvocation 64 4.2.2 如何触发拦截器 64 4.3 研究内建的Struts 2拦截器 67 4.3.1...
NULL 博文链接:https://cdxs2.iteye.com/blog/1925245
使用Struts的Action来对数据库进行增、删、改、查四项操作 <br/>1、数据库MySQL,创建数据库 Pagination MySQL.sql用来创建表结构 <br/>连接方式有两种,一种直接JDBC,一种通过连接池,代码中有说明...
b)根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMeshPlugin),主要清理当前线程的ActionContext和Dispatcher;c)请求经过插件...
利用struts_1编写代码实现简单登录功能,学了Struts之后,是在action中编写请求处理代码,为什么这样做呢?因为Struts作者帮我们写好了一个actionServlet,他写这个servlet的目的是希望所有请求都交给它预处理,它...
Struts2正则表达式校验总结正则表达式验证如下,注意验证框架的XML文件中如下写
struts2利用通配符调用同一个Action里面不同的方法,在struts.xml配置文件中将请求方法的不相同部分抽象成“*".
Struts 2的处理流程与Action的管理方式 为应用指定多个配置文件 动态方法调用和使用通配符定义action 请求参数接收 自定义类型转换器 全局类型转换器 访问或添加几个属性 文件上传 多文件上传 自定义拦截...
Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.
action command在穿越了一系列Struts2和XWork的拦截器之后,最后执行用户编写的Action类,在Action执行之后,响应还会穿越相同的拦截器(按照与请求相反的顺序),最后通过Struts2的HttpServletResponse转换成Web可...