struts 调用首页 action 的两种方法
发表于:2010-08-08 | 5 个回复

  由于 Struts 将实现于页面分离,又是以提交驱动的方式,所以不能象 jsp、php 那样直接设置首页为 index.jsp 或 index.php 就可以的。需要访问 struts servlet 并执行后台应用后由后台定向到前台 jsp 文件,所以首页的配置就出现了一点小问题。

  大多数人想到的方法是建立 index.jsp (或 html)文件,当访问这个文件时定向到 Struts 后台 action。虽然也能解决问题,不过并不完美。因为地址栏 url 将会变成定向后的 url。如 index.jsp 中定向到 index.do ,那么访问 http://www.mxjava.com 后,url 将变成 http://www.mxjava.com/index.do。

  有两种方法可以解决这个问题:
1、配置 web.xml 的 welcome-file-list 如下:

	<welcome-file-list>
		<welcome-file>index.do</welcome-file>
	</welcome-file-list>

  在网站根目录下创建 index.do 文件。注意这个文件一定要创建,否则系统出错。

2、将 index.do 的 Struts 配置改为如下:

	<package name="home" extends="struts-default" >
		<action name="" class="indexAction">
			<result type="freemarker">/WEB-INF/ui/index.html</result>
		</action>
	</package>

  action 的 name=”" 即可。

  两种方法都能解决问题,并没有多少不同,个人更倾向于第一种,毕竟 struts 的 action name=”" 看上去比较怪异。

评论留言

  1. 你也在杭州工作啊~第一次来~

  2. 在网站根目录下创建 index.do 文件。注意这个文件一定要创建,否则系统出错
    index.do内容些什么呢?

  3. 首先看看设置的Struts后缀名是不是*.do。如果是的话,需要有一个name是index的Action配置。

  4. 都有了 可是首页它显示的是index.do文件中的内容

  5. 那么就在index的Action里打个断点,确认一下是否有进Actoin。如果进了,再看这个Action的Result指向的是哪个html或jsp文件。如果没有进,就说明配置上还有问题。