struts2入门

时间:2012-06-02 14:38:37

标签: eclipse maven tomcat struts2

我正在尝试在Eclipse中设置maven和struts 2项目,但我遇到了问题。我选择创建简单的HelloWorld示例,然后添加一些其他功能,但我遇到了问题。


我在项目中有'struts.xml'路径:src / main / resources / 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.0.dtd">

<struts>

    <package name="default" namespace="/" extends="struts-default">

        <action name="Login">
            <result>/Pages/Login.jsp</result>
        </action>

        <action name="Index">
            <result>/Pages/Index.jsp</result>
        </action>

        <action name="Welcome" class="com.contactweb.main.Contact">
            <result name="SUCCESS">/Pages/Welcome.jsp</result>
        </action>
    </package>

</struts>

我也有web.xml,路径为src / main / web / WEB-INF / web.xml和内容:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>ContactWeb</display-name>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

从命令行我使用'mvn clean install'然后我得到.war文件到目标文件夹,那个.war文件我将在Tomcat下部署(也成功部署它)但是当我输入url时我得到错误:

  

请求的资源(/ContactWeb/Pages/Login.jsp)不可用。

相同的错误与不同的url-s唯一路径是不同的(/ContactWeb/Login.jsp,/ContactWeb/Login.action等)。

在我的项目中,我确实有Login.jsp,Index.jsp和Welcome.jsp。它们位于:src / main / web / Pages

我已经读过某些地方,在struts2中我只需要.action扩展到url,但它不起作用,为什么在struts.xml中是包名和命名空间?究竟需要什么?我已经阅读了该页面的内容是什么?

1 个答案:

答案 0 :(得分:0)

还没有足够的信息可以提供帮助,但足够的错误是它不适合评论。

  • 你为什么使用古老的servlet规范(2.3?由于各种原因至少应该是2.5。)
  • 你为什么使用旧版本的S2(2.0?我们在2.3上。)
  • Welcome操作的结果名称几乎肯定是默认值"success",除非您明确没有使用S2结果名称。哪个IMO会是一个坏主意。
  • 我们不知道您要部署的上下文,因此我们不知道您的网络应用的路径。如果您要部署到ContactWeb上下文,则Login操作将位于/ContactWeb/Login.action(或任何后缀,如果您有后缀)。
  • 您应该(a)启用devMode,然后(b)在进行问题排查时将日志记录设置为DEBUG
  • 您的JSP页面是否存在于src/main/webapp/Pages目录中?请注意,通常将JSP隐藏在WEB-INF下面来隐藏JSP直接访问 - 我建议您遵循这种做法。
  • 您的启动日志中是否有任何内容表明该应用未启动?

我建议阅读一些S2 Guides;如果您不知道“包”和“命名空间”属性意味着什么,那么IMO您应该退后一步,尝试了解一些基础知识,然后在Web容器中随机抛出代码和配置。