1.struts2的整合
a. 主要使用JAR包
commons-io.jar
commons-fileupload-1.2.1.jar
commons-logging-1.0.4.jar
freemarker-2.3.15.jar
ognl-2.7.3.jar
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
b. 配置文件
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>Struts 2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> <init-param> <param-name>config</param-name> <param-value>struts-default.xml,struts-plugin.xml,struts.xml</param-value> </init-param> </filter> <filter-mapping> <filter-name>Struts 2</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> </web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.custom.i18n.resources" value="language" /> <!--国际化支持 --> <constant name="struts.i18n.encoding" value="UTF-8" /> <!--字符集 --> <constant name="struts.action.extension" value="do"/> <!--请求后缀名 --> <!-- <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" /> --> <!-- 指定Struts 2默认的ObjectFactory Bean,该属性默认值是spring--> <constant name="struts.multipart.parser" value="jakarta"/> <!-- 该属性指定处理multipart/form-data的MIME类型(文件上传)请求的框架,该属性支持cos、pell和jakarta等属性值,即分别对应使用cos的文件上传框架、pell上传及common-fileupload文件上传框架。该属性的默认值为jakarta。 注意 如果需要使用cos或者pell的文件上传方式,则应该将对应的JAR文件复制到Web应用中。例如,使用cos上传方式,则需要自己下载cos框架的JAR文件,并将该文件放在WEB-INF/lib路径下--> <constant name="struts.multipart.saveDir" value="/tmp"/> <!--该属性指定上传文件的临时保存路径,该属性的默认值是javax.servlet.context.tempdir。--> <constant name="struts.multipart.maxSize" value="102400"/> <!--该属性指定Struts 2文件上传中整个请求内容允许的最大字节数--> <constant name="struts.ui.theme" value="simple" /> <!--该属性指定视图标签默认的视图主题,该属性的默认值是xhtml--> <constant name="struts.ui.templateDir" value="template" /> <!--该属性指定视图主题所需要模板文件的位置,该属性的默认值是template,即默认加载template路径下的模板文件 --> <constant name="struts.ui.templateSuffix" value="ftl" /> <!--该属性指定模板文件的后缀,该属性的默认属性值是ftl。该属性还允许使用ftl、vm或jsp,分别对应FreeMarker、Velocity和JSP模板 --> <package name="zl-basic" extends="struts-default"> <interceptors> <interceptor name="charsetDecoding" class="com.zl.web.interceptor.CharsetDecodingInterceptor"></interceptor> </interceptors> </package> <package name="zl-default" extends="zl-basic" abstract="true"> <interceptors> <interceptor-stack name="defaultInterceptor"> <interceptor-ref name="charsetDecoding"></interceptor-ref> <interceptor-ref name="servletConfig"/> <interceptor-ref name="prepare"/> <interceptor-ref name="debugging"/> <interceptor-ref name="logger"/> <interceptor-ref name="conversionError"/> <interceptor-ref name="params"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="defaultInterceptor"></default-interceptor-ref> </package> <include file="struts2/struts-test.xml"/> </struts>
c. 出现问题:
由于web.xml中对config进行了配置需要对默认的配置文件进行添加
<init-param> <param-name>config</param-name> <param-value>struts-default.xml,struts-plugin.xml,struts.xml</param-value> </init-param>
在修改默认的拦截栈时需要在新建的拦截栈中添加默认的一些拦截器如
<interceptor-ref name="servletConfig"/> <interceptor-ref name="prepare"/> <interceptor-ref name="debugging"/> <interceptor-ref name="logger"/> <interceptor-ref name="conversionError"/> <interceptor-ref name="params"/>