Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web应用程序框架,它在Web开发领域具有广泛的应用。Struts2的最新版本为struts-2.3.28,这个版本包含了对先前版本的改进和修复,旨在提供更稳定、更安全的开发环境。 在Struts2框架中,主要知识点包括: 1. **核心架构**:Struts2的核心是Action类,它是处理用户请求的中心。Action类通过ActionSupport基类提供默认的行为,如结果映射和国际化支持。此外,FilterDispatcher(或StrutsPrepareAndExecuteFilter)作为入口点,拦截所有HTTP请求并引导它们到Struts2的处理流程。 2. **配置方式**:Struts2支持XML配置和注解配置,允许开发者灵活地定义Action、Result、Interceptor等。`struts.xml`是主要的配置文件,用于定义Action与URL的映射,以及Interceptor链。 3. **Interceptor(拦截器)**:拦截器是Struts2的重要特性,它在Action执行前后插入代码,实现了如日志、权限检查、数据校验等常见功能。例如,`ParamsInterceptor`用于参数绑定,`ValidationInterceptor`进行表单验证。 4. **结果类型(Result)**:Struts2支持多种结果类型,如JSP、FreeMarker、 Velocity等,可以指定Action执行后的视图渲染。`dispatcher`是最常见的结果类型,它将请求转发到一个JSP页面。 5. **模型驱动(ModelDriven)**:这是一种简化Action类的模式,允许Action直接绑定到模型对象,减少代码量。 6. **动态方法访问(Dynamic Method Invocation,DMI)**:允许根据用户请求的URL动态调用Action方法,提高灵活性。 7. **OGNL(Object-Graph Navigation Language)**:Struts2内部使用OGNL作为表达式语言,用于数据绑定和表达式的求值。例如,``用于显示用户的名字。 8. **插件系统**:Struts2有强大的插件支持,如Tiles、JSON、Freemarker等,可以方便地扩展框架功能。 9. **安全性**:Struts2的2.3.28版本会包含安全更新,修复了之前版本可能存在的漏洞,如SQL注入、XSS攻击等。开发者应当及时更新到最新版本,以保证应用的安全性。 10. **异常处理**:Struts2提供了一套全面的异常处理机制,可以通过配置文件定义全局和特定Action的异常处理策略。 11. **测试支持**:Struts2支持单元测试和集成测试,可以使用JUnit等测试框架对Action进行测试。 12. **国际化(Internationalization,i18n)**:Struts2提供了内置的国际化支持,通过资源包(.properties文件)管理不同语言的文本。 Struts2.3.28作为一个成熟的web框架,提供了一整套的解决方案,从请求处理、业务逻辑、视图展现到安全控制,帮助开发者高效地构建Java web应用。在使用这个版本时,开发者应熟悉其核心概念,合理配置和组织代码,同时关注框架的安全性和性能优化。
2025-02-17 10:06:22 20.15MB
1
Struts2框架是一款广泛应用于Java Web开发中的开源MVC框架,它简化了Web应用程序的构建,使得业务逻辑、控制逻辑和视图层得以分离。单元测试对于任何软件项目都至关重要,因为它能确保代码的正确性,提高代码质量和可维护性。在Struts2中,我们通常使用JUnit作为单元测试工具,结合Mockito等库来模拟依赖,进行隔离测试。 了解Struts2的执行流程:请求到达Servlet容器后,通过StrutsPrepareAndExecuteFilter转发到Struts2的核心拦截器链。Action类处理请求,根据配置的Result类型返回相应的视图。单元测试的目标是针对这些Action类及其方法进行验证。 JUnit是Java平台上的一个轻量级单元测试框架,它允许开发者编写测试用例,对代码进行断言以检查预期结果。在Struts2中,我们需要为每个Action创建对应的JUnit测试类。测试类通常继承自`StrutsTestCase`或`StrutsSpringTestCase`(如果使用了Spring框架),这两个类提供了模拟Struts2上下文环境的功能。 以下是一些可能的测试步骤: 1. **创建测试类**:创建一个Java类,例如`MyActionTest`,并继承`StrutsTestCase`。导入必要的测试库,如JUnit、Struts2测试相关的类。 2. **注解测试类**:使用`@Before`和`@After`注解定义测试前后的准备和清理工作,如初始化Struts2上下文,配置Action和ActionMapping。 3. **定义测试方法**:为每个Action方法创建一个测试方法,使用`@Test`注解标记。方法内调用待测试的方法,并设置必要的输入参数。 4. **模拟依赖**:如果Action类依赖其他服务或DAO,可以使用Mockito等工具进行模拟,避免真实数据库交互。例如,`mock(MyService.class)`,然后使用`when()`和`thenReturn()`指定模拟行为。 5. **执行测试**:使用`assertXXX()`系列方法(如`assertEquals()`, `assertTrue()`)进行断言,确保Action方法执行后的结果符合预期。 6. **运行测试**:在Eclipse中,右键点击测试类,选择"Run As" -> "JUnit Test"运行测试,查看测试结果,确保所有测试用例都通过。 在提供的"JavaDemo"目录下,你可能找到以下结构: - `src/main/java`: 包含Struts2 Action类和其他业务逻辑组件。 - `src/test/java`: 存放单元测试代码,每个Action类对应一个测试类。 示例代码可能如下: ```java import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; public class MyActionTest extends StrutsTestCase { private MyAction myAction; @Before public void setUp() { // 初始化Action实例 myAction = new MyAction(); } @Test public void testExecute() { // 模拟依赖,如果有的话 // ... // 调用Action方法 String result = myAction.execute(); // 断言结果 assertEquals("success", result); } } ``` 以上就是对"Struts2框架单元测试代码"的详细解析。通过这样的测试,我们可以确保每个Action的逻辑都能正常工作,提高整体项目的稳定性和可靠性。在实际开发中,确保对所有关键业务逻辑进行充分测试,这将有助于减少bug,提升产品质量。
2024-07-15 15:58:28 11.86MB Struts 单元测试 JUnit Demo
1
官方描述: S2-016:https://cwiki.apache.org/confluence/display/WW/S2-016 S2-017:https://cwiki.apache.org/confluence/display/WW/S2-017 官方建议修复方案:升级到最新版本 struts-2.3.15.1 但通常现有系统升级,可能导致不稳定及与其他框架比如spring等的不兼容,成本较高。 鉴于此csdn网友jzshmyt整理了一种既可以不用升级现有struts版本,有能完美解决这两个漏洞的方案,
2024-05-28 10:42:56 10KB Struts2漏洞
1
官网上下载的netbeans struts2.0插件,可用于netbeans 6.9/7.1/7.2,我的netbeans 7.1能成功安装。
2024-03-31 01:35:34 2.78MB netbeans struts2.0
1
最新的struts2.3.12的API文档CHM(英文)
2024-02-02 08:33:00 2.2MB sturts struts2
1
历史上最全的java权限控制 基础S2SH的,基于servlet的,基于spring的,基于struts2的,很多,很全面。有角色权限,角色组,数据权限,操作权限,查询权限,菜单权限,按钮权限控制,粗粒度的,细粒度的,很多,欢迎下载....
1
项目SSH框架搭建所需jar包,Struts2版本:2.3.3 ,Spring版本:3.2.0 ,Hibernate版本:3.6.10
2023-11-07 14:49:16 16.62MB jar包 ssh
1
这个版本的jar包使用起来很稳定,不会出现一些莫名其妙的异常
2023-10-09 07:04:04 3.13MB struts2 jar
1
带数据库的Struts2项目
2023-08-19 23:11:08 4.59MB Struts2
1
这是一个简单的SSH框架 里面有增删改查方法。
2023-08-19 21:45:18 14.51MB java ssh j2ee
1