struts学习笔记(Struts2的入门篇)(1)

struts2的使用

2.1 使用步骤

1)导入strust2的支持jar包

struts学习笔记(Struts2的入门篇)(2)

commons-beautils [beanutils工具包]

commons-filupload.ajr [文件上传]

commons-io.jar

commons-lang [struts2对java.lang.*类的支持]

freemarker.jar [视图显示技术]

javassit [struts2对字节码运算的支持]

ognl.jar [struts2对ognl表达式的支持]

struts2-core.jar [ struts2的核心包 ]

xwork-core.jar [webwork框架的支持,struts2的前身就是webwork(对webwork的封装)]

2)配置启动的全局的过滤器(filter) - 和ActionServlet类似!!!

在web.xml中配置

<!-- 配置启动strut2的全局过滤器 -->

<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>

3)编写不同的业务Action类,编写不同业务方法。默认execute方法。

public class LoginAction implements Action{

//默认方法

public String execute() throws Exception {

System.out.println("执行了LoginAction的execute方法");

return "success";

}

}

4)在src目录下(类路径的根目录下),新建一个struts.xml,配置Action对象

<struts>

<package name="xxx" extends="struts-default">

<!-- 配置Action http://localhost:8080/struts/login.action-->

<action name="login" class="gz.itcast.action.LoginAction">

<result name="success" type="redirect">/index.jsp</result>

</action>

</package>

</struts>

5)访问Action的业务方法

http://localhost:8080/struts/login.action

2.2 struts2框架的作用

strurs2是基于MVC开发模型的web层框架。

struts1也是MVC开发模式的框架。struts2并不是struts1的升级版。

struts2是基于webwork的升级版。struts2=webwork sturts1

struts2的具体功能:

请求数据封装

简化国际化

简化文件上传

后台数据校验

......

2.3 Struts2的执行过程

项目启动:

1)创建核心过滤器StrutsPrepareAndExecuteFilter对象

2)执行核心过滤器的init方法

读取了依次以下的配置:

struts-default.xml [struts2框架的默认配置文件(不需要自定修改)]

struts-plugin.xml [struts2的插件配置文件]

struts.xml [我们写的业务配置文件(包含配置的Action)]

访问资源:

3) 在内存中查询对应的Action配置,得到class内容,创建Action对象。

4)读取Action配置的method内容,执行Action对象对应的方法。

2.4 struts-default.xml文件的详解

1)声明struts2框架运行过程中使用到的一些对象

<bean class="com.opensymphony.xwork2.ObjectFactory" name="xwork" />

2)默认包,包名叫struts-default(注意:我们自己写的package必须继承这个默认包,只有继承了这个默认包才可以使用该默认包下的功能)

<package name="struts-default" abstract="true">

2.1 )跳转类型:

常用的跳转类型

redirect: 重定向到页面

dispatcher: 转发到页面

redirectAction: 重定向到Action

chain: 转发到Action

<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>

2.2 ) 声明拦截器(Interceptor)

struts2默认的拦截器(32个): 完成strutrs2的核心功能。(请求封装,文件上传,国际化..)

拦截器(Intercptor) vs 过滤器(Filter)

过滤器: 可以过滤任何类型的请求(html、servlet、jsp)和响应。加入通用的代码逻辑。

拦截器: 是sturts2的特有功能。只能过滤Action!!在执行Action的时候加入通用的代码。

2.3) 声明拦截器栈 (<interceptor-stack name="basicStack">)

默认拦截器:

<interceptor-stack name="defaultStack"> (18个拦截器)

2.4 ) 默认包当前使用的拦截器:

<default-interceptor-ref name="defaultStack"/>

注意:

我们写的包(package)就是继承struts-default默认包的,那么就继承了默认的18个拦截器

2.5) 当前默认包下的默认Action

<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />

2.5 struts.xml文件详解

该文件是开发者自行配置的业务配置文件。(关键是Action的配置)

1)包(package),用于管理Action,一般可以按模块划分包!!

package: 代表一个包。管理action配置。在用一个包下面不能有同名的action

name: 包名.在一个项目中不能出现同名的包。

extends: 继承。类似于类的继承。如果一个包继承另一个包,那么就会把父包的功能继承下来。

我们开发的包就必须继承struts-default包。

namespace: 名称空间。区分不同的包的访问路径。默认值 “/”

用户访问Action的路径搜索规则:

用户访问: http://localhost:8080/struts/user/a/b/login2.action

先搜索: http://localhost:8080/struts/user/a/b/login2.action 没有, 有就返回

接着搜索: http://localhost:8080/struts/user/a/login2.action 没有, 有就返回

再搜索 : http://localhost:8080/struts/user/login2.action 有, 有就返回 (为止)

abstract: 表示当前包是否抽象。如果当前包是抽象包,那么不能含有action. 抽象包中一般用来定义拦截器,公共视图,不做具体的业务。

2)Action和result的配置

action配置:

name: action的名称。用于访问该Action的路径

class: Action业务对象的类名。一定是全名(包名 类名),这里struts2是用反射构造Action对象的

method: 执行的业务方法。不写默认值 execute

result配置:

name: 视图的标记。在一个Action中名称不要重复!

type: 跳转的类型。

redirect: 重定向

dispatcher: 转发(默认值)

redirectAction: 重定向到Action

chain: 转发到Action。可以在不同Action中通过request共享数据

stream: 用在下载文件的时候。

文本内容: 跳转到的页面或者Action

3)可以通过划分不同的xml文件来管理package

<!-- 包含读取其他xml文件 注意: 声明的顺序就是读取的顺序!!!!-->

<include file="config/struts-book.xml"></include>

<include file="config/struts-user.xml"></include>

,