文章阅读
为何web.xml中的welcome-file-list不能是Action地址
文章类别: JDiy常见问题解答  更新日期: 2013-06-22 23:07:39.0  点击次数:9286

问题描述:

有位网友在使用JDiy框架开发项目时,在web.xml中做了如下配置:

<!-- ..部分代码略.. -->
<welcome-file-list>
  <welcome-file>index.jd</welcome-file>
</welcome-file-list>
<!-- ..部分代码略.. -->

原本想在访问默认页的时候,直接交由action处理,而运行的时候,却出现404文件未找到的错误。

原因分析:

这是由于web.xml中的welcome-file-list配置段仅对servlet和普通jsp页面有效,而JDiy框架采用的是JDiyLoadFilter来加载的,它是一个Filter而不是Servlet,这也就意味着我们不能将action地址设为默认页。

解决方法:

方法1(采用网页重定向)

首先我们在web.xml中随便定义一个jsp页面作为默认页,代码片段:

<!-- ..部分代码略.. -->
<welcome-file-list>
  <welcome-file>welcome.jsp</welcome-file>
</welcome-file-list>
<!-- ..部分代码略.. -->

然后我们再去welcome.jsp中做重定向,代码如下:

<html>
<head>
<meta http-equiv="refresh" content="0;url=index.jd">
</head>
<body></body>
</html>

这种方法有一些弊端,如,由于它是客户端重定向(实际上会产生两次请求);浏览器地址栏中的地址也变成了跳转后的地址,不利于用户体验,同时也不利于SEO搜索引擎优化等。

方法2(采用forward action)

这是JDiy官网推荐的方法,那就是直接将请求转发至Action。
首先如同方法1一样,在web.xml中随便定义一个jsp页面作为默认页,如:

<!-- ..部分代码略.. -->
<welcome-file-list>
  <welcome-file>welcome.jsp</welcome-file>
</welcome-file-list>
<!-- ..部分代码略.. -->

然后不同的是,welcome.jsp代码变成如下这样:

<%@ page import="net.jdiy.core.JDiyAction" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%  JDiyAction.forwardAction("index.jd"); return;  %>

这儿我们使用到了JDiyAction类的forwardAction静态方法,直接将请求转发到action,这种方法不会产生多余的请求,浏览器中显示的地址也不会发生改变,是最完美的解决方案~~

[ 上一篇 Dao对象的save方法是如何判断insert还是upda…   下一篇 如何在jdiy框架环境中使用其它上传组件,如s… ]
鄂ICP备18006629号-1       鄂公网安备 42050302000160号


技术支持QQ:39886616 QQ群:7759217
联系JDiy作者: ziquee java/javascript WEB编程
E-mail:ziquee@abcbcd.com http://189.cn
*尊姓大名:

*电子邮箱:

*QQ号码:

*留言内容:
提交留言
取消
loading...
注:带"*"的为必填项。请如实填写您的E-mail或QQ号码以便我们能与您取得联系。