我是struts的新手。我在tomcat上运行我的Struts应用程序时遇到请求的资源不可用错误。
我的目录结构是:
struts.xml中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- remove these constant elements in production -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="app02a" namespace="" extends="struts-default">
<action name="Product_input">
<result>/jsp/Product.jsp</result>
</action>
<action name="Product_save" class="app02a.Product" method="execute">
<result>/jsp/Details.jsp</result>
</action>
</package>
</struts>
Web.xml中
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Restrict direct access to JSPs.
For the security constraint to work, the auth-constraint
and login-config elements must be present -->
<security-constraint>
<web-resource-collection>
<web-resource-name>JSPs</web-resource-name>
<url-pattern>/jsp/*</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
注意:
1.我已将所有jar包含在lib文件夹中,并且它们位于构建路径中
2.我正在使用 struts-2.3.16.1
3.我正在尝试执行此网址
http://localhost:8080/app02a/Product_input.action
请帮助我缺少的东西
答案 0 :(得分:0)
在package
元素中,将namespace
更改为&#34; /&#34;:
<package name="app02a" namespace="/" extends="struts-default">
...
</package>
答案 1 :(得分:0)
如果您使用的是struts-2.3.16.1,则应使用
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
请参阅Simple Example处代码下方的注释。
答案 2 :(得分:0)
上面提到的struts.xml“app02”包根据提到的URL有一些错误
http://localhost:8080/app02a/Product_input.action
而是使用struts默认包,它应该像下面提到的那样改变。
<package name="app02a" namespace="/app02a" extends="struts-default">
<action name="Product_input">......</action>
<action name="Product_save" class="app02a.Product" method="execute">....</action>
</package>