Struts2请求的资源不可用

时间:2014-04-24 02:54:11

标签: xml struts2

我是struts的新手。我在tomcat上运行我的Struts应用程序时遇到请求的资源不可用错误。

我的目录结构是:

enter image description here

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

请帮助我缺少的东西

3 个答案:

答案 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>