1、客服端发起一个请求,通过HTTP协议指向Tomcat容器,tomcat拿到请求她干了什么?
2、我们web.xml配置
<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配置文件中可以看到org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,这个Filter这个类有什么用?
这个 /* 是拦截所有的请求,他拦截了请求做了什么处理? <url-pattern>/*</url-pattern>
3.我们struts.xml配置
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="hello">
<result>
/Hello.jsp
</result>
</action>
</package>
</struts>
谁负责根据struts.xml配置,找到需要调用的Action类和方法呢?
4.最后根据struts.xml中的配置找到对应的返回结果result,在返回HTTP响应到客户端浏览器
哪位大神给我总结下这四个问题的答案!谢谢了。通俗易懂一点!
------解决方案--------------------
1 浏览器的请求发送到后台后,根据端口号,会找到对应的服务,也就是容器tomcat,然后tomcat根据后面的请求地址,将请求分发到具体的工程里面
2 struts2 的核心功能就是过滤器,这个filter就是struts2一个默认的过滤器。struts2 比struts1 有很多优越的地方,比如不需要再用表单去接收页面的数据,直接在action中定义属性就可以获取到页面的表单数据,这里其实就是org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 做了事情。其实这个Filter做的事情很多很多,这里只是一个很简单的例子。
3 这个问题我回答的话就只能回答是struts2去做的,这个真心不知道里面的原理了。
4 这个是客户端和服务端交互的一个模式,请求/响应模式。客户端发送请求后,立即需要服务端做处理,并将结果返回给客户端。这里楼主问的怎么根据struts.xml中的配置找到对应的返回结果result,这个还只能回答是struts2框架去做的。
之前学习过几天struts2,理解不深,有不对地方,欢迎大牛们批评指正,探讨交流。

------解决方案--------------------
1 拿到请求之后 根据他实现的Servlet规范 找到对应的Servlet
2 那个filter根据不同的请求决定使用哪个action
3 同2
4 问什么?
------解决方案--------------------
你搜下strtus2的工作流程就明白了
------解决方案--------------------
就是那个filter