struts2自学完全文档.docx

上传人:b****3 文档编号:5458616 上传时间:2023-05-08 格式:DOCX 页数:47 大小:816.39KB
下载 相关 举报
struts2自学完全文档.docx_第1页
第1页 / 共47页
struts2自学完全文档.docx_第2页
第2页 / 共47页
struts2自学完全文档.docx_第3页
第3页 / 共47页
struts2自学完全文档.docx_第4页
第4页 / 共47页
struts2自学完全文档.docx_第5页
第5页 / 共47页
struts2自学完全文档.docx_第6页
第6页 / 共47页
struts2自学完全文档.docx_第7页
第7页 / 共47页
struts2自学完全文档.docx_第8页
第8页 / 共47页
struts2自学完全文档.docx_第9页
第9页 / 共47页
struts2自学完全文档.docx_第10页
第10页 / 共47页
struts2自学完全文档.docx_第11页
第11页 / 共47页
struts2自学完全文档.docx_第12页
第12页 / 共47页
struts2自学完全文档.docx_第13页
第13页 / 共47页
struts2自学完全文档.docx_第14页
第14页 / 共47页
struts2自学完全文档.docx_第15页
第15页 / 共47页
struts2自学完全文档.docx_第16页
第16页 / 共47页
struts2自学完全文档.docx_第17页
第17页 / 共47页
struts2自学完全文档.docx_第18页
第18页 / 共47页
struts2自学完全文档.docx_第19页
第19页 / 共47页
struts2自学完全文档.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

struts2自学完全文档.docx

《struts2自学完全文档.docx》由会员分享,可在线阅读,更多相关《struts2自学完全文档.docx(47页珍藏版)》请在冰点文库上搜索。

struts2自学完全文档.docx

struts2自学完全文档

一.Struts2基础知识

1.struts2的特点及配置

1.1struts2与struts1的比较

1)在软件设计上struts2没有struts1那样跟ServletApi和StrutsApi有着紧密的耦合,Struts2的应用可以不因爱ServletApi和StrutsApi.struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计

publicclassOrderListActionectendsAction//struts依赖于java

2)Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能

3)Struts2提供了类型转换器,我们可以把特殊的请求参数转换成我们需要的类型,在struts1中,如果我们实现同样的功能,就必须向struts1的底层实现BeanUtil注册类型转换器

4)Struts2提供了支持多种表现层技术,如JSp,freeMarker等

5)Struts2的输入校验可以对指定方法进行校验,解决了Struts的长久之疼

6)提供了全局范围,包范围和Action范围的国际化资源文件管理实现

1.2搭建struts2的开发环境

1)新建web项目

2)导入必要的包

3)写配置文件

Struts2默认的配置文件为Struts.xml,该文件需要存放在WEB-INF/classes下,该文件的配置模板如下(在myeclipse中放在src目录下就可以了)模板在

D:

\ProgramFiles\struts-2.3.4.1-all\struts-2.3.4.1\apps解压struts2-blank.var再打开web-info/classes中的struts.xml文件即可

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"

"http:

//struts.apache.org/dtds/struts-2.3.dtd">

4)在web.xml中加入Struts2MVC框架启动配置

在struts1.x中struts框架是通过Servlet启动的,在struts2中,struts框架式通过Filter启动的,他在web.xml中的配置如下:

(D:

\ProgramFiles\struts-2.3.4.1-all\struts-2.3.4.1\apps解压struts2-blank.var再打开Web-Info\web.xml即可)

struts2

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

—自从struts2.1.3以后,下面的FilterDispatcher已经标注为过时org.apache.struts2.dispatcher.ng.filter.FilterDispather-->

struts2

