Struts2框架详解与优势

需积分: 0 2 下载量 133 浏览量 更新于2024-07-29 收藏 373KB PPT 举报
"传智播客Struts2教程_PPT.ppt" Struts2是一个流行的Java Web框架,由WebWork2发展而来,它基于Model-View-Controller(MVC)架构模式,旨在简化企业级应用程序的开发。Struts2在设计上与Struts1有很大区别,尤其是在减少代码耦合度方面,它采取了无侵入式设计,使得应用可以独立于Servlet API和Struts API运行。这种设计使得开发者能够更灵活地进行项目构建,降低了维护成本。 在Struts2中,一个典型的Action类不再需要继承自特定的Action基类,如`Action`或`ActionSupport`,而是可以直接处理业务逻辑,减少了对特定API的依赖。例如,传统的Struts1 Action代码如下: ```java public class OrderListAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { } } ``` 而在Struts2中,Action类可以更加简洁,不需直接处理HTTP请求和响应,如下所示: ```java public class OrderListAction { public String execute() { // 业务逻辑 return "success"; } } ``` Struts2引入了拦截器(Interceptor)机制,这是它的一大亮点。拦截器允许开发者实现面向切面编程(AOP),可以用于日志记录、权限控制、事务管理等多种场景。通过配置拦截器栈,开发者可以轻松地定义和管理这些行为。 此外,Struts2还提供了内置的类型转换器,自动将HTTP请求参数转换为Java对象的属性,无需手动注册转换器,如在Struts1中通常需要做的那样。这增强了代码的可读性和可维护性。 Struts2支持多种视图技术,包括JSP、FreeMarker和Velocity等,这给开发者带来了更多的选择,可以根据项目的具体需求来选择最适合的模板语言。 输入验证是Struts2的一个显著改进,它可以针对特定的方法进行,而不仅仅是表单级别,提高了代码的复用性和灵活性。这在Struts1中是个长期存在的问题,通常需要在ActionForm中进行验证。 国际化(i18n)资源管理在Struts2中得到了强化,支持全局、包级别和Action级别的资源文件,方便开发者处理多语言应用的需求。 搭建Struts2开发环境通常涉及以下步骤: 1. 获取Struts2相关的jar文件,包括Struts2的核心库和其他依赖库。 2. 编写Struts2的配置文件,通常是`struts.xml`,用于定义Action、拦截器、结果页面等。 3. 在`web.xml`中配置Struts2的前端控制器(Front Controller),即`StrutsPrepareAndExecuteFilter`,以启用Struts2框架。 通过以上讲解,我们可以看到Struts2在易用性、灵活性和功能扩展性上都比Struts1有所提升,是Java Web开发中一个强大且受欢迎的选择。

我用Spring5的aop应用时报这个错误Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [D:\ecliple\web5\WEB-INF\applicationContext.xml]; nested exception is java.nio.file.NoSuchFileException: WEB-INF\applicationContext.xml,他说我的applicationContext.xml文件不存在,可是我明明有这个文件,另外我的web.xml需要更改吗<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <context-param> <param-name>contextConfigLocation </param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <display-name>Struts2</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter> <filter-name>OpenSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>OpenSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/* </url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>

2023-05-30 上传