struts & 运行机制

本文详细介绍了基于HTTP协议的Struts2框架处理请求的过程,包括URL请求如何到达Tomcat服务器,再到Struts2框架内部如何解析并执行相应的Action,最终返回页面给客户端的完整流程。

根据浏览器当中的 url地址


这里写图片描述


url地址的请求通过http协议,发送给 tomcat


tomcat根据请求地址,找到相对应的 webapps (图中的webapps为struts1)


然后读取struts1所对应的 web.xml 文件

这里写图片描述


找到web.xml中有一个 filter ,它会过滤所有的url地址(/*)


访问地址 /demo/hell_ss 被filter中的class接收:

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


这里写图片描述


filter找到对应的 struts.xml 文件


然后根据请求路径找对对应的 namespace

这里写图片描述

地址中的namespace为 “/demo”


然后再找,看 “/demo” 下面是否有名字为 hell_ss 的 action


如果有,找到对应 action 中的 result 是谁


找到 /Hello.jsp


将 Hello.jsp 的 结果反馈给 浏览器


流程图:


这里写图片描述


action + 配 class

这里写图片描述


filter找到这个action的时候,回new一个IndexAction3类对象,然后调用对象的execute方法,方法返回success

这里写图片描述


具体视图的返回可以由用户自己定义的Action来决定
具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容
具体Action的实现可以是一个普通的java类,里面有public String execute方法即可
或者实现Action接口
不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts2封装好的方法


struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。

这里写图片描述

用注解

这里写图片描述

和 base标签

这里写图片描述

现在的 href=”path/path” ,实际上是一个绝对路径:
http://localhost:8080/struts2/ ” + ” path/path”
访问的即是:struts2项目下的 namespace为“path”的,下面的“path”的 “action”

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值