还是先看一个图:
这是
struts2
的结构图,我们可以看到,
HttpServletRequest
请求到达后首先经过
ActionMapper
,然后经过
FilterDispatcher
,如果还有其他的
Filter
,一次经过,最后到达一个叫
ActionProxy
的地方,这个时候通过
ConfigurationManager
读取配置文件
struts.xml,
然后到达
ActionInvocation
,开始经过一个个的
Interceptor
,最后达到
Action
进行处理后返回结果。
初次咋看过程还挺复杂的,其实学习到一定程度之后感觉其实挺简单的,毕竟底层的很多细节我们不必关心,我们关心的只是请求达到我我们要接到请求进行处理,然后返回结果。
Struts2
详解
入门实例:
知道这些后,我们就可以开始来编写第一个
struts2
了。
开发
struts2
应用程序的步骤:
1,
建立工程,导入
struts2
的包
2,
编写
JSP
页面
3,
编写
Action
4,
编写
struts.xml
配置文件
5,
编写
web.xml
文件
下面是一个入门实例(实例一):
注:本教程所有实例原码都已上传到
CSDN
,需要的朋友可以去下载:
原码下载地址:
1,
建立工程,导入包:
导入
struts2
需要的包:复制到项目的
WebRoot/WEB_INF/lib
目录下
2,
编写
JSP
页面。
index.jsp
:
<
body
>
<
form
action
=
"userAction"
>
用户名:
<
input
type
=
"text"
name
=
"username"
/>
<
input
type
=
"submit"
value
=
"
提交
"
/>
</
form
>
</
body
>
result.jsp:
<
body
>
你的用户名:
${requestScope.username}
</
body
>
3,
编写
Action
(
UserAction
)
package
com.gufengxiachen.struts2_1.action;
import
com.opensymphony.xwork2.ActionSupport;
public
class
UserAction
extends
ActionSupport{
private
String
username
;
public
String getUsername() {
return
username
;
}
public
void
setUsername(String username) {
this
.
username
= username;
}
@Override
public
String execute()
throws
Exception {
return
“success”
;
}
}
4,
编写
struts.xml
文件
:
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<!
DOCTYPE
struts
PUBLIC
"-//Apache
Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"
>
<
struts
>
<
package
name
=
"struts2_1"
extends
=
"struts-default"
>
<
action
name
=
"userAction"
class
=
"com.gufengxiachen.struts2_1.action.UserAction"
>
<
result
name
=
"success"
>
/result.jsp
</
result
>
</
action
>
</
package
>
</
struts
>
5,
编写
web.xml
文件:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
web-app
version
=
"2.5"
xmlns
=
"http://java.sun.com/xml/ns/javaee"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
=
"http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
<
welcome-file-list
>
<
welcome-file
>
index.jsp
</
welcome-file
>
</
welcome-file-list
>
<
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
>
</
web-app
>
至此,第一个
struts2
项目已完成,可以部署运行了,当然这个项目非常简单,是一个入门级的项目,但任何大的项目都是从它身上扩展的,所以说弄清楚它的原理是非常重要的。
下面我们来分析这个项目的运行过程。
首先,用户在
index.jsp
页面填写用户名后提交表单,表单提交到什么地方呢?看到
<form
action=”userAction”>
,就知道表单提交到
userAction.action
.action
可以省略,
struts2
默认会加上后缀
.action
。在哪找到这个
Action
呢?它回去
web.xml
文件中找相关的配置,结果发现有个过滤器
StrutsPrepareAndExecuteFilter(
这个过滤器是
struts2
的过滤器,必须加上,不然就不是一个
struts2
项目,它的作用就是将请求交给
struts2
处理
)
,然后经过一系列的处理(这里处理的内容很多,后面会详细介绍)最后在
struts.xml
文件中找到了
Action
的配置,接着将请求交给
UserAction
来处理,我们可以看到
UserAction
继承了
ActionSupport
类,实现了
execute
方法,该方法必须返回一个字符串,在这个方法中我们出来的很简单,就单单返回了一个字符串
”success”
,还应该注意到这个
Action
有个属性
username
,并提供了
get/set
方法,我们好像根本没有看到从页面取参数的方法,哪它是如何取到参数的呢,正是这个
username
属性和它的
get/set
方法的用处,这里有一点要注意,
setXXX
方法后的
XXX
必须和参数名相同除了第一个字母大写。这样才能取到参数。
execute
方法是
Action
的处理方法,当我们返回一个
success
字符串时,它就会去
struts.xml
文件相应的
Action
配置中寻找
name
为
success
的
result
标签,找到后返回它所指示的页面,本例中即
result.jsp
。在
result.jsp
中我们只是通过
EL
表达式取到返回的值。
上面即是这个实例的大致(
struts2
内部还有很多处理)处理过程,是不是感觉也不是很难呢?
我们来总结一下
struts2
的大致处理过程:
页面
form
表单数据提交到一个
action
:
struts2
的过滤(
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
)拦截请求,查找
struts.xml
文件里的
action
元素,
action
元素的
name
属性值和
form
表单提交的
action
对应,则实例化
action
元素的
class
属性值对应的类,并且将
form
表单提交的值通过
setXxx
()方法设置到
class
类属性。
之后调用
action
类的
execute
方法,该方法必须返回一个字符串!根据返回的字符串在
action
元素的子元素
result
的
name
属性
name
对应的值,如果匹配,则返回
result
元素值所指定的页面。
通常
每个
action
类都要
com.opensynphony.xwork2.ActionSupport
类
分享到:
相关推荐
NULL 博文链接:https://hbiao68.iteye.com/blog/1452476
NULL 博文链接:https://changluo.iteye.com/blog/1842213
这个是本人自学struts2框架时的总结笔记,里面关于struts2的基本知识很是详尽,如果想要进阶的就不要看了,这只是struts2基础的笔记,个人学习用的,绝不掺假!
本文档记录了Struts2初学中的所有要点笔记,非常详尽的知识点说明并附加了学习者对知识的理解过程,是新人学习Struts2框架的必备参考典范。
自学传智博客struts2-黎活明-源码-第01讲_01介绍struts2及struts2开发环境的搭建_DemoStruts2.rar; 笔记地址:http://www.guloulou.com/?p=1253
Struts1新手入门笔记Struts1新手入门笔记
struts2笔记。 适合初学者参考使用。罗列了一些struts2的重点内容,适合自学
struts各个知识点汇总,重点把握struts要害,快速掌握并着手应用。详细,简明
自学struts2做的笔记,自己感觉用起来挺方便的,内容也全面。查询起来也方便。基本涵盖struts2常用资源。
Struts 国际化 类型转换 Jfreechart 等学习笔记 自学笔记 仅供参考
自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar 笔记地址:http://www.guloulou.com/?p=1252
经典的struts自学宝典,都是我的潜心专研,精心总结出来的
非常好的一个自学文档,精辟,囊括所有重点。
希望对大家有所帮助,j2ee的一些心得体会
Struts2的教程笔记.简单的入手,适合初学者,自学者.
看的东西不在多,而在于精, 程序设计最重要的就是上级操作了, 既然选择了,就该要有坚持的觉悟... Cookie使用. ...里面是当年自学JAVA时的一些笔记,内容都是TXT格式的,都是一些基础性的概念总结。
框架开发关于hibernate和struts的个人笔记
本Jva(Java)学习笔记是一份深入且详尽的教程,不仅包括Java的基础知识,还融入了作者的个人见解和实际编程经验。内容涵盖: Java基础:数据类型、控制流、异常处理。 面向对象编程:类与对象、继承、多态、封装。...
自己整理的一些资料,不需要积分,希望对大家有帮助。 里面包有如下的一些java资料 Ant使用指南.pdf cvs.pdf Eclipse入门-- Eclipse的使用简介及插件开发.PDF ...spring2中文开发参考手册.chm a.txt