当前位置: 代码迷 >> Java Web开发 >> 看到网友的对Struts2的原理总结,小弟我自己也总结以便后续的面试,以下是小弟我的疑问
  详细解决方案

看到网友的对Struts2的原理总结,小弟我自己也总结以便后续的面试,以下是小弟我的疑问

热度:96   发布时间:2016-04-16 22:19:00.0
看到网友的对Struts2的原理总结,我自己也总结以便后续的面试,以下是我的疑问!
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的工作流程就明白了
------解决方案--------------------
引用:
Quote: 引用:

1 拿到请求之后  根据他实现的Servlet规范  找到对应的Servlet
2 那个filter根据不同的请求决定使用哪个action
3 同2
4 问什么?


谁负责根据struts.xml配置,找到需要调用的Action类和方法呢?最后根据struts.xml中的配置找到对应的返回结果result,在返回HTTP响应到客户端浏览器
问题是这样的才对。


就是那个filter
  相关解决方案