一 下载struts环境,解压后打开看到app,docs,lib,src
app:struts2-blank是空的struts配置环境可以直接导入使用
src:struts源代码
二搭建环境,最方便的做法就是直接导入struts2-blank,或者
1.先导入jar包
必选
上传文件
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
模板语言
freemarker-2.3.16.jar
分析、编辑和创建Java字节码的类库
javassist-3.7.ga.jar
核心库
ognl-3.0.jar
xwork-core-2.2.1.1.jar(webwork的core)
struts2-core-2.2.1.1.jar
可选
使用Struts sx标签
struts2-dojo-plugin-2.1.8.jar
数据校验
commons-validator-1.3.1.jar
与Spring整合
struts2-spring-plugin-2.2.1.1.jar
2.配置web.xml配置filter(和struts1配置actionServlet不同,struts2是基于filter的)
<filter>
<filter-name>struts2_00</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2_00</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3拷贝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>
</struts>
4.启动项目正常启动则ok
三 小例子
第一种方式
1编写action(与struts1不同,这里是多例。在编写struts1的Action的时候务必要小心线程安全问题 , 而struts2中该问题不复存在)
public class HelloWorldAction {
public String helloWorld2(){
return "success";
}
}
2在struts.xml中配置
<package name="" namespace = "/" extends="struts-default">
<!-- 服务器启动时就会加载该配置文件 -->
<action name="helloWorld" class="com.pk.web.action.HelloWorldAction" method="helloWorld">
<result name="success" type="dispatcher">/index.jsp</result>
</action>
第二种方式
action实现Action(下面是他的代码)起到代码规范
public interface Action {
public static final String SUCESS= "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
public String execute() throws Exception;
}
其中INPUT表示数据格式错误
LOGIN:表示验证登陆
第三种方式
action继承ActionSupport
ActionSupport类实现了Action,Validateable,ValidationAware, TextProvider, LocaleProvider, Serializable接口,同时提供了国际化和校验的方法,这样可以大大简化Action的编写,在工作中,通常采用这种方式完成Action的定义。
四 请求流程解释
1.首先启动服务器,启动后查看console是否报错。
首先加载web.xml,其中加载filter等待拦截请求
2发送请求
访问方式一 action = "register!register.action" register指的是action的名字,“!”后跟方法名字。 表示调用action名为register所表示类的register方法
访问方式二 action = "register"若不指定就会调用method指定的方法,默认为execute。表示执行这个action调用method指定方法
3.过滤器拦截请求路径(namespace+actionname+struts.action.extension)其中会找struts.action.extension
找的顺序如下:
1.struts2-core-2.2.1.1.jar/struts-default.xml(最最低)
2.struts2-core-2.2.1.1.jar/org/apache/struts2/default.properties(最低)
3.%class_path%/struts.xml(低)(推荐)
4.%class_path%/struts.properties
5.web.xml(高)<init-parm/>
找到对应的action后就会执行extend=“”中的代码一般为struts-default(bean+abstract包(
返回类型、拦截器、拦截器栈、默认的拦截器和默认的Action))依次执行(若有自定义的也执行)。
4.执行action中的方法并返回String常量然后再执行extend中(若有自定义的也执行)一系列的连接器由返回类型中的一个类进行跳转
五认识struts的配置文件
暂停吃饭去