/*

在StrutsPrepareAndEXecuteFilter()方法中将会读取类路径下的默认文件struts.xml完成初始化操作。

(注意:

struts2读取到struts.xml的内容后,以javabean形式存放在内存中,以后struts2对用户的每次请求处理将使用内存中的数据,而不是每次读取struts.xml文件)

 

2第一个strut2应用及属性分析

/WEB-INF/page/hello.jsp

2.1Struts.xml中的属性

1)在struts2框架中使用包来管理Action,包的作用和java中的类包是非常的类似的,它主要管理一组业务功能相关的action,在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。

2)配置包时必须指定name属性,该name属性值可以任意的取名,但是必须是唯一的它不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用。

包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下Action的路径的一部分,如访问上面的例子Action,访问路径为/test/helloworld.action.

namespace属性可以不配置,对本例而言,如果不指定该属性,默认命名空间为“”(空字符串)

3)通常每个包都应该继承Struts-default包,因为struts2很多核心的功能都是拦截器实现的。

如:

从请求中把请求参数封装的action,文件上传和数据验证等等都是通过拦截器实现的,struts-default定义了这些拦截器和Result类型.可以这么说:

当包继承了struts-default才能使用struts2提供的核心的功能。

(在struts2-core-2.X.X.jar文件中的struts-default.xml中定义)

4)包还可以通过abstract=“true”定义为抽象包,抽象包中只能被继承不能包含action

5)method为交给谁处理,result用来定义视图的(类似forward)

2.2第一个程序

实现的类

package.hewei.action;

publicclassHellowWorldAction{

privateStringmessage;

publicStringgetMessage(){

//这里一定注意el表达式,是读取的getMessage()中的message

returnmessage;

}

publicStringexecute(){

message="我的第一个struts程序";

return"success";

}

}

struts.xml文件

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"

"http:

//struts.apache.org/dtds/struts-2.3.dtd">

/WEB-INF/page/hellow.jsp

hellow.jsp

<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>

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

MyJSP'hellow.jsp'startingpage

${message}

—el表达式根据get方法得到值-->

访问:

http:

//localhost:

8081/MyStruts2/test/helloworld

2.3开发时的一些细节

1)如果在myeclipse中按下alt+/没有提示怎么办

原因:

没有提示是因为/struts-2.3.dtd文件是在网络上的,不连网无法获得

解决方法:

联网或者

●搜索到这个文件的位置

●在myeclipse中点击window/proference/MyEclipce/FilesandEditors/xml/xmlCatalog

●点击add加入location选择dtd的位置,keytype选择url,key输入

http:

//struts.apache.org/dtds/struts-2.3.dtd(structs.xml中)

2.4action名称的搜索顺序

1)获得请求url,例如url是:

http:

//servlet/struts2/path1/path2/path3/test.action

2)首先寻找namespace为/path1/path2/path3的package,如果不存在这个package则执行步骤3;如果存在这个package,则在这个package中寻找名字为test的action,当这个package下寻找不到action时就会直接跑到默认的namespace的package里面去寻找action(默认的命名空间为空的字符串“”),如果在默认的namespace的package里面还寻找不到该action,页面提示找不到action

3)寻找namespace为/path1/path2的package,如果不存在这个package,则到步骤4;如果存在这个package,则在这个package中寻找名字为test的action,当这个package下寻找不到action时就会直接跑到默认的namespace的package里面去寻找action(默认的命名空间为空的字符串“”),如果在默认的namespace的package里面还寻找不到该action,页面提示找不到action

4)寻找namespace为/path1的package,如果不存在这个package,则到步骤4;如果存在这个package,则在这个package中寻找名字为test的action,当这个package下寻找不到action时就会直接跑到默认的namespace的package里面去寻找action(默认的命名空间为空的字符串“”),如果在默认的namespace的package里面还寻找不到该action,页面提示找不到action

5)寻找namespace为/的package,如果不存在这个package,则到步骤4;如果存在这个package,则在这个package中寻找名字为test的action,当这个package下寻找不到action时就会直接跑到默认的namespace的package里面去寻找action(默认的命名空间为空的字符串“”),如果在默认的namespace的package里面还寻找不到该action,页面提示找不到action

2.5action配置的各项默认值

/WEB-INF/page/hellow.jsp

1)

如果没有为action指定的class,默认是ActionSupport

2)如果没有为action指定method,默认执行action中execute()方法。

3)如果没有指定result的那么属性,默认值为“success“

/index.jsp

4)以上代码,访问http:

//localhost:

8081/structs2/test/st会自动转发到index.jsp;

二struts2的视图与常量

1Action中result的各种转发类型

result配置类似于struts2中提供了多种结果类型,常用的类型有:

dispatcher(默认值),redirect,redirectAction,plainText(前面我们的例子是dispatcher)

1.1redirect重定向

1)实现重定向

/index.jsp

//当打开localhost:

8081\test\redirect就会自动重定向到index.jsp

2)实现一个功能,用户注册信息,如果注册失败,就返回到注册页面但是正确的信息任然存在(ognl表达式)

struts2的配置文件为

/regist.jsp?

username=${username}

class为

package.hewei.action;

publicclassRedirectDemo{

privateStringusername;

publicStringgetUsername(){

returnusername;

}

publicStringexecute()

{

this.username="hewei";

return"success";

}

}

注意如果是中文需要:

this.username=URLEncoder.encode("何伟","UTF-8");

在jsp中

<%Strings=request.getParameter("username");

s=newString(s.getBytes("ISO-8859-1"),"UTF-8");

%>

1.2redirectAction

1)转发给action

redirectdemo

2)redirectAction对应类中的方法

setActionName(StringactionName)setNamespace(StringnameSpace)

3)加属性的action重定向

helloworld

test2

//这里重定向到test2/helloworld下,默认在自己的命名空间下

1.3plainText

这个视图可以原样的输出重定向的文件的原有内容

/index.jsp

UTF-8

2.共用视图(全视图)及action注值

2.1全视图的使用

定义全视图:

/index.jsp

调用:

publicclassHellowWorldAction{

privateStringmessage;

publicStringgetMessage(){

returnmessage;

}

publicStringexecute(){

return"message";

}

}

2.2全局视图在整个xml可用

在默认情况下只在同一个包中才可以重定向到全视图,那怎么让所有包都可用全局视图呢

定义:

/index.jsp

使用:

//只要继承包即可

 

2.3为action的属性注值

/hewei为message属性注入值

/WEB-INF/page/hellow.jsp

package.hewei.action;

publicclassActionDemo{

privateStringmessage;

publicStringgetMessage(){

returnmessage;

}

publicvoidsetMessage(Stringmessage){

this.message=message;

}

publicStringexecute(){

return"success";

}

}

//这里的setMessage必须要有,因为param中的信息是通过set方法存入的

3.struts中的常量和常用信息

3.1修改struts2请求处理后缀

标签下加入以下代码

//这样后缀hewei,do,action都可以

常量的定义可以定义在:

✓在xml中配置常量如上图:

✓在struts.xml中配置常量

struts.action.extension=do

✓struts2加载常量的顺序

struts-default.xml

struts-plugin.xml

struts.xml

struts.properties

web.xml

如果在多个配置文件中配置了同一个常量,那么后面配置的常量会覆盖前面的常量

3.2较常用的常量

3.3struts2的处理流程

3.4为应用指定多个struts文件

在大部分的应用中随着应用规模的增加,系统中的Action的数量也会大量的增加,导致struts.xml配置文件变得非常的臃肿,为了避免struts.xml文件的过于强大,臃肿,提高了struts.xml文件的可读性,我们可以将一个struts.xml配置成对个配置文件,然后在struts、

.xml文件中包含其他的配置文件。

下面的struts.xml通过元素指定多个配置文件

//一般在struts.xml文件中值存放一些配置信息

3.5动态方法调用action(不推荐)

如果action中存放在多个方法时,我们可以使用!

+方法名调用指定的方法

✓类中

package.hewei.action;

publicclassActionDemo2{

privateStringmsg;

publicStringgetMsg(){

returnmsg;

}

publicvoidsetMsg(Stringmsg){

this.msg=msg;

}

publicStringaddUI(){

msg="addUI";

return"success";

}

publicStringexecute(){

msg="execute";

return"success";

}

}

✓配置文件

/WEB-INF/page/hellow.jsp

✓调用

${msg}

✓查看:

http:

//localhost:

8081/MyStr

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

当前位置:首页 > 总结汇报 > 其它

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

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