Struts2 异常处理与文件上传详解

需积分: 1 0 下载量 176 浏览量 更新于2024-08-18 收藏 645KB PPT 举报
"Struts2_PPT6展示了关于Struts2框架的高级特性和异常处理机制,包括文件上传和下载以及Action与JSON的交互。" 在Struts2框架中,异常处理是一个重要的部分,它允许开发者在不直接在Action方法内处理异常的情况下,提供一套统一的错误反馈机制。当Action执行过程中发生异常时,Struts2的拦截器会捕获这些异常,并根据配置将控制流转向预设的错误页面,以便向用户展示异常信息。这样不仅简化了代码,还提高了代码的可维护性。 异常处理的操作步骤如下: 1. 在Action中模拟或自然地抛出异常,例如`NullPointerException`, `UnsupportedOperationException`, 或者`SQLException`。 2. 在`struts.xml`配置文件中,为特定的异常类指定对应的错误页面。例如,如果Action抛出上述三种异常,配置会引导用户至`e1.jsp`页面显示异常信息。 3. 异常配置可以是局部的,只对当前Action生效,也可以是全局的,对所有Action都有效。局部异常配置通常在Action配置中定义,而全局异常配置则在更广泛的范围内应用。 文件上传是Struts2中的另一个关键特性。Struts2本身并不实现文件解析器,而是依赖于第三方组件。它支持三种不同的文件上传解析器:`cos`, `pell`, 和默认的`jakarta`。如果选择非默认解析器,需要导入相应的库文件并更新`struts.properties`配置。无论使用哪种解析器,处理上传文件的代码逻辑保持一致。 在进行文件上传时,需要注意以下几点: 1. 表单(form)标签需要设置`enctype="multipart/form-data"`,以支持文件的上传。 2. 上传的文件会被封装成`File`对象,如`Fileupload`。 3. 上传文件的相关信息会以属性的形式存储,如文件名(`uploadFileName`)和文件类型(`uploadContentType`)。 4. Struts2使用`FileUploadInterceptor`拦截器来处理文件上传的过程。 此外,Struts2还支持Action与JSON的交互,这使得Action方法能够返回JSON格式的数据,方便前端进行AJAX请求和数据处理,增强了Web应用程序的交互性和响应速度。通过配置Action,可以设置返回JSON响应的属性和方法。 总结来说,Struts2的异常处理机制提供了强大的错误处理能力,而文件上传功能则丰富了其对复杂Web应用的支持。结合JSON的使用,Struts2能更好地适应现代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 上传