第10章 Structs2框架技术Word文档下载推荐.docx

上传人:b****1 文档编号:284856 上传时间:2023-04-28 格式:DOCX 页数:30 大小:709.78KB
下载 相关 举报
第10章 Structs2框架技术Word文档下载推荐.docx_第1页
第1页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第2页
第2页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第3页
第3页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第4页
第4页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第5页
第5页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第6页
第6页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第7页
第7页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第8页
第8页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第9页
第9页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第10页
第10页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第11页
第11页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第12页
第12页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第13页
第13页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第14页
第14页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第15页
第15页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第16页
第16页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第17页
第17页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第18页
第18页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第19页
第19页 / 共30页
第10章 Structs2框架技术Word文档下载推荐.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第10章 Structs2框架技术Word文档下载推荐.docx

《第10章 Structs2框架技术Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第10章 Structs2框架技术Word文档下载推荐.docx(30页珍藏版)》请在冰点文库上搜索。

第10章 Structs2框架技术Word文档下载推荐.docx

注意:

lib目录下有很多JAR文件,对于基本的Struts2Web项目至少要:

struts2-core-2.2.2.1.jar;

xwork-2.2.1.1.jar;

ognl-3.0.jar;

freemarker-2.3.16.jar;

commons-fileupload-1.2.1.jar;

commons-io-1.3.2.jar

且勿把Struts2软件包中所有的JAR文件都添加到项目中,因为其中的某些JAR文件依赖于其他的JAR文件(而这些JAR文件不在Struts2软件包中),添加到项目中会造成项目不能运行。

Struts2的安装步骤

o复制上述JAR文件至WEB-INF/lib目录下web.xml中配置struts拦截器<

filter>

ostruts拦截器<

filter>

内容

<

filter>

<

!

--定义Struts2的核心Filter名称为struts2-->

filter-name>

struts2<

/filter-name>

--指定核心Filter的实现类-->

filter-class>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

/filter-class>

/filter>

filter-mapping>

--设置应用struts2核心Filter的URL映射-->

url-pattern>

/*<

/url-pattern>

/filter-mapping>

o在src目录下创建struts.xml。

该文件是Struts2的核心配置文件。

?

xmlversion="

1.0"

encoding="

UTF-8"

>

DOCTYPEstrutsPUBLIC

"

-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"

http:

//struts.apache.org/dtds/struts-2.0.dtd"

struts>

……

/struts>

经过以上三步,就可以在Javaweb中添加了Structs2框架的支持。

10.2Structs2简单示例

内容:

一个支持Struts2框架的JavaWeb应用项目。

在index.jsp页面输入姓名,在hello.jsp页面输出用户姓名。

•在Eclipse新建一个支持Struts2框架的JavaWeb应用项目;

•配置web.xml;

•创建struts.xml;

•创建Action及JSP页面。

第一步:

创建dynamicwebproject项目,把Structs2的包放入WEB-INF中的lib中,

创建index.jsp

%@pagelanguage="

java"

contentType="

text/html;

charset=UTF-8"

pageEncoding="

%>

DOCTYPEhtmlPUBLIC"

-//W3C//DTDHTML4.01Transitional//EN"

"

//www.w3.org/TR/html4/loose.dtd"

html>

head>

metahttp-equiv="

Content-Type"

content="

title>

第一个Struts简单示例<

/title>

/head>

body>

formaction="

user/HelloAction"

method="

post"

请输入你的大名:

inputtype="

text"

name="

username"

/>

br>

submit"

value="

提交"

/form>

/body>

/html>

第二步创建HelloAction类。

packagecom.jlp.action;

//导入ActionSupport类,用户自定义的StrutsAction需要继承此类

importcom.opensymphony.xwork2.ActionSupport;

/**

*HelloAction类,处理Struts2的业务逻辑

*/

