【发布时间】:2014-04-30 19:57:17
【问题描述】:
我对网络世界很陌生,所以我试图创建一个简单的 基于 JSP-Servlet 的网页,但想在 Maven 上构建相同的网页。一世 谷歌几乎所有东西,但日食在抛出异常时 尝试创建 eclipse maven 项目,同时尝试创建 来自 Eclipse 的动态项目,它可以工作,但找不到简单的方法 将 Servlet 与 JSP 页面集成,最后我找到了一种方法,我 在 eclipe 中创建了一个动态 web 项目,然后创建了所需的 java 项目中的目录并用maven编译包含servlet 依赖。这是一种正确的方法吗,还是有一些非常 在包含 JSP 的 maven 中创建动态 Web 项目的简单方法, Servlet 两者。
现在,一旦我完成了我的方法,我的方法可能会被破坏,就在单击第一页按钮之后,
SEVERE: Allocate exception for servlet Controllertest
java.lang.ClassNotFoundException: com.abc.test.Controller
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:529)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:511)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:139)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1148)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
这是我的代码结构-
我的 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_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>de.vogella.wtp.jsp</display-name>
<welcome-file-list>
<welcome-file>ShowAll.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description>Controllertest</description>
<display-name>Controllertest</display-name>
<servlet-name>Controllertest</servlet-name>
<servlet-class>com.abc.test.Controller</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Controllertest</servlet-name>
<url-pattern>/Controllertest</url-pattern>
</servlet-mapping>
</web-app>
还有我的 servlet-
import java.io.IOException;
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Controllertest
*/
public class Controllertest extends HttpServlet {
private static final long serialVersionUID = 1L;
private static String DELETE_JSP = "/Delete.jsp";
private static String EDIT_JSP = "/Edit.jsp";
private static String SHOWALL_JSP = "/ShowAll.jsp";
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String forward="";
// Get a map of the request parameters
@SuppressWarnings("unchecked")
Map parameters = request.getParameterMap();
if (parameters.containsKey("delete")){
forward = DELETE_JSP;
} else if (parameters.containsKey("edit")){
forward = EDIT_JSP;
} else {
forward = SHOWALL_JSP;
}
RequestDispatcher view = request.getRequestDispatcher(forward);
view.forward(request, response);
}
}
我不认为我做了更多的调整。 为了更好地说明,这里是我的 Eclipse 部署程序集
我的 pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mkyong</groupId>
<artifactId>CounterWebApp3</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>CounterWebApp3 Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
<build>
<finalName>CounterWebApp3</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>${basedir}/src/main/java</directory>
<targetPath>WEB-INF/classes</targetPath>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.css</include>
<include>**/*.html</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
【问题讨论】:
-
提供完整的堆栈跟踪。此外,您有一个
com.abc.test.Controller的映射,但您的 servlet 类是Controllertest。
标签: maven jakarta-ee servlets