👍 👎 💯 👏 🔔 🎁 ❓ 💣 ❤️ ☕️ 🌀 🙇 💋 🙏 💦 💩 ❗️ 💢
————————————————
文章目录
知识点
maven简介
- Maven是一种用于软件项目管理的工具,用来管理项目的构建,汇报及文档生成等功能
- 依赖管理
maven作用
使用IDEA创建一个maven项目
- 然后一路finish直到出现如下页面表示创建成功
main文件配置
- Test用于测试代码,resources用于提供资源的文件,java写源代码
pom.xml文件配置
- 导入HttpServlet的jar包
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
- 导入MySQL的包
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
- 这是最后我们导出的war包的配置
<groupId>org.example</groupId>
<artifactId>20200712</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
- 这是一些插件,第一行的finalName是war包的名字
<build>
<finalName>listen</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
写实现代码
- 在main文件里创建java文件继承HttpServlet
- 按照请求报文方法重写doXX方法(如果请求是get方法,就重写doGet方法)
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HttpServletCal extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求中的数据
//getParameter得到的都是String类型的。用于读取提交的键值对中的值(http://a.jsp?id=123中的123)
String aStr = req.getParameter("a");
String bStr = req.getParameter("b");
int ret = Integer.parseInt(aStr) + Integer.parseInt(bStr);
//将结果写回到响应报文中
resp.getWriter().write("<h1>ret=" + ret + "</h1>");
}
}
配置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_3_1.xsd"
version="3.1"
metadata-complete="true">
<servlet>
<servlet-name>HttpServletCal</servlet-name>
<servlet-class>package.HttpServletCal</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HttpServletCal</servlet-name>
//特别注意这个pattern的前面要加上“/”
<url-pattern>/cal</url-pattern>
</servlet-mapping>
</web-app>
这四个的目的就在于将Servlet的类和url关联起来,这样后续tomcat收到HTTP请求后,发现url中带有的路径与web.xml路径相吻合,就会找到对应的servlet的代码
生成war包
- maven的生命周期
- 打成功的war包在taget中找
部署到Tomcat
- 直接把war包拷贝到Tomcat的webapps目录中即可(一般Tomcat会自动检测到你的war包)
出现这样说明部署成功
tomcat基本原理
Tomcat启动/初始化
- 会创建一个Socket对象绑定端口号(一般是8080),然后扫描然后扫描webapps(把每个webapps加载到内存中)
- 这里主要加载对应的web.xml文件
- 创建一个单独的线程,监控webapps目中的webapp的变化,如果有就会自动加载
处理过程
- 收到GET请求处理URL比如我的(lmp是war包的名字对应 pom.xml中的finalName)
- 根据一级路径确认是webapp中的哪个目录
- 再根据二级路径/cala 找到对应的servlet的类的名字
- 根据类的名字进行类加载,也就是反射机制得到该类
- 初次加载完毕,会调用init方法(如果已经加载了,后续就不需要加载了)
- 调用该类的service方法,service方法会根据Http请求中的方法,决定调用对于doXX方法(这也是我们需要重写doXX方法的原因)
先赞后看,养成习惯!!!^ _ ^♥♥♥
每天都更新知识点哦!!!
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘记关注我哦!