publicclassHelloActionextendsActionSupport{

//定义一个私有成员变量name,用于获取表单中对应名称输入域的信息。

privateStringusername;

//setter和getter

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

//覆盖ActionSupport类的execute()方法,用于处理业务逻辑,并返回相应结果视图

publicStringexecute()

{

//返回SUCCESS代表的视图

returnSUCCESS;

}

第三步定义处理结果视图hello.jsp.

结果<

hello,${username}

第四步在Struts.xml中配置Action

在src中建立struts.xml文件并写入以下内容

encoding="

DOCTYPEstrutsPUBLIC

packagename="

default"

namespace="

/user"

extends="

struts-default"

actionname="

HelloAction"

class="

com.jlp.action.HelloAction"

<

resultname="

success"

/WEB-INF/pages/hello.jsp<

/result>

/action>

/package>

整个文件如下:

 

运行结果:

10.1.3STRUTS2工作流程

Struts应用开发流程是按:

“请求-响应”式开发的。

开发流程:

客户端向Web容器(如Tomcat)发送请求(如请求访问index.jsp)。

第二步:

请求经过一系列的过滤器的过滤之后,把该请求传递给Struts2的核心过滤器StrutsPrepareAndExecuteFilter。

第三步:

核心过滤器接收到请求信息之后,会根据请求的URL(如/login/HelloAction)搜索Action的映射信息。

第四步:

如找到对应的映射信息,则在struts.xml文件中对应定义的Action(如HelloAction)被实例化,并且执行该Action实例的execute()方法,处理用户请求信息。

此外,如果在struts.xml文件中还定义了被请求Action的一些拦截器,那么该Action实例被调用前后,这些拦截器也会被先后执行。

第五步:

Action对请求处理完毕以后将返回一个逻辑视图,该逻辑视图将在struts.xml文件的相应<

result>

元素中寻找对应的物理视图(如在HelloAction中SUCCESS对应于/WEB-INF/page/hello.jsp),并返回给客户端。

10.2.Struts2核心概念

Struts2框架默认的配置文件为struts.xml,在eclipse开发工具中,直接放在src中。

配置元素名称

功能描述

include

包含其他的XML配置文件

constant

配置常量信息

package

包含一系列Action及拦截器配置信息,便于对Action进行统一管理

default-action-ref

配置默认Action

default-interceptor-ref

配置默认拦截器,对package范围内所有的Action有效

global-results

配置全局结果集,对package范围内所有的Action有效

interceptors

包含一系列拦截器配置信息

interceptor

配置一个拦截器,一般嵌套在<

interceptors>

元素内

interceptor-stack

配置拦截器堆栈信息,一般嵌套在<

interceptor-ref

配置Action应用的拦截器,嵌套在<

interceptor-stack>

,<

action>

等元素内

action

包含与Action操作相关的一系列配置信息

result

配置Action的结果映射,嵌套在<

元素之内

param

配置参数信息,一般嵌套在<

global-result>

◆struts.xml--<

include>

元素

作用:

原则上讲,一个Web项目的所有配置都可以放在struts.xml文件中,但随着应用规模的扩大,将直接导致struts.xml文件越来越臃肿,难以维护。

解决的方法就是把不同模块的配置信息放在不同的XML文件中,然后在struts.xml文件使用<

元素把这些XML文件包含在struts.xml中。

includefile="

struts-login.xml"

/include>

◆struts.xml--<

constant>

使用<

元素可以定义一些Web应用中使用的常量

constant 

name="

struts.i18n.encoding"

value="

/>

package>

Struts2框架的核心组件是Action和拦截器等,Struts2框架使用包(package)来管理Action和拦截器等。

包是多个Action、多个拦截器和多个拦截器引用的集合。

元素配置包的信息,每个<

元素定义一个包的配置。

●name属性:

必选属性,指定该包的名字,是引用该包的唯一标识。

●namespace属性:

可选属性,定义该包的命名空间。

namespace属性值和Action名称组合在一起,在项目中决定了该Action的URL。

●extends属性:

可选属性,在Struts2中,包也是可以继承的,extends属性的作用是指定该包是否继承其他的包。

包可以继承一个或多个父包的中Action定义、拦截器定义、拦截器栈等配置。

●abstract属性:

可选属性,若该属性值为“true”表示该包为抽象包,在抽象包中不能有任何Action定义。

Struts2的配置文件总是从上到下处理的,所以在struts.xml文件中父包的定义应该在子包的前面。

另外,关于namespace属性的使用需要注意以下几点:

元素若没有指定namespace属性,则该包使用默认的命名空间,默认的命名空间总是"

若设置namespace属性值为“/”时,即指定了包的命名空间为根命名空间,此时所有根路径下的Action请求都会去这个包中查找对应的资源信息。

若一个<

元素指定namespace="

/ch10"

,必须注意的是“ch10”前的斜线“/”不能省略,并且该包下所有的Action处理的URL应该是“/ch10/Action名”,其完整的URL为http:

//主机地址:

端口/上下文路径/ch10/XXXAction.action。

Struts2查找Action的次序为:

先在指定的路径下查找Action;

如果找不到则会去默认的路径找Action;

如果仍找到,则抛出异常。

另外,当默认命名空间中存在与根命名空间同名的Action时,根命名空间的配置信息优先级高于默认命名空间中的配置信息。

命名空间只有一个级别,例如一个Action的URL为“/a/b/get.action”,则系统将先在“/a/b”的命名空间下查找,如果找不到,就直接到默认命名空间查找get.action,而不是在“/a”的命名空间下查找。

Struts2以命名空间的方式来管理Action,同一个命名空间不能有同名的Action。

不同的命名空间可以有同名的Action。

在struts.xml配置文件中,可以配置多个<

元素,但每<

元素中的namespace的属性值必须是唯一的。

元素用来配置Action,该元素需嵌套在<

元素内,它包含如下属性:

name属性:

必选属性,用来设定Action的名称。

class属性:

可选属性,指定Action处理类对应的具体路径,若省略该属性,表示使用的是默认Action即ActionSupport类。

method属性:

可选属性,指定Action中的方法名。

converter属性:

可选属性,指定Action使用的类型转换器,其值可为true或false,默认为true,即使用类型转换器。

例子

*"

类名,类似于javabean"

{1}User"

{1}"

/web-inf/page/{1}.jsp<

在里面的意义:

若<

未配置method属性,则请求会被转发到Action中的execute()方法进行处理。

但很多情况下Action可能需要处理多个业务逻辑,那么就需要在Action中定义多个方法以处理不同的业务逻辑,那么在<

元素中配置method属性,就可以在请求Action时把不同的请求转发给相应的方法进行处理。

default-action-ref>

当一个Action在指定命名空间和默认命名空间都找不到该Action时,就会抛出一个“HTTP404”错误信息,此时可使用<

元素指定一个默认的Action,当配置文件中没有与请求Action匹配的信息时,Struts2框架就会自动调用这个默认的Action去处理。

ch10"

default-action-refname="

ErrorAction"

/default-action-ref>

/error/actionError.jsp<

用于配置Action的结果映射,既可以配置常规的结果映射,也可以实现动态结果映射,即根据请求动态决定返回哪个视图。

常见的映射类型有dispatcher、redirectAction、redirect、plainText等。

元素下的主要属性包括:

type属性:

可选属性,type属性用于指定跳转至结果视图的方式,如省略该属性表示默认的类型为dispatcher。

可选属性,表示逻辑视图的名称,默认为SUCCESS。

10.2.2Action详解

在struts2框架中,Action负责处理业务逻辑,是整个struts2应用的核心。

1.Action类的基本格式

Action类的基本格式:

publicclassXXXActionextendsActionSupport{

//定义一个私有成员变量name,用于封装HTTP请求参数的属性。

privateStringname;

……

publicStringgetName(){

returnname;

publicvoidsetName(Stringname){

this.name=name;

……

//覆盖ActionSupport类的execute()方法,用于处理业务逻辑并返回相应的结果视图

{//省略具体的业务逻辑

//其它方法

2.Action接口和ActionSupport类

Action接口和ActionSupport类在com.opensymphony.xwork包中。

其中,Action接口定义了5个字符串常量

SUCCESS

NONE

ERROR

INPUT

LOGIN,

另外还定义了一个返回字符串类型的execute()方法。

ActionSuport类是一个默认的Action实现类,如果一个Action在struts.xml配置文件的<

元素中没有指定class属性,那么默认该Action为ActionSupport类。

在ActionSupport类中除了实现Action接口之外,该类还增加了获取国际化信息的方法getText()、数据校验的方法validate()、默认的处理用户请求的方法execute()等。

3.调用含有多个方法的action

在一个Action中集成了多个业务逻辑的方法。

先看一个含多个方法的Act

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2