第14章struts2基础0612Word文档下载推荐.docx

上传人:b****7 文档编号:21944859 上传时间:2023-02-01 格式:DOCX 页数:23 大小:413.16KB
下载 相关 举报
第14章struts2基础0612Word文档下载推荐.docx_第1页
第1页 / 共23页
第14章struts2基础0612Word文档下载推荐.docx_第2页
第2页 / 共23页
第14章struts2基础0612Word文档下载推荐.docx_第3页
第3页 / 共23页
第14章struts2基础0612Word文档下载推荐.docx_第4页
第4页 / 共23页
第14章struts2基础0612Word文档下载推荐.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

第14章struts2基础0612Word文档下载推荐.docx

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

第14章struts2基础0612Word文档下载推荐.docx

●整个Web框架大致的流程是:

首先客户端发送请求,提交JSP页面给Servlet,Servlet根据客户的请求,选择相应的模型层,进行相应的逻辑处理;

如果需要使用数据库,则通过DAO进行相应的数据库操作

(4)Struts1的组件结构图

(5)Struts2的架构/MVC

Struts2相关介绍

Struts2官网:

http:

//struts.apache.org/

Struts2使用:

Struts2是Struts的下一代产品,是在struts和WebWork的技术基础上进行了合并的全新的Struts2框架。

其全新的Struts2的体系结构与Struts1的体系结构的差别巨大。

Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。

虽然从Struts1到Struts2有着太大的变化,但是相对于WebWork,Struts2只有很小的变化。

Struts2的体系与Struts1体系的差别非常大,因为Struts2使用了WebWork的设计核心,而不是Struts1的设计核心。

Struts2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与ServletAPI分离。

【14.2.2第一个Struts2程序】

1.搭建Struts2环境的步骤:

(1)找到开发Struts2应用需要的jar文件

(2)编写Struts2的配置文件

(3)修改web.xml,加入Struts2MVC框架启动配置

2.下载struts-2.3.28-all.zip,下载地址:

下载后解压

3.开发Struts2最少需要的jar

【例1】

开发一个Struts2应用

1.在MyEclipse下新建一个webproject

2.将上述jar文件考到lib目录下

3.从例子中找一个struts.xml,考到src下

<

?

xmlversion="

1.0"

encoding="

UTF-8"

?

>

!

DOCTYPEstrutsPUBLIC

"

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

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

struts>

packagename="

mypack"

namespace="

/test"

extends="

struts-default"

actionname="

helloworld"

class="

my.example.HelloWorldAction"

method="

execute"

resultname="

success"

/WEB-INF/page/hello.jsp

/result>

/action>

/package>

/struts>

4.修改web.xml

web-appversion="

2.4"

xmlns="

xmlns:

xsi="

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

filter>

filter-name>

struts2<

/filter-name>

<

filter-class>

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

/filter-class>

/filter>

filter-mapping>

url-pattern>

