我想创建一个struts应用程序,它显示index.jsp文件,其中包含search.jsp文件的链接.Struts 1.2 app的目录结构如下
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 - ,如下所示
我尝试了一些解决方案,但似乎没有解决问题的方法。我们将不胜感激。
我在以下网址中添加了war文件
http://www.fileconvoy.com/dfl.php?id=g6daddfa41e8981249992832312c465146f9b6bc45
谢谢
答案 0 :(得分:1)
Struts假设所有请求都通过Struts ActionServlet,你通常没有配置它。使用servlet-mapping *.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。您需要添加一个转发到视图的动作映射。
答案 1 :(得分:1)
您的html:link
代码属性forward
错误。
根据Struts link
tag specification:
forward - 使用此属性的值作为要查找的全局ActionForward的名称,并使用模块相对或 在那里找到了上下文相对的URI。如果前锋是模块相对的 然后它必须指向一个动作而不是一个页面。
因此,您的全局转发应该指向Struts Action而不是页面。
我希望这可以解决你的问题。
查看相关示例here。