Tomcat配置有些麻烦,几个人一起用不如Maven来的快,浅浅研究一下怎么用Maven和它内置的Tomcat完成Web项目的搭建。
前提:安装好IDEA与Git
创建Maven工程
创建新工程
选webapp
按需改名
设置Maven
如果想直接设置IDEA的maven配置省去每次修改,在File-Settings-Build, Excution, Deployment中做以下的同样修改:
我用的IDEA自带的Maven,settings.xml在安装目录\plugins\maven\lib\maven3\conf\settings.xml
,貌似默认的是在C:\Users\用户名\.m2
中,其中settings.xml
会指向下一个选项本地目录,不想放C盘的话可以勾Override改位置,也可以改上述settings.xml:
1 2 3 4 5 6 7 8 9 10 11 12 <settings xmlns ="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" > <localRepository > 你想放的本地目录</localRepository > ...(其他内容) </settings >
Finish创建完成。
创建资源文件
我是按网上教程来的第一步新建工程,但是出来结果跟网上不太一样,所以如果你的跟我目录结构一样可以继续往下看,不然可能不太一样。
创建Java文件夹
右键项目名:
创建Directory:
把这几个全部添加上:
点这几个添加就不用另操作添加关联了,所以不要自己写文件名,到这一步,创建了一个普通的Java项目而不是Web项目。
创建Web项目文件夹
在src\main
中添加文件夹webapp,点开File-Project Settings:
(图源csdn博客 )
修改路径:
Deployment Descriptors中的Path设成你的webapp完整路径\WEB-INF\web.xml
,Web Resource Directory设成你的webapp完整路径
,完成后webapp文件夹样式改变,可以创建index等文件写Web项目了:
引入maven内置Tomcat依赖
修改pom.xml
,看注释:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 <?xml version="1.0" encoding="UTF-8" ?> <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/xsd/maven-4.0.0.xsd" > <modelVersion > 4.0.0</modelVersion > <groupId > org.example</groupId > <artifactId > hjb</artifactId > <version > 1.0-SNAPSHOT</version > <packaging > war</packaging > <properties > <servlet-api.version > 3.1.0</servlet-api.version > <tomcat.version > 9.0.39</tomcat.version > </properties > <dependencies > <dependency > <groupId > org.apache.tomcat.embed</groupId > <artifactId > tomcat-embed-core</artifactId > <version > ${tomcat.version}</version > <scope > provided</scope > </dependency > <dependency > <groupId > org.apache.tomcat.embed</groupId > <artifactId > tomcat-embed-jasper</artifactId > <version > ${tomcat.version}</version > <scope > provided</scope > </dependency > </dependencies > <build > <finalName > Hello</finalName > </build > </project >
配置run/debug
添加配置:
添加项目working directory(点后面小图标可以直接添加),command line输入clean install tomcat7:run
就可以了。
Maven依赖下载完成
右下角Import Changes,第一次配需要漫长的等待。
也可以在右侧点开Maven查看并import:
之后run,没有报错可以访问localhost:8080/项目名了。
(补充)创建一个Servlet
注意依赖要引入<servlet-api.version>3.1.0</servlet-api.version>
(见引入maven内置Tomcat依赖这节),在src\main\java
中new一个package,package中new一个servlet:
注意使用servlet注解,可以省去web.xml
中的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 package hjbServlet;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(urlPatterns = "/") public class hjbServlet extends HttpServlet { protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("---执行了doPost---" ); } protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("---执行了doGet---" ); } protected void processData (javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { System.out.println("---处理数据---" ); response.setContentType("text/xml;charset=utf-8" ); response.setCharacterEncoding("utf-8" ); response.setHeader("Cache-Control" ,"no-cache" ); String test="test" ; response.setContentType("text/html; charset=UTF-8" ); try { response.getWriter().print(test); response.getWriter().flush(); response.getWriter().close(); } catch (IOException e){ e.printStackTrace(); } } protected void service (javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { System.out.println("---执行了service---" ); processData(request,response); } }