日期:2014-05-17  浏览次数:20750 次

关于struts2的一些问题, 求高手求教
java初学者, 请求诸位帮我分析下以下的3个问题,(真心感谢)

  1:struts2中的拦截器我该如何理解? struts2自己的拦截器是在什么时候调用的? 在action之前的时候调用拦截器还是在action之后的呢?

  2:在struts2中,我能不能把struts2.xml配置文件的action理解成mvc思想的控制层?又或者是action对应的java类是控制层?还是怎么着?请各位高手帮我分析一下struts中mvc。。  真心感谢

  3:能不能帮我分析下struts.xml配置文件中的<result type="stream">,主要不知道这type里面都放些什么东西, 好像有转发有重定向吧?  但我还是分不清楚, 我看下了struts里面的代码, 好像type有十多种吧?在请各位大神帮忙分析。

                                            真心感谢诸位。
Struts MVC Java

------解决方案--------------------
拦截器是在action之前就调用了,并且是拦截器调用action,所以你可以在拦截器中写代码,让这些代码在action之前之后运行都可以,甚至在某些情况下你可以在拦截器中选择不执行action,

action类就是控制层的类,jsp是表现层,配置文件只是指定了action的一些参数,它不可能成为一个层,控制层必须是程序,所以只有action类才是控制层的类,值堆栈可以视为数据模型,
------解决方案--------------------
result type就太多了,你可以参考:

http://blog.163.com/xiexueyong1987@126/blog/static/12626734220103521714850/
------解决方案--------------------
看看Struts in action你就都明白了
------解决方案--------------------
result type 主要是dispatcher 服务器内部跳转 跳转jsp页面
redirect 浏览器外部跳转 跳转jsp页面
chain 服务器内部跳转 跳转指定的action 再由相应的action跳转jsp页面
redirection 浏览器外部跳转 跳转指定的action  再由相应的action跳转jsp页面
这4种跳转主要是防止页面重复提交 浏览器地址是否变化 能否进行传递参数的问题  相当于jsp的request.getRequestDispaction response.sendRedirect
其他的比如使用模板引擎的话就可以用freemarker或velocity
plaintext可以原样输出源码
其他的不了解也行
------解决方案--------------------
struts框架中提供了大量的拦截器组件,默认执行一个名为defaultStack的拦截器。
  拦截器可以将Action-》Result包裹起来,在它们之前或之后追加处理逻辑。
action请求-->拦截器1-->拦截器2
-->Action-->Result-->拦截器2-->拦截器1
-->响应
------解决方案--------------------
struts2的拦截器是在调用ation 之前执行的,执行流程如图: