Servlet高级编程
MVC思想
现在我们学习的内容涉及到前后端的交互,那么就肯定会考虑到,一个项目是如何将前端代码/后端代码/数据库表进行交流的.
Servlet基础
Servlet简介
Java Servlet 是运行在 Web 服务器或应用服务器上的程序(后端),它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
1.Servlet 是 JavaEE 规范之一。规范就是接口
2.Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。
3.Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。
Servlet任务
- 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
- 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
- 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
- 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
- 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。
Servlet环境
Java Servlet 包是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类。Servlet 可以使用 javax.servlet 和 javax.servlet.http 包创建,它是 Java 企业版的标准组成部分,Java 企业版是支持大型开发项目的 Java 类库的扩展版本。
JDK环境以及Tomcat
创建Servlet实例
Maven
首先创建maven项目,maven是一个项目管理工具.Maven的核心功能是合理叙述项目间的依赖关系,通俗点 就是通过pom.xml文件的配置获取jar包不用手动的去添加jar包.用来管理我们项目当中的会用到的jar包.以免有时候会遇到jar包版本冲突等问题.例如当涉及到某个版本的jar已经跟你现在使用的技术不匹配了,此时我们就可以通过Maven使用更高版本的jar包.而不用还要幸苦的去网上下载.然后导入.以下是Maven的功能
1构建工程,
2管理jar,
3.编译代码,
4.自动运行单元测试,
5.打包
6.生成报表,
7.部署项目,生成web站点
安装maven
首先将Maven安装包解压,解压到你所需要的文件夹.例如:D:\Java\apache-maven-3.6.3,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IHY5mVuy-1682326936094)(C:\Users\cl260\AppData\Roaming\Typora\typora-user-images\image-20230421140258467.png)]
解压过后进入conf文件夹,找到setting.xml文件,这是Maven的配置文件.使用文本方式打开.注意在修改配置的时候不要乱删,以免删到注释等信息导致之后Maven运行不了
设置Maven仓库位置,由于Maven管理jar比较多,所以会将jar下载之后缓存到仓库中,建议还是不要放到c盘.
<!-- 本地仓库地址-->
<localRepository>D:\maven\mavenRepository</localRepository>
<!--找到mirrors节点,设置以下内容.阿里云镜像:用于下载jar包,国外网站太慢,所以使用国内镜像网站下载-->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
设置环境变量
新建环境变量:类似于JAVA_HOME环境变量
MAVEN_HOME=D:\maven\apache-maven-3.8.4(以自己安装的路径为准)
在path变量中加入
%MAVEN_HOME%\bin
然后保存,关闭
验证MAVEN安装:mvn -version
创建项目
1、编写一个类去实现 Servlet 接口 2、实现 service 方法,处理请求,并响应数据 3、到 web.xml 中去配置 servlet 程序的访问地址
然后再idea中创建maven项目.创建的项目是一个maven项目.通过pom.xml文件可以通过依赖直接使用jar包,就不用手动导包了
<dependencies>
<!--加入servlet依赖(servlet的jar)-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!--jsp的依赖(jsp相关的jar加进来)-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
然后就能在类中直接继承相关类了,编写一个ServletTest.class
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import java.io.IOException;
/**
* @Author: 恐龙
* 创建servlet项目
*/
//此类一定要继承HttpServlet
public class servletTest implements Servlet {
// 初始化
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println(1);
}
// 读取配置
public ServletConfig getServletConfig() {
System.out.println(2);
return null;
}
// 服务 处理请求
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println(3);
}
// 获取servlet信息
public String getServletInfo() {
System.out.println(4);
return null;
}
//销毁
public void destroy() {
System.out.println("火烧屁屁咯");
}
}
到web.xml中配置Servlet程序的访问地址
<?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 标签给 Tomcat 配置 Servlet 程序 -->
<servlet>
<!-- servlet程序名称 随便起(一般是类名)-->
<servlet-name>kunkun</servlet-name>
<!-- 这是servlet程序的全类名-->
<servlet-class>servletTest</servlet-class>
</servlet>
<!-- 此标签给servlet程序提供访问地址-->
<servlet-mapping>
<!-- 定位servlet名称-->
<servlet-name>kunkun</servlet-name>
<!-- 访问地址-->
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
Servlet生命周期
所谓Servlet生命周期就是Servlet从创建到最终销毁的过程(可以看作人的一生,从受精卵到最后化为黄土的过程).在Servlet的生命周期每个阶段都会有相应的方法进行调用.
- 初始化:Servlet 初始化后调用 init () 方法。
- 处理请求:Servlet 调用 service() 方法来处理客户端的请求。
- 销毁:Servlet 销毁前调用 destroy() 方法。
- 回收:,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的
init() 方法
初始化/加载阶段:只会被调用一次,而且是在Servlet被创建的时候才调用.当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。