/*<

/url-pattern>

/filter-mapping>

welcome-file-list>

welcome-file>

index.jsp<

/welcome-file>

/welcome-file-list>

/web-app>

注意:

(1)Struts框架是通过Filter启动的。

(2)<

org.apache.struts2.dispatcher.FilterDispatcher<

自struts-2.1.3之后已经过时

5.编写Action,观察Action的特点。

packagemy.example;

publicclassHelloWorldAction{

privateStringmessage;

publicStringgetMessage(){

returnmessage;

}

publicStringexecute(){

message="

myfirstpage"

;

return"

}

6.在WEB-INF下新建page文件夹,然后新建hello.jsp文件

内容如下:

body>

${message}

/body>

运行时在地址栏输入

//localhost:

8080/工程名/test/helloworld

观察运行结果

Package介绍:

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

配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,如果其他包要继承该包,必须通过该属性进行引用。

包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下Action路径的一部分。

Namespace属性可以不配置,如果不指定该属性,默认的命名空间为“”

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

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

Struts-default包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定义。

【例2】——请求参数的注入

1.web.xml不变

2.修改Action

publicclassUserAction{

privateStringusername;

privateStringpassword;

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

publicStringgetPassword(){

returnpassword;

publicvoidsetPassword(Stringpassword){

this.password=password;

publicStringexecute()throwsException{

//只有用户名为xxx,密码为123456方可成功登陆

if(username.equals("

xxx"

)&

&

password.equals("

123456"

)){

return"

}else{

error"

3.配置struts.xml

Struts2框架的核心配置文件就是struts.xml,该文件主要负责Struts2应用中各Action的具体实现逻辑。

struts.xml会根据不同请求找到具体的Action,然后根据Action返回的逻辑视图名找到具体的物理视图。

mylogin"

loginUser"

my.example.UserAction"

/jsp/success.jsp<

/jsp/error.jsp<

解释:

(1)该文件发布的时候必须放置在WEB-INF/classes路径下,当程序运行的时候会自动在该目录下搜索struts.xml。

(2)在action标签中定义了name和class。

name属性对应的是用户URL请求中的action名,比如在本应用中,用户请求为http:

8080/Struts2/loginUser.action,那么name属性就应该为loginUser。

class属性是处理请求的实现类(注意:

要包含完整路径),本应用的实现类是my.example.UserAction。

(3)result标签定义逻辑视图和物理视图之间的映射,在我们的Action中,如果返回的字符串是"

success”则由对应的success.jsp页面进行处理;

如果返回的字符串是"

error”则由error.jsp页面进行处理。

4.编写视图

【编写login.jsp】

%@pagelanguage="

java"

import="

java.util.*"

pageEncoding="

GB2312"

%>

%@taglibprefix="

s"

uri="

/struts-tags"

%>

%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+"

:

//"

+request.getServerName()+"

"

+request.getServerPort()+path+"

/"

DOCTYPEHTMLPUBLIC"

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

html>

head>

basehref="

%=basePath%>

title>

MyJSP'

login.jsp'

startingpage<

/title>

/head>

s:

formaction="

textfieldname="

username"

label="

用户名"

/s:

textfield>

passwordname="

password"

密码"

password>

submitvalue="

确定"

/>

resetvalue="

重置"

form>

/html>

【编写success.jsp】

Gb2312"

success.jsp'

登陆成功!

您的用户名是<

propertyvalue="

property>

说明:

访问action中的属性

【编写error.jsp】

ISO-8859-1"

error.jsp'

error!

br>

在地址栏输入:

8080/struts2_example2/jsp/login.jsp

验证结果。

Action类中get和set方法都要生成。

分析这个例子:

在地址栏里输入

8080/ch2_example1/jsp/login.jsp

填写了用户名和密码之后,地址栏变为

8080/ch2_example1/jsp/loginUser.action

过滤器对URL进行解析以便将请求进行正确的映射,

http是网络传输协议的名称,

localhost为主机名称,

8080为web应用端口,

ch2_example1为工程名,

jsp为目录名,

/loginUser.action为要映射模型组件的URL,除去扩展名action,则剩余的URL地址为/loginUser,

分别对应模型组件的package对应的命名空间“/”和模型组件的名称loginUser。

接下来过滤器StrutsPrepareAndExecuteFilter将在Struts2的配置文件struts.xml中查找命名空间为“/”的package,然后在此包中寻找名为loginUser的Action模型组件,最后将请求转到Action对应的实现类my.example.UserAction

现在接力棒传给模型组件UserAction,负责处理客户请求的是它的execute()方法。

execute()方法最终会返回一个代表处理结果的字符串,然后Struts2框架将根据字符串在配置文件struts.xml中此模型组件包含的result选项中寻找匹配的选项,并将此选项对应的视图组件返回到客户端。

【14.3.1认识Action对象】

在Struts2框架中,Action组件不需要继承任何类,实现任何接口,它可以只是一个简单的Java对象,只需要提供一个没有参数的且返回字符串信息的公共方法,作为默认的对请求信息进行处理并返回结果视图的接口。

框架还提供了一个Action组件的基类ActionSupport,它在实现了Action接口的同时实现了execute()方法。

ActionSupport的定义:

//struts.apache.org/2.0.6/struts2-core/apidocs/com/opensymphony/xwork2/ActionSupport.html

该类的作用:

Providesadefaultimplementationforthemostcommonactions.Seethedocumentationforalltheinterfacesthisclassimplementsformoredetailedinformation.

publicclassActionSupport

extendsObject

implementsAction,Validateable,ValidationAware,TextProvider,LocaleProvider,Serializable

【修改例2】

1.login.jsp:

内容不变

页面展示形式为:

2.修改UserAction:

importcom.opensymphony.xwork2.*;

publicclassUserActionextendsActionSupport{

privateStringusername;

privateStringpassword;

publicStringgetUsername(){

returnusername;

publicvoidsetUsername(Stringusername){

this.username=username;

publicStringgetPassword(){

returnpassword;

publicvoidsetPassword(Stringpassword){

this.password=password;

publicStringexecute(){

if(!

username.equals(password))

returnINPUT;

elsereturnSUCCESS;

该execute()方法的作用:

如果用户名和密码一致,则返回一个表示登录成功的SUCCESS,否则返回结果字符串INPUT。

另外,Action组件还提供了两个字符串属性username和password以及对应的getter/setter方法,这两个属性提供给Struts2框架用来装载用户提交的参数。

Web请求中的参数信息将由框架自动填充到这两个属性变量中。

Execute()方法中也引用此信息进行业务处理。

3.结果界面success.jsp不变:

登陆成功!

4.配置文件struts.xml:

my

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

当前位置:首页 > 表格模板 > 合同协议

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

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