第14章struts2基础0612Word文档下载推荐.docx
- 文档编号:21944859
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:23
- 大小:413.16KB
第14章struts2基础0612Word文档下载推荐.docx
《第14章struts2基础0612Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第14章struts2基础0612Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
●整个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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 14 struts2 基础 0612