struts2重点Word文档下载推荐.docx

上传人:b****3 文档编号:18333916 上传时间:2022-12-15 格式:DOCX 页数:30 大小:408.09KB
下载 相关 举报
struts2重点Word文档下载推荐.docx_第1页
第1页 / 共30页
struts2重点Word文档下载推荐.docx_第2页
第2页 / 共30页
struts2重点Word文档下载推荐.docx_第3页
第3页 / 共30页
struts2重点Word文档下载推荐.docx_第4页
第4页 / 共30页
struts2重点Word文档下载推荐.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

struts2重点Word文档下载推荐.docx

《struts2重点Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《struts2重点Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。

struts2重点Word文档下载推荐.docx

1、浏览器发送请求,如login.action(struts2-*.action)(struts1-*.do);

2、核心控制器FilterDispatcher根据请求决定调用合适的action;

3、拦截器链自动对请求应用通用功能,如validation输入验证;

4、回调Action的execute方法,该方法先获取用户请求参数,然后调用业务逻辑组件如JavaBean处理用户请求;

5、Action的execute方法处理结果将输出到浏览器,可以是HTML、JSP,也可以是Velocity、Freemarker等其他模板技术;

从代码层面上看,Struts2需要新加的内容:

*.action(相当于servlet,可以有n个方法如增删改查,默认有个execute方法,根据页面过来的参数调用哪个方法)

result(视图层技术如jsp文件的映射,由struts.xml文件来配置)

struts.xml(struts核心配置文件,完成诸如定义action的映射路径,以及result的定义等功能)

二、初识Struts2——HelloWorld

实现目标:

地址栏输入http:

//localhost:

88/Struts2HelloWorld/helloworld.jsp,输入用户名,交由http:

88/Struts2HelloWorld/hello.action处理,返回到helloworld.jsp视图层,并显示刚才输入的值;

步骤:

1、MyElipse下新建一个叫struts2hello的web工程;

2、将struts2的jar包copy到WEB-INF/lib/目录下;

3、修改web.xml文件,配置Struts2的核心Filter;

<

filter>

<

filter-name>

struts2<

/filter-name>

filter-class>

org.apache.struts2.dispatcher.FilterDispatcher<

/filter-class>

/filter>

filter-mapping>

url-pattern>

