我正在尝试在 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 文件获取到目标文件夹,我将在 Tomcat 下部署该 .war 文件(它也成功部署)但是当我输入 url 时出现错误:
The requested resource (/ContactWeb/Pages/Login.jsp) is not available.
同样的错误,不同的 url-s 只是路径不同(/ContactWeb/Login.jsp,/ContactWeb/Login.action 等)。
在我的项目中,我有 Login.jsp、Index.jsp 和 Welcome.jsp。它们位于:src/main/web/Pages
我在某个地方读到,在 struts2 中我需要 .action 扩展到 url,但它不起作用,为什么在 struts.xml 中是包名称和命名空间?到底需要什么?我读过它是针对页面将要显示的内容?
最佳答案
目前还没有足够的信息来提供帮助,但错误太多,不适合发表评论。
- 您为什么要使用古老的 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 ;如果您不知道“包”和“命名空间”属性的含义,那么在我看来,您应该退后一步,尝试了解一些基础知识,然后再随机向 Web 容器中添加代码和配置。
关于eclipse - 开始使用struts2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10863201/