02 Sruts详解

Struts详解
在apcahe网站上下载struts的包
Struts是apcache公司下面的子项目 基于struts1+xwork
struts压缩包解析:
source:源代码
doc :帮助文档
jar包是源代码
war包是带js页面的可以直接放到tomcat下运用
lib库:jar包 大量的包都是struts依赖的包而不是它本身的包
框架开发中的主要困难:
1)jar包冲突 冲突的原因往往是版本冲突 jar包冲突往往很难定位 提示是莫名其妙的一些错误
2)框架整合之后,错误的排除特别困难
使用哪些包都得了解哪些包,学任何一个框架都必须了解所有的包 否则产生冲突找都找不到

freemark :view层的框架技术和jsp的地位差不多 还有volocity JSF
OGNL (Object Graphic Navigation Language )对象的图形化导航语言

Strusts的HelloWorld开发步骤:
想达到的项目效果
在浏览器中发送一个请求
http://localhost:8383/Hello.action,在页面显示hello的信息
原来需要写servlet 控制dispatch到指定jsp
1.建立一个web项目----右击项目-----myeclipse-----add struts capbility
这样就引入了Struts2依赖包,之后就自动在项目中添加了一个xml文件strusts.xml,也会在web.xml中自动添加一个核心过滤器
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>引用了一个struts根据这个路径在引入的包里能找 到;这个类这个过滤器的作用:所有的url都将被它拦截一次,并且处理去定位到到底哪个action去处理这个请求
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping></web-app>
Eclipse没有向导自己手动按照步骤来添加 添加包的时候一定在优化包,只添加必要包
2.建立一个hello.jsp 用于输出显示信息
3.用控制器转到jsp上 ,建立控制器 HelloAction.jaa
4.实现execute()方法
5.配置struts.xml
<package name="HelloWorld" extends="struts-default">
<action name ="helloWorld"
class="com.struts.control.HelloWorldAction ">
<result name="sucess">/view/hello.jsp</result>
</action>
</package>
Struts2的工作原理:
1.部署HelloWorld项目到tomcat
2。启动tomcat时候,struts.xml配置文件在tomcat服务器启动的时候将被解析
所有的action对象存储到static Map数组中(说明action的名字不能重复)
程序启动之后不能修改struts,xml,想修改就关掉服务器重新启动。
3.浏览器发出get请求:http://localhost:8383/HelloWorld/helloWorld.action被转到action类中指定的jsp页面了
helloWorld对应的是action的name,且必须有.action这个后缀,
小结:根据URL中含有的*.action后缀, 触发StrutsPrepareAndExecuteFilter这个过滤器,然后这个过滤器开始截取url中action的名称helloWorld,用action的名称helloWorld到action的Map数组中很容易的找到对应的action对象, 对应出相应的class类即action类,利用反射技术,动态创建这个class类的对象helloWorld,利用反射技术invocation激活类中的方法execute()方法,根据方法中的返回值找到result,返回值对应action对象中的result的name值, <result>默认使用dispactch方式转向到<result></result>之间指定的jsp网址(换句话说 类中有各种控制方法,这些控制方法的返回值分别对应这个action中包含的各个<result>子节点的name值,对应上之后,就开始跳转到<result></result>之间指定的页面,可能在那个方法中还包含这各种数据的传递和处理。)
<result name="" type="转向类型有很多种默认使用dispatch类型"></result>
以上一个小项目讲解
Struts2的工作原理:
1.部署HelloWorld项目到tomcat
2。启动tomcat时候,struts.xml配置文件在tomcat服务器启动的时候将被解析
所有的action对象存储到static Map数组中(说明action的名字不能重复)
程序启动之后不能修改struts,xml,想修改就关掉服务器重新启动。
3.浏览器发出get请求:http://localhost:8383/HelloWorld/helloWorld.action被转到action类中指定的jsp页面了
helloWorld对应的是action的name,且必须有.action这个后缀,
小结:根据URL中含有的*.action后缀, 触发StrutsPrepareAndExecuteFilter这个过滤器,然后这个过滤器开始截取url中action的名称helloWorld,用action的名称helloWorld到action的Map数组中很容易的找到对应的action对象, 对应出相应的class类即action类,利用反射技术,动态创建这个class类的对象helloWorld,利用反射技术invocation激活类中的方法execute()方法,根据方法中的返回值找到result,返回值对应action对象中的result的name值, <result>默认使用dispactch方式转向到<result></result>之间指定的jsp网址(换句话说 类中有各种控制方法,这些控制方法的返回值分别对应这个action中包含的各个<result>子节点的name值,对应上之后,就开始跳转到<result></result>之间指定的页面,可能在那个方法中还包含这各种数据的传递和处理。)
<result name="" type="转向类型有很多种默认使用dispatch类型;其他类型包括:chain/freemaker/httpheader/redirect/redirectAction/stream/velocity/xslt/plainText"></result>

缺陷:
http://localhost:8383/HelloWorld/xxxx/helloWorld.action 仍然可以访问到
路径值截取最后一个/后面的名称,这个路径可以随便变中间部分
即:struts2对资源的目录是不处理的,后期spring对此弥补


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值