/*.action<

/url-pattern>

/filter-mapping>

4、在src目录下增加struts.xml配置文件;

<

?

xmlversion="

1.0"

encoding="

UTF-8"

>

!

DOCTYPEstrutsPUBLIC

"

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

http:

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

struts>

includefile="

struts-default.xml"

/>

constantname="

struts.i18n.encoding"

value="

GBK"

packagename="

default"

extends="

struts-default"

global-results>

<

resultname="

login"

login.jsp<

/result>

index"

index.jsp<

/global-results>

actionname="

UserAction"

class="

com.app.action.UserAction"

/package>

/struts>

5、实现控制器

packagecom.app.hello;

importcom.opensymphony.xwork2.Action;

//POJO(PlainObjectJavaObject低侵入式)

publicclassUserWorldimplementsAction{

//获取页面上的控件,只需要要在这里注入对应的属性,提供setter和getter方法即可。

(名称要完全一样)

privateUseruser;

privateUserDAOuserDAO=newUserDAO();

//action默认执行方法

publicStringexecute(){

if(!

userDAO.login(user.getUsername(),user.getPassword())){

ActionContextac=ActionContext.getContext();

ac.put("

msg"

"

登陆信息有误"

);

//request.setAttribute("

"

);

}else{

return"

;

//转发到逻辑视图对应的页面

}

return"

}

publicUsergetUser(){

returnuser;

publicvoidsetUser(Useruser){

this.user=user;

//http:

8080/Struts2HelloWorld/hello!

aliasAction.action

publicStringaliasAction(){

name="

success"

}

6、修改struts.xml文件,添加Action的映射和逻辑视图转向,在<

中添加如下内容;

hello"

com.app.hello.HelloWorld"

/helloworld.jsp<

/action>

7、添加JSP视图层,取名helloworld.jsp

%@pagecontentType="

text/html;

charset=utf-8"

%>

%@taglibprefix="

s"

uri="

/struts-tags"

%@pageisELIgnored="

false"

DOCTYPEHTMLPUBLIC"

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

html>

head>

metahttp-equiv="

Content-Type"

content="

charset=gb2312"

title>

SayHello<

/title>

/head>

body>

h3>

Say"

Hello"

to:

/h3>

s:

propertyvalue="

name"

/>

${name}

formaction="

Name:

textfieldname="

submit/>

/s:

form>

/body>

/html>

三、Struts2基础

3.1、核心控制器FilterDispatcher

FilterDispatcher是Struts2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求。

如果用户请求以*.action结尾,该请求将被转入struts2框架进行处理。

Struts2获得*.action请求后,将查找struts.xml文件的配置信息,改文件配置了action的name和class属性,其中name属性决定了该action处理哪个用户请求,而class属性决定了action的实现类。

Struts2用于处理用户请求的action实例,并不是用户实现的业务控制器,而是action代理——因为用户实现的业务控制器并没有与servletAPI耦合,显然无法处理用户请求。

而Struts2框架提供了系列拦截器,该拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到action中,并回调action的execute方法来处理用户请求。

3.2、业务控制器

业务控制器组件就是用户需要实现的Action类,该类包含一个execute方法,该方法返回一个字符串,字符串就是一个逻辑视图名——对应于一个JSP文件或其他视图层技术;

程序员实现完action后,需要在struts.xml配置action三个部分:

1、action处理的url;

2、action对应的实现类;

3、action里包含的逻辑视图与物理资源间的对应关系;

如:

input"

3.3、模型组件

模型组建包括实体bean和业务逻辑bean,或其他J2EE组件,如EJB等技术;

3.4、视图组件

Struts2改变了Struts1只能使用JSP作为视图层技术的现状。

允许使用如Freemarker、Velocity等模板技术;

每个action都有result子元素,定义逻辑视图名与物理资源的映射关系。

3.5、Struts2基本配置

3.5.1、配置web.xml

配置加载struts2标签库(如果web应用使用sevlet2.4以上的规范,无需配置因为它会自动加载标签库文件)

1、配置FilterDispatcher核心控制器类;

2、标签库;

需要把TLD描述文件COPY到WEB-INF/下;

taglib>

taglib-location>

/WEB-INF/tld/*.tld<

/taglib-location>

//TLD文件真实路径

taglib-uri>

/WEB-INF/tld/*.tld<

/taglib-uri>

//引用位置

/taglib>

想在jsp文件使用该标签:

%@tagliburi=””prefix=”s”%>

3.5.2、配置struts.xml

避免struts.xml文件过于臃肿,可以分拆成多个配置文件,然后包含进来;

//包含默认的xml文件

3.5.1、配置struts.properties属性文件

struts.properties应该放在WEB-INF/classes下,该文件包含了系列的key-value对象,每个key就是一个属性,对应的value就是值;

常见的key:

//设置web应用的默认编码,相当于request.setCharacterEncoding(“GBK”)

struts.i18n.encoding=GBK

//每次进来http请求时,是否重新加载国际化资源文件;

开发阶段应该设为true,发布阶段为false

struts.i18n.reload=false

//定义国际化资源文件的baseName

struts.custom.i18n.resources=globalMessages

有时候开发人员不喜欢使用额外的struts.properties文件,也可以在struts.xml通过配置constant元素,一样可以配置属性:

--指定国际化资源文件的baseName-->

struts.custom.i18n.resources"

globalMessages"

3.5.1、struts.xml文件结构

includefile=”struts-default.xml”/>

constantname=”struts.i18n.encoding”>

GBK<

/constant>

packagename=”default”extends=”struts-default”namespace=”/”>

--全局逻辑视图的定义-->

resultname=”input”>

/input.jsp<

actionclass=”com.app.action.UserAction”name=”user”method=”方法名(可选)”>

四、深入Struts2

4.1、深入struts2.xml配置文件

4.1.1、常量配置

可以在struts.xml也可以在struts.properties文件配置属性;

constantname=”struts.i18n.encoding”value=”GBK”/>

Struts框架按照如下顺序加载常量:

struts-default.xml

struts.xml

struts.properties(可以把struts.xml文件里的constant部分丢过来,利于管理)

web.xml

若同名,后面的会覆盖前一个;

4.1.2、包配置

Struts2核心组件是Action和拦截器,struts2用包来管理它们。

每个包就是多个Action和拦截器的集合。

下例定义了一个default包,并继承struts默认的包:

namespace=”/”>

8080/项目名/hello.action

actionname=”hello”class=””/>

a"

namespace=”/a”>

b"

namespace=”/b”>

name属性:

必填,包名,改名字是被其他包引用的key;

extends属性:

可选,改包继承其他包,自动拥有对方的action和拦截器等;

namespace属性:

可选,定义包的命名空间;

abstract属性:

可选,值为true|false,若为true,则改包为抽象包,不能包含action定义。

4.1.3、命名空间配置NameSpace

考虑到同一个web应用需要同名的action,struts2以命名空间来管理action,同一个命名空间不能有同名的action,不同的命名空间可以有同名的action;

Struts2通过为包指定namespace属性来为包下的所有action指定共同的命名空间;

--配置Action和逻辑视图-->

com.app.package1.HelloWorld"

admin"

namespace="

/admin"

com.app.package2.HelloWorld"

上例配置了两个包,admin包指定了/admin命名空间,也就是说它能处理

88/Struts2HelloWorld/admin/hello.action下的所有URL请求;

对于default包,没有指定命名空间,那么默认它的命名空间是“”;

可以为包显示指定根命名空间为”/”;

如果请求为/barspace/bar.action,系统首先查找/barspace命名空间里名为bar的action,如果有,则调用改action处理请求,否则会去默认命名空间去找;

若都找不到,系统会报错误;

4.1.4、包含配置

包含配置允许将一个struts.xml分拆成多个以便于管理;

每个被包含的文件都是标准的struts2配置文件;

struts-shop.xml"

struts-user.xml"

4.1.5、异常处理配置

在程序中出现异常可以尽管往外抛,由统一接口做页面处理

%@pageerrorPage=”url”%>

在异常处理页中处理异常:

%@pageisErrorPage=”true”%>

%

try{}catch(Exceptione){}

%>

package 

name="

bbs2009_default"

extends="

result 

error"

/error.jsp<

global-exception-mappings>

exception-mapping 

result="

exception="

java.lang.Exception"

/global-exception-mappings>

这样抛出的异常java.lang.Exception由struts2处理,跳转到/error.jsp页面。

这个异常声明是全局的,也可以声明成局部的。

4.1.6、拦截器配置

拦截器允许在action处理请求之前或者之后,插入开发者自定义的代码;

详细请参考拦截器配置

4.2、Strus2的Action

4.2.1、实现Action

要点:

1、Struts2的Action属于低侵入式设计,不需要实现任何接口或者继承类。

也就是一个普通的POJO;

2、使用Action里的属性封装请求参数以及处理后的结果,对应给每个属性添加setXXX和getXXX方法;

可以利用<

propertyvalue=”username”/>

或者{$username}输出属性的值;

可以封装任何类型,包括自定义的类、数字、集合类、MAP等数据类型;

3、可以实现Action接口或者继承ActionSupport类,以利用其中的方法,增强功能;

4.2.2、Action访问ServletAPI

Struts2提供了一个ActionContext类来访问ServletAPI,使用request、session、application对象;

//实例化ActionContext用来访问ServletAPI

if(getUsername().equals("

tiger"

)&

&

getPw().equals("

1"

)){

//获取application的count属性

Integercount=(Integer)ac.getApplication().get("

count"

if(count==null)

count=1;

else

count++;

//设置application的count属性

ac.getApplication().put("

count);

//设置session的username属性

ac.getSession().put("

username"

//设置request的msg属性,相当于request.setAttribute(key,value)

ac.put("

你已成功登陆"

returnSUCCESS;

登陆失败"

returnLOGIN;

4.2.3、Action直接访问Servl

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

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1