我创建了一个Web动态项目Struts2Starter,对于Target运行时,Web容器是Apache Tomcat 7。 当我运行这个项目时,它会出错,"请求的资源(/ Struts2Starter /)不可用"。
这是路径:
部署的Webb文件夹元素/文件/内容以及Deployed 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" extends="default">
<action name="getTutorial" class="TutorialAction">
<result name="success">/success.jsp</result>
<result name="failure">/error.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Struts2Starter</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>
error.jsp文件
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Error Page!
</body>
</html>
的success.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Success Page!
</body>
</html>
但是,当我运行其他网络项目时,它们运行良好。我在web.xml中给了欢迎文件。我之后删除它,因为我不需要它。
我试过跑:
http://localhost:8083/Struts2Starter/
http://localhost:8083/Struts2Starter/TutorialAction
http://localhost:8083/Struts2Starter/TutorialAction.action
同样的错误,因为编译器找不到可用的项目。
项目已建成。端口是8083而不是8080,因为8080已经用于某些服务。但是,正如我之前提到的,其他Web项目使用8083在Apache 7中正常运行。在项目的Deployment Assembly中,我已经映射了我的用户库&#34; Struts2&#34; (在上面的项目资源管理器中显示)部署路径&#34; WEB-INF / lib&#34;。
我无法弄清楚为什么项目没有运行,有什么建议吗? 我已经引用了类似问题的其他线程,但大多数都是针对servlet的,我没有进行任何servlet映射,而是使用过滤器。
错误快照:
三江源。
答案 0 :(得分:0)
在struts配置中尝试以下
<?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" extends="default" namespace="/">
<action name=""> <!-- or you can include index.jsp file in web.xml -->
<result>/index.jsp</result>
</action>
<action name="getTutorial" class="TutorialAction">
<result name="success">/success.jsp</result>
<result name="failure">/error.jsp</result>
</action>
</package>
</struts>
如果您不提供命名空间默认命名空间为&#34;&#34;空字符串。这是documentation
答案 1 :(得分:0)
您已使用
http://localhost:8083/Struts2Starter/
http://localhost:8083/Struts2Starter/TutorialAction
http://localhost:8083/Struts2Starter/TutorialAction.action
但它们都没有映射到动作。应修改struts.xml
以更正正确的DTD。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="getTutorial" class="TutorialAction">
<result name="success">/success.jsp</result>
<result name="failure">/error.jsp</result>
</action>
</package>
试试这个网址
http://localhost:8083/Struts2Starter/getTutorial
http://localhost:8083/Struts2Starter/getTutorial.action
还将所有必要的jar文件下载到应用程序的lib文件夹中。例如commons-lang3-3.3.2.jar
。