我正在尝试运行我的第一个简单的Web应用程序。 我有一节课:
public class MainServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
我用Maven来构建我的项目。 安装完项目后,我在Tomcat配置中进行了以下设置 TOMCAT
运行我看到的配置后,部署成功完成 CONFIGURATION
但是当我试图打开localhost时:8080 /我观察Tomcat主页,也是在localhost:8080 / mypage.jsp
我该怎么做才能看到我的“Hello world”?
答案 0 :(得分:3)
我已经做了一个新的答案,因为最后一个太长并且没有到达现场。
您的问题与简单的命名问题不同,问题在于您使用JEE API依赖性
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
<!-- the other dependencies -->
<dependency>
<groupId>javaee</groupId>
<artifactId>javaee-api</artifactId>
<version>5</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
</dependency>
在你的战争中得到打包,这个API JUST为你提供了包含Mock类的包,这些类具有相同的名称和相同的方法但是里面没有逻辑而且服务器负责提供真实的实现,里面有一些逻辑,所以这个依赖应该用提供的范围标记,这意味着它们不应该在WAR中打包,否则它们会在运行时甚至在部署时抛出异常,所以你标记为我说的范围是这样提供的
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
<scope>provided</scope>
</dependency>
<!-- the other dependencies -->
<dependency>
<groupId>javaee</groupId>
<artifactId>javaee-api</artifactId>
<version>5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<强>建议强>
标记tomcat与提供范围的依赖关系,因为您的服务器Tomcat将提供您不需要将它们放在战争中的那些软件包 所以这样做
<dependency>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>