相信在ssh2项目中首页都是需要调用action转向jsp页面迭代上一层传过来的List,Set等集合,这样问题就来了,在web.xml中,welcome-file是不能配置action的, 如
<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
不能写成
<welcome-file-list> <welcome-file>indexAction</welcome-file> </welcome-file-list>
这样肯定报404错误
那么首页该怎样调用action呢,如 www.zhangruifeng.com 直接能访问 www.zhangruifeng.com/indexAction呢
很多web开发人员选择了jsp:forword的方式,在index.jsp采用jsp:forward跳转
<jsp:forward page="/indexAction" />
这样确实解决了问题,但笔者以为这种方式并不是很好下面介绍一种方式
就是在struts.xml中package标签下配置default-action-ref,例如
<package name="default" namespace="/" extends="struts-default"> <default-action-ref name="indexAction"></default-action-ref> <action name="indexAction" class="com.listAll" > <result name="success">index.jsp</result> </action> </package>
这样似乎能行,测试一下,问题又来了,怎么根本不起作用啊.我通过测试发现,还是调用了原来主页的index.jsp,indexAction丝毫没起作用
这个原因是系统默认web.xml中,如下面index.jsp是主页
<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
于是笔者在web.xml中删除了上面那段代码,发现还是不行.因为系统会默认识别名字为index.jsp作为首页.有人说可以把index.jsp文件改个名字就可以了,这样确实可以,但我想到了另外一个比较好的办法,就是改web.xml中上面那段代码,改正这样.
<welcome-file-list> <welcome-file>test.jsp</welcome-file> </welcome-file-list>
这样系统找不到test.jsp主页,default-action-ref默认action将起到作用,这样就可以用www.zhangruifeng.com 直接能访问 www.zhangruifeng.com/indexAction了.
本文转自:http://blog.sina.com.cn/s/blog_62d3ddc00100z4vy.html
PS:个人觉得这位兄弟文章中有点问题,“有人说可以把index.jsp文件改个名字就可以了,这样确实可以,但我想到了另外一个比较好的办法,就是改web.xml中上面那段代码”这句话跟他实现的就是一个方法,不知道这位仁兄怎么想的。其实经过测试,Struts2如果发现你在web.xml中没有配置欢迎页面,那么本地又有一个index.jsp的文件,他同样能找到并且展示出来,如果本地没有这个index.jsp文件,那么此时才会重定向默认的action,在web.xml中配置一个不存在的欢迎也相当于给struts2一个假象而已。
相关推荐
-- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 --> <include file="struts-default.xml"> <!-- package提供了将多个Action组织为一个模块的方式 ...
在struts2中实现文件上传。 <struts> <include file="struts-default.xml"> <constant name="struts.i18n.encoding" value="GBK"> <!--设置临时上传目录--> <constant name="struts.multipart.saveDir" value="d:\...
在struts2框架中主配置文件struts-defalut.xml 文件中定义了大量的拦截器和拦截器栈。通过 default-interceptor-ref元素定义了 当前应用的默认拦截器栈,对用户的每次请求都需要调用拦截器栈中的每个拦截器来拦截...
<package name="mySturtsInterceptor" extends="struts-default"> <interceptor name="MyInterceptor" class="com.cn.system.interceptor.MyInterceptor"></interceptor> <interceptor-stack name=...
<default-interceptor-ref name="myStack"></default-interceptor-ref> 拦截错误跳转的页面 <global-results> <result name="error">/demo01/error.jsp </global-results> 2、 token ...
-- 更改struts2请求Action的后缀名,默认为action。若想去掉后缀,设为","即可 --> <constant name="struts.action.extension" value=","/> <!-- 当配置文件修改后,系统自动加载该文件。开发阶段建议打开此功能...
关于对用户的拦截验证。 <struts> <constant name="struts.devMode" value="true" /> <package name="front" extends="struts-default" > <!-- 部署自定义拦截器!! --> <interceptor-stack ...
* struts2需要的jar包 * jstl 需要的jar包 * junit需要的jar包 * 包的介绍 * cn.itcast.crm.container:重新封装spring容器 * cn.itcast.crm.dao:放置的是dao接口 * cn.itcast.crm.dao.impl:放置的是dao接口...
1-2、raw字符串: 有一种特殊的字符串称为raw字符串,被认为是纯文本,其中的\和{等不具有特殊含义,该类字符串在引号前面加r,下面是一个例子: ${r"/${data}"year""}屏幕输出结果为:/${data}"year" 转义 含义 ...
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...