没有合适的资源?快使用搜索试试~ 我知道了~
首页struts2学习笔记(完美总结)——转自OPEN经验库
资源详情
资源评论
资源推荐
目录
ØAction
n 简单数据校验
ØResult
Ø常用配置文件
ØOGNL & ValueStack
ØTags
Ø ---------------------Project
n 类型转换、上传与下载、interceptor、防止重复提交
ØMVC 思想深入剖析
Ø源码解读
Ø 其他话题
一、 作用:
将请求与结果分开
二、搭建 的运行环境:
1、建立 Web 项目;
2、建立 Struts2 的配置文件(struts.xml);
将 Struts2 的空项目中的配置文件(struts.xml)复制到项目的 src 目录下。
配置如下:
<!--
struts.devMode : 是否设置为开发模式 true:是开发模式,否则不是
注:在开发模式下,修改 Struts 的配置文件后不需要重新启动 Tomcat 服务器即生
效。
否则修改 Struts 配置文件后需要重新启动 Tomcat 服务器才生效。
-->
<constantname=value=/>
<!--
namespace :对应与项目名称后面的"/"(例如 Struts2_0100_Introduction 后面的"/")
(http://localhost:8080/Struts2_0100_Introduction/)
-->
<packagename=namespace=extends=>
<actionname=>
<result>
/hello.jsp
</result>
</action>
</package>
3、复制 Struts2 相应的 jar 包及第三方包。
将空项目中 lib 目录中的除 junit 和 spring-test 之外的所有文件复制到项目的
WebRoot/WEB-INF/lib 目录下
4、修改对应的 web.xml,建立 struts2 的 filter(参考 struts 自带的项目),添加如下配置:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
三、
Namespace 决定了 action 的访问路径,默认为“”,可以接收所有路径的 action,如果没有
找到相应的 namespace 时,则使用 namespace 为空的 action
Namespace 可以写为/,或者/xxx,或者/xxx/yyy,对应的 action 访问路径为/
index.action、/xxx/index.action、或者/xxx/yyy/index.action.
Namespace 最好也用模块来进行命名。
namespace :对应与项目名称后面的"/"(例如 Struts2_0100_Introduction 后面的"/")
(http://localhost:8080/Struts2_0100_Introduction/)
四、 !标签
<package>是用来解决重名的问题,例如当系统的前台和后台都有一个 action 名叫 hello,
这时就需要用 package 来区分。©©©前台<packagename="front">后台<package
name="back">
struts2 中的 package 与 java 的 package 是相同的作用的。
五、
具体视图的返回可以由用户自己定义的 Action 来决定
具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容,有三种手段:
<constantname=value=/>
<packagename=extends=namespace=>
<actionname="class=#$"%">
<resultname=>/ActionIntroduction.jsp</result>
</action>
</package>
注:<action>标签中的 class 属性是表示 action 的对应的类(这个类是一个普通 Java 类),
当访问这个 action 时会创建这个类成为一个对象,然后执行这个对象中的 execute 方法()
(execute 方法返回类型为 String)。
第一种& 普通 ' 类
#(IndexAction1{
#String execute() {
"success";
}
}
当<action>标签中 class 属性省略时,则默认执行
))"* 类中的 " 方法,而这个方法返回一个
字符串常量 SUCCESS(常量值为:”success”).
第二种& 实现 ))"* 接口,这个接口中定义了一些
常量和一个 " 方法,我们重写 "+,方法就可以了。
com.opensymphony.xwork2.Action;
#(IndexAction2Action {
@Override
#String execute() {
//return "success";
(.-../;-../ 常量值为:
}
}
第三种& 继承 ))"* 类,而这个类又实现
了 ))"* 接口,我们重写 "+,方法就可以了。
com.opensymphony.xwork2.ActionSupport;
#(IndexAction3"ActionSupport {
@Override
#String execute() {
//return "success";
(.-../;//SUCCESS 常量值为:"success"
}
}
注:第三种 是我们需要使用的方式,因为这个类不担实现了
))"* 接口,更重要的是它已经帮我封装了许多其它有用
的方法。
六、路径问题的说明
struts2 中的路径问题是根据 action 的路径而不是 jsp 路径来确定,所以尽量不要使用相对
路径。
虽然可以用 redirect 方式解决,但 redirect 方式并非必要。
解决办法非常简单,统一使用绝对路径。(在 jsp 中用 request.getContextRoot 方式来拿
到 webapp 的路径)©
或者使用 myeclipse 经常用的,指定 basePath
还有另一种方式,就是在<head>标签中,指定<base>标签值,这样就使用统一绝对路径。
<%
String path = request.getContextPath();//
String basePath = request.getScheme()+"://"+request.getServerName()
+":"+request.getServerPort()+path+"/";
%>
<head>
<basehref="<%=basePath%>"/>
…………
注:<base>标签:当前页面中所有连接都会在前面加上 base 地址。
七、 的动态调用方法
Action 执行的时候并不一定要执行 execute 方法,我们可以指定 Action 执行哪个方法:
、©©方法一+通过 属性指定执行方法,:
可以在配置文件中配置 Action 的时候用 method=来指定执行哪个方法
<actionname=class=#$"-=
>
<result>/user_add_success.jsp</result>
</action>
这样,只要在 action 的对象中有一个 add 的方法,并且返回类型为 String 就可以了。如
果没有 method 属性,则默认执行 execute()方法。
com.opensymphony.xwork2.ActionSupport;
#(UserAction"ActionSupport {
#String add() {
-../;
}
}
、©©动态方法调用 0%+推荐,
可以在 url 地址中动态指定 action 执行那个方法。Url 地址如下:
http://localhost:8080/Struts2_0500_ActionMethod/user/user!add
方法:action + ! +方法名
注:只要 Action 对象中有这个方法,并且返回类型为 String 就可以调用。
这样 Struts.xml 配置文件中不需要配置 methed 属性。代码如下:
<actionname=class=#$"->
<result>/user_add_success.jsp</result>
</action>
Action 类:
#(UserAction"ActionSupport {
#Stringadd() {
-../;
}
}
总结:推荐使用第二种动态方法调用 0%,因为第一种需要大量的 Action 配置,后者
可以在 url 中动态指定执行 action 中哪个方法。
八、 通配符+*,的配置
使用通配符,将配置量降到最低, 不过,一定要遵守"约定优于配置"的原则
、©©通配符
星号(*)表示所有
{数字} 表示第几个通配符
剩余43页未读,继续阅读
Edwardyun
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0