如何使用实现首页跳转?

前言


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


        
            /index.jsp
        
但并不能起作用,问题如下:

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

解决方法:

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


    XXXXX

struts.xml中,加上


        
            /index.jsp
        
原理:

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

结论:

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

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

你可能感兴趣的:(如何使用实现首页跳转?)