一.引入核心库
Struts2需要的核心类库:
struts2-core-2.3.16.jar:Struts2的核心库
xwork-core-2.3.16.jar:WebWork的核心库
ognl-3.0.6.jar:OGNL表达式需要的库,struts2通过ognl读写对象的属性
freemarker-2.3.19.jar:Struts2 UI标签模板
commons-logging-1.1.3.jar:日志管理
commons-fileupload-1.3.jar:文件上传下载
commons-lang3-3.1.jar
javassist-3.11.0.GA.jar
commons-io-2.2.jar
将以上jar包加入web-inf下的lib文件夹。
二.编写struts2配置文件struts.xml
struts2.xml主要负责业务逻辑控制器Action,Bean,常量,包,拦截器的配置,默认情况下Struts2会自动加载Web应用WEB-INF/classes目录下的struts.xml文件。
最简单的struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
</struts>
<struts>的子节点主要包含以下配置:
1.常量配置
例:配置web应用的默认编码集:
<constant name="struts.i18n.encoding" value="GBK" />
2.Bean配置
用于像框架注入一个组件的实例。
<bean class="实现类全名"></bean>
bean元素有以下属性:
class:指定此Bean对应的实现类。
name:指定Bean实例的名字。
type:指定Bean实现的接口
scope:指定Bean作用范围
static:指定Bean是否使用静态方法注入
optional:指定是否是一个可选的Bean。
3.Action配置
<action name="action1" class="com.test.Action" method="test">
<result name="success">index.jsp</result>
</action>
该配置指定了action1的实现类是com.test.Action,由其test()方法处理。result元素指定返回的页面。
4.包含配置
<include file="example.xml"/>
通过这种方法引用其他配置文件,提高了可读性,通常情况下,被包含的文件也放在WEB-INF/classes下。
5.包配置
<package name="default" namespace="/" extends="struts-default">
<action name="index">
<result type="redirectAction">
<param name="actionName">HelloWorld</param>
<param name="namespace">/example</param>
</result>
</action>
<action name="action1">
<result name="success">index.jsp</result>
</action>
</package>
pacakge元素定义了包,包下可以包含多个action和拦截器,它具有以下属性:
1.name:指定包名
2.extends:指定需要继承的包,通过继承可以使用在其他包中定义的action,拦截器等。
3.namespace:定义该包的命名空间,定义的命名空间会作为action访问路径的一部分
4.abstract:是否是抽象包,如果是一个抽象包,则不能在其中定义action。
三.配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>Struts Blank</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>