我正在尝试在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中是包名和命名空间?究竟需要什么?我已经阅读了该页面的内容是什么?
答案 0 :(得分:0)
还没有足够的信息可以提供帮助,但足够的错误是它不适合评论。
Welcome
操作的结果名称几乎肯定是默认值"success"
,除非您明确没有使用S2结果名称。哪个IMO会是一个坏主意。ContactWeb
上下文,则Login
操作将位于/ContactWeb/Login.action
(或任何后缀,如果您有后缀)。devMode
,然后(b)在进行问题排查时将日志记录设置为DEBUG
。src/main/webapp/Pages
目录中?请注意,通常将JSP隐藏在WEB-INF
下面来隐藏JSP直接访问 - 我建议您遵循这种做法。我建议阅读一些S2 Guides;如果您不知道“包”和“命名空间”属性意味着什么,那么IMO您应该退后一步,尝试了解一些基础知识,然后在Web容器中随机抛出代码和配置。