2

相关: 如何将欢迎页面设置为 struts 操作?

我正在尝试将我的欢迎页面 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" />

我只使用注释,请不要配置 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 动作指向的 JSP 页面的内容。谷歌网站管理员工具和一些机器人不关注这样的页面。

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

4

1 回答 1

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>

就个人而言,我并不觉得重定向特别不雅,而且它非常标准。

另一个好处是您可以将人们转移到基于动作的应用程序中;转发您的 URL 不会改变。通常,您希望禁止基于 JSP 的 URL。

于 2014-05-27T14:39:20.797 回答