美文网首页
如何使用实现首页跳转?

如何使用实现首页跳转?

作者: nknight | 来源:发表于2016-11-11 10:42 被阅读0次

前言


有时我们需要用户进入首页时经过struts2filter处理,但用户一般情况下只会输入主机名+web应用名,此时选择<default-action-ref>来实现跳转(以CategoryAction为例)

<default-action-ref name="Category_list"></default-action-ref>
        <action name="Category_list" class="cn.xxxxx.action.CategoryAction" method="list">
            <result>/index.jsp</result>
        </action>
但并不能起作用,问题如下:

如果不输入Category_list,理论上会默认跳转到Category_list,执行相应的action并跳到指定jsp页面,但不幸的是:
如果在jsp页面加上<s:property value="[0]"/>,结果如下:
[com.opensymphony.xwork2.DefaultTextProvider@1faa21d]
理论上,应该执行的action没有被创建出来,理想结果如下:
[cn.xxxxx.action.CategoryAction@13fa415, com.opensymphony.xwork2.DefaultTextProvider@1faa21d]

解决方法:

web.xml中,struts2filter前面,加上(注:xxxxx可为任意不与其他action mapping的值,不能为空)

<welcome-file-list>
    <welcome-file>XXXXX</welcome-file>
</welcome-file-list>

struts.xml中,加上

<default-action-ref name="Category_list"></default-action-ref>
        <action name="Category_list" class="cn.xxxxx.action.CategoryAction" method="list">
            <result>/index.jsp</result>
        </action>
原理:

当用户输入例如主机名/web应用名时,web.xml中配的welcome-file会将uri替换为主机名/web应用名/XXXXX,struts2filter发现XXXXX无法mapping到任何action,便转交给<default-action-ref>,如上name="Category_list"Category_list将会被执行。

结论:

如果用户只输入主机名/web应用名,页面会跳转到web.xml设置的默认首页,此时并不会经过struts2filter处理,所以不会执行action。此时,需要自己配置welcome-file(在struts2之前配置),在web应用下添加子路径,struts2filter将会对该请求进行处理,如果没有mapping到任何action,则交给<default-action-ref>处理,执行相应action。有老师讲的时候说<default-action-ref>只是执行了jsp的跳转而没有执行action,经过实验分析这是不对的。

说这么多的目的只有两个:
1.提出问题解决方案;
2.希望大家学习的时候多动手做实验,老师也有失误的时候。

相关文章

网友评论

      本文标题:如何使用实现首页跳转?

      本文链接:https://www.haomeiwen.com/subject/xuqfpttx.html