0

我想创建一个显示 index.jsp 文件的 struts 应用程序,其中包含指向 search.jsp 文件的链接。Struts 1.2 应用程序的目录结构如下

Struts 1.2 目录列表

在此处输入图像描述

web.xml的内容如下

      <display-name>MiniHR</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>  
  <jsp-config>
   <taglib>
    <taglib-uri>http://struts.apache.org/tags-html</taglib-uri>
    <taglib-location>/WEB-INF/lib/struts-html.tld</taglib-location>    
  </taglib>
   </jsp-config>
   <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.</url-pattern>
    </servlet-mapping>
   <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
</web-app>

struts-config.xml的内容如下

<global-forwards>
    <forward name="search" path="/search.jsp"></forward>
</global-forwards>

index.jsp的内容如下

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<body>
    Add Employee<html:link forward="search">Search Employees</html:link>
</body>

现在,当我在 Eclipse 上运行此应用程序时,它显示HTTP 状态 500 -如下

在此处输入图像描述

我尝试了几个解决方案,但似乎没有解决问题。我们将不胜感激。

我在以下 URL 中添加了 war 文件

http://www.fileconvoy.com/dfl.php?id=g6daddfa41e8981249992832312c465146f9b6bc45

谢谢

4

2 回答 2

1

Struts 假定所有请求都通过 Struts ActionServlet,而您显然没有配置它。使用 servlet-mapping 设置 Struts servlet *.do

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

然后你需要在struts.xml重定向到你的视图中定义一些动作映射。如果您在 JSP 中使用 struts 标记,则不能直接访问 JSP。

编辑

您已使用新web.xml内容更新了您的问题,因此已涵盖上述内容。但是,您仍然不能直接访问 JSP。您需要添加一个转发到您的视图的操作映射。

于 2013-05-09T05:00:00.520 回答
1

您的html:link标签属性forward错误。

根据Strutslink标签规范

forward - 使用此属性的值作为要查找的全局 ActionForward 的名称,并使用在那里找到的模块相对或上下文相对 URI。如果转发是模块相关的,那么它必须指向一个动作而不是一个页面。

所以,你的全局转发应该指向一个 Struts Action 而不是一个页面。

我希望这可以解决您的问题。

在此处查看相关示例。

于 2013-05-09T06:29:46.830 回答