测试类Test.java:
public class Test extends ActionSupport{
private String id;
private String username;
private int age;
private Service service;
public String getId() {
System.out.println("getId");
return id;
}
public void setId(String id) {
System.out.println("setId="+id);
this.id = id;
}
public String getUsername() {
System.out.println("getUsername");
return username;
}
public void setUsername(String username) {
System.out.println("setUsername");
this.username = username;
}
public int getAge() {
System.out.println("getAge");
return age;
}
public void setAge(int age) {
System.out.println("setAge");
this.age = age;
}
public String execute(){
System.out.println("aaaaaaaa");
return SUCCESS;
}
public Service getService() {
System.out.println("getService");
return service;
}
public void setService(Service service) {
System.out.println("setService");
this.service = service;
}
}
JSP:
<form action="<%=request.getContextPath()%>/qlg/test.ac" type="post" name="form1">
<input type="hidden" name="username" value="112233"/>
<input type="submit" name="button" value="submit"/>
</form>
struts2配置文件:
<action name="test" class="Test">
<param name="id">1111</param>
<result name="success">/WEB-INF/pages/qlg/LwsQGeneral/qryLwsQGeneral.jsp</result>
</action>
Spring配置文件:
<bean name="Test" class="action.Test" scope="prototype">
<property name="service">
<ref bean="Service"/>
</property>
</bean>
启动服务器时打印:
setService
提交后后台打印结果为:
setService
setUsername
setId=1111
setId=1111
setUsername
aaaaaaaa
结论:
1)get方法都没有被打印,age的set,get方法也都没有打印,表示没有被显式或隐式的调用
set方法被调用的顺序应该为 1)Spring注入的bean 2)form表单中提交的参数 3)struts配置文件中给设置的参数
2)所有的set方法都在excute()之前被执行
3)如果是jfreechart等应用的话,
public JFreeChart getChart() 会在excute()后被隐式调用
分享到:
相关推荐
- **Action**:在Struts2中,Action是业务逻辑的载体,负责处理用户请求并返回结果。每个Action对应一个特定的用户操作。 - **Result**:Action执行完毕后,会返回一个Result,定义了页面跳转或数据呈现的方式。 ...
3. **Interceptor(拦截器)**:Struts2中的拦截器是一个强大的功能,可以实现事务管理、权限控制、日志记录等功能。在配置文件中,你可以定义一系列拦截器并指定它们的执行顺序。 4. **OGNL(Object-Graph ...
SampleApplication是《Struts2 in Action》书中配套的示例项目,包含了完整的Struts2应用结构。这个项目可以帮助读者理解如何组织Struts2的配置文件、动作类、视图和模型,以及如何将它们整合在一起形成一个功能完备...
测试通常包括验证Action类的行为、结果的跳转、Interceptor的执行顺序、以及视图层的正确渲染。同时,考虑到Struts2的安全性问题,如著名的Struts2 OGNL注入漏洞,测试工具也可能包含安全相关的检查。 总的来说,...
2. **拦截器**:在Action执行之前,Struts2会调用一系列预定义或自定义的拦截器。这些拦截器可以进行权限检查、日志记录、数据验证等多种任务。 3. **Action执行**:经过所有拦截器后,Action的业务逻辑方法被调用...
这个学习笔记和测试源代码着重讲解了Struts2中Action路径的搜索顺序,这对于理解和调试Struts2应用至关重要。 在Struts2框架中,Action路径是用户请求与实际处理该请求的Action类之间的桥梁。当一个HTTP请求到达...
- **Interceptor**:拦截器是Struts2中的重要特性,它可以像过滤器一样在Action调用前后执行额外的操作,如日志记录、权限验证、性能监控等。 - **Value Stack**:值栈是Struts2用于存储Action属性和模型对象的...
拦截器是Struts2的一个强大特性,它们在Action执行前后按顺序执行,可以实现如日志记录、权限验证、事务管理等功能。在这个留言板项目中,可能会用到登录检查、异常处理等拦截器。 7. **结果类型(Result Types)*...
8. **异常处理**:Struts2提供了全局异常处理机制,当Action执行抛出异常时,可以通过全局异常处理器进行统一处理。确保异常处理器配置正确,并能捕获到预期的异常。 9. **使用开发工具**:利用浏览器的开发者工具...
值得注意的是,在Struts 2中,即使是简单的POJO(Plain Old Java Object)对象,只要包含`execute`方法,就可以作为Action使用。 #### 2. 线程模式方面的对比 - **Struts 1**:Action采用单例模式,这意味着所有...
`xwork-2.0.4.jar`是Struts2依赖的一个重要库,XWork是Struts2的前身,它的许多功能被整合到了Struts2中,如动作(Action)处理和拦截器(Interceptor)机制。 描述中提到的"struts2-core-2.0.14.jar"是Struts2框架...
1. **Action类**:在Struts 2中,Action类是业务逻辑的载体,负责处理用户的请求。每个Action类对应一个URL,用户通过不同的URL来调用不同的Action。 2. **配置文件**:Struts 2使用XML配置文件(通常为struts.xml...
OGNL是Struts2中的表达式语言,用于在Action对象和视图之间传递数据。它可以方便地访问和修改对象的属性,甚至执行复杂的表达式。 6. **Plug-in机制**: Struts2支持插件机制,允许开发者扩展框架功能,如自定义...
此外,Struts2支持多种结果类型(Result Type),如dispatcher(用于转发到一个JSP页面)、stream(用于处理文件下载)等,使得Action执行后的结果可以灵活处理。结合Struts2的插件机制,可以方便地集成第三方库,如...
- 使用`struts2-spring-plugin`,可以直接在Spring容器中管理Action实例,实现依赖注入,提高可测试性。 10. **安全考虑** - 虽然Struts2提供了强大的功能,但历史上也存在过一些严重的安全漏洞,如CVE-2017-5638...
在Struts2中,视图通常由JSP页面构成,它们负责渲染数据并展示给用户。当Action执行完毕并返回一个结果字符串后,Struts2会根据这个结果找到相应的JSP页面来显示。在`WebRoot/WEB-INF`下,你可能还会看到`struts....
在Struts2中,模块化设计是其核心特性之一,它使得开发者可以将应用程序拆分成独立的功能单元,每个单元称为一个模块。这样做有助于提高代码的复用性和可测试性,同时简化了大型项目的开发和管理。 标题“Struts2 ...
拦截器是Struts2中的一个重要概念,它允许你在Action执行前后执行自定义逻辑。比如,你可以创建一个验证拦截器,用于在Action执行前检查用户输入的有效性。自定义拦截器需要实现`...