Idea不用Archetype创建Web项目
以新建模块为例。
新建Maven项目
- 不勾选【Create from artchetype】,直接Next
pom中添加一句话:
<artifactId>XXX</artifactId> <!--↓ 加此句 --> <packaging>war</packaging> <!--↑ 加此句 -->
在src\main下新建文件夹【webapp】
在webapp下新建文件夹【WEB-INF】
在【WEB-INF】下新建文件【web.xml】
文件夹结构: src |--main |--|--webapp |--|--|--WEB-INF |--|--|--|--web.xml
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>
</web-app>
webapp文件夹上出现了一个小红点,表示web功能生效,全赖pom中哪句war。
确认
Ctrl+Shift+Alt+S(Project Structure·项目结构)
选择左侧的Modules,选择对应的模块,选择下面的【Web】
看看项目中是否有Web模块,deploymentDescriptiors是否选中了web.xml。不是的话就手动改一下。
部署项目到Tomcat
- Run → Run Configuration → Tomcat Server → Local(前提是本地已经装好Tomcat)
- Deployment(部署)→右侧的+→选择【Artifacts】→选择需要部署的模块
在webapp下放置一个jsp文件,如【index.jsp】,内容可以只是HTML
Hello World!
右键运行这个jsp文件,目的是调出tomcat的面板。这是页面是404。
双击tomcat面板中的工程,可以正常显示页面。
测试Servlet
pom中添加依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
写Servlet
package org.ah.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/action")
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("success");
}
}
测试
重启Tomcat,双击模块名运行,输入servlet的url。