将index.jsp重定向到Struts 2 Action

时间:2014-05-27 13:12:46

标签: java struts2 annotations struts2-convention-plugin

相关: How can I set the welcome page to a struts action?

我试图将欢迎页面index.jsp重定向到一个动作(Struts2)。 相关帖子中没有任何选项适合我:

type Status report
message /malelo/indexRedir
description The requested resource (/malelo/indexRedir) is not available.

我遵循 FLOW 结构:

http://localhost:8580/malelo/ SEND TO WELCOME PAGE
     --->  (root)index.jsp SEND USER TO (by redirect, I need forward)
          --->  (indexRedir) IndexAction.java SEND USER TO
               ---> (WEB-INF/content) index-login.jsp

这有效,但不太优雅(index.jsp):

<% 
  response.sendRedirect("indexRedir");
%>

我试图这样做(index.jsp):

<jsp:forward page="indexRedir" />

我只使用Annotation,没有配置XML文件。

@Action (value = "indexRedir", results = 
    { @Result (location = "index-login.jsp", name = "ok") } ) 

修改

只是为了澄清,这是一个由response.sendRedirect发送给浏览器的http标头:

HTTP/1.1 302 Found
Date: Tue, 27 May 2014 16:15:12 GMT
Location: http://cmabreu.com.br/basico/
Content-Length: 0
Connection: close
Content-Type: text/plain

此位置(http://cmabreu.com.br/basico/)指向index.jsp,其中包含:

<% 
  response.sendRedirect("indexRedir");
%>

显示indexRedir action指向的JSP页面的内容。 Google网站管理员工具和一些机器人不会关注此类网页。

在此处查看更多内容:http://en.wikipedia.org/wiki/HTTP_302

1 个答案:

答案 0 :(得分:4)

要转发操作,您必须配置过滤器以便向前运行;通常它们没有,尽管这是依赖于容器的。例如,在Tomcat下:

<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher> 
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>INCLUDE</dispatcher> <!-- If you want includes as well -->
</filter-mapping>

就个人而言,我没有发现重定向特别不优雅,而且非常标准。

另一个好处是,您可以将人们引入基于动作的应用程序;使用转发您的网址不会更改。通常,您希望禁止基于JSP的URL。