项目所在路径,以及目录结构如下:
D:/code/java/temp/myproj/
- src/
- ColorSelect.java
- web/
- WEB-INF/
- web.xml
- index.jsp
index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><body>
<p>My favorate color is: </p>
<form method="POST" action="ColorSelect.do">
<select name="color" size="1">
<option>red
<option>blue
<option>green
</select>
<input type="SUBMIT">
</form>
</body></html>
ColorSelect.java:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ColorSelect extends HttpServlet{
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String c = request.getParameter("color");
out.println("<br>color=" + c);
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>ColorSelect</servlet-name>
<servlet-class>ColorSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ColorSelect</servlet-name>
<url-pattern>/ColorSelect.do</url-pattern>
</servlet-mapping>
</web-app>
配置方法
- 将项目目录导入IDEA
点击 Open ,选中项目文件夹,确定。
操作过程
导入结果
导入项目目录后,如果你的项目中有 web.xml,IDEA应当会提示检测到 web 框架("Web framework is detected."),根据提示点击确认即可。
注意事项:
a. 如果这一步没有提示配置 framework,说明你项目中的 web.xml 没有被识别到。那么你需要让IDEA帮你生成正确的 web 部署目录,方法如下: 先把你的 web.xml 从项目中剪切到别的地方去。然后在导航窗格的"myproj"这一行上右键 -> Add Framework Support -> 选择 web application,系统会生成一个正确的 web/WEB-INF/web.xml 目录结构,用你原先的 web.xml 替换掉这个目录中新生成的 web.xml 中即可。
b. 如果更新 framework 后出现bug(小概率),执行下面的配置时打不开 Project structure,那么关闭 IDEA 然后重新打开就行了。
2. 配置 Project structure
Project - Project compiler output 需要指定一个用于存放编译后的输出文件的目录。我设置为 D:\code\java\temp\myproj\out ,点击 apply 应用。后面项目在编译运行的时候,会自动为我创建这里配置的 out 文件夹。
Modules(该栏目的作用是,指定项目所在目录,指定需要进行编译的源码目录 src,指定编译时的依赖库 library)
一般来说点进来这里时应该已经有了一个modules,如果没有或者误删了,就按照如下方法重新导入项目目录
"+" -> import Module -> 选中项目文件夹 "myproj" OK -> Create Module from existing sources -> 一路 next 即可。
Modules - Sources 的配置:首先注意要把 src 配置为 Sources 类型的目录,选中它然后点一下 “marked as Sources”,成功后 src 目录图标应当变成蓝色。
Modules - Dependencies 的配置(配置编译时的JDK依赖,源码文件,Tomcat依赖):默认已经有 JDK1.8 和 <Module Source>,这里必须加一个 Tomcat 的lib目录,不然编译时候找不到 Servlet 相关的包。添加方法是:Dependencies -> "+" -> Libray -> 选择 Tomcat,添加完成后进行勾选。
Libraries:空的就行,不需要配置。
Facets(Facets 表示配置 web 部署文件和资源目录):一般来说已经有了,如果这里没有或误删除了的话,按如下方法创建配置
点击“+”新建 -> Web Application。
Deployment Descriptions (部署描述符)指定为 WEB-INF 目录下的web.xml。
Web Resources Directories (资源目录)指定 myproj/web/ 目录,实际上所有web文件和 WEN-INF 确实都在这个 /web 目录下面(除了src 和 out)
Artifacts(翻译为“工件”,表示编译输出后产生一个 .war 文件或完整的 web 项目,这里生成的工件目录可以直接拷贝到 Tomcat 的 webapps 目录下直接运行,工件一般在生成在 myproj/out/artifacts 目录下):配置方法为 Artifacts -> "+"新建 Web application exploded(学习环境用 exploded, 生产环境这里可以选择 archive 来生成 .war 文件) -> From modules ,确认。
注意事项:
Artifacts - Output layout:有可能只有 Web facet 资源文件,如果没有 WEB-INF/classes 目录(这是编译输出后产生到 myproj/out/production 中的class文件,应当设置让IDEA帮你转储到这个目录下),那么需要进行如下配置:从右边的 Available Elements 选中 project1 项目,右键 - put into output root。
3. 配置 Run/Debug Configuration
前面的配置完成后,已经可以通过点击 Build - Build Project 对项目中的java文件进行编译了。但是只能编译出 class 文件(输出到 myproj/out/production/ 目录下),但不能在IDEA中启动Tomcat服务,那么需要进行如下配置:Edit Configurations -> 点击“+” 新建 -> Tomcat Server (Local) -> 找到 Deployment 配置 -> “+”新增 Artifact 配置,确定即可。这里配置好后,将会在 server 启动时候,把所有文件按照正确位置给部署到工件(myproj/out/artifact/)中。
运行
完成以上配置后,运行该项目,IDEA 会自动启动 Tomcat 服务器,启动后会自动弹出浏览器并访问 http://localhost:8080/ ,选择一个喜欢的颜色并且点击提交按钮后可以把表单 post 到 Servlet 中,然后看到返回的结果如下:
另附上运行成功后的完整项目的生成目录: