Java web后端2 Servlet Maven HttpServlet ServletConfig ServletContext HTTP协议

本文详细介绍了Java Web后端开发中的Servlet基础,包括Servlet的生命周期、抽象类与接口、ServletConfig和ServletContext的使用。此外,还讲解了HTTP协议的基本概念、请求和响应格式,以及如何在IDEA中创建和配置Servlet项目。通过对Servlet的深入理解,有助于开发者更好地处理Web应用程序的请求和响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建项目

新建项目

Java Enterprise
JDK1.8
Web Application
Tomcat
JAVA
在这里插入图片描述
默认
在这里插入图片描述
过程需要联网

Maven的配置

IDEA内置Maven
在这里插入图片描述
修改本地仓库位置,因为以后会越来越大
替换配置文件:
阿里云镜像下载
在这里插入图片描述

Servlet基础

在这里插入图片描述

1.动态Web资源开发

2.Servlet是使用Java语言编写的运行在服务器端的程序,Servlet由Servlet容器提供,所谓的Servlet容器是指提供了Servlet 功能的服务器(本书中指Tomcat),Servlet容器将Servlet动态的加载到服务器上。

3.Servlet是指任何实现了这个Servlet接口的类,Servlet主要用于处理客户端传来的HTTP请求,并返回一个响应,它能够处理的请求有doGet()和doPost()等方法。

请求静态资源(图片,文档等):读出来后直接返回响应

请求Servlet:
Servlet的请求首先会被HTTP服务器接收,HTTP服务器只负责静态HTML页面的解析,对于Servlet的请求转交给Servlet容器,Servlet容器会根据web.xml文件中的映射关系,调用相应的Servlet,Servlet将处理的结果返回给Servlet容器,并通过HTTP服务器将响应传输给客户端。

Servlet容器:一段内存空间
在这里插入图片描述

Servlet技术特点

Servlet技术具有如下特点:
1.方便:Servlet提供了大量的实用工具例程,如处理很难完成的HTML表单数据、读取和设置HTTP头,以及处理Cookie和跟踪会话等。
2.跨平台:Servlet用Java类编写,可以在不同操作系统平台和不同应用服务器平台下运行。
3.灵活性和可扩展性:采用Servlet开发的Web应用程序,由于Java类的继承性及构造函数等特点,使得应用灵活,可随意扩展。
4.除了上述几点外,Servlet还具有功能强大、能够在各个程序之间共享数据、安全性强等特点。

抽象类与接口

抽象类与接口:抽象类只能单继承,接口可以多继承。

相同点

(1)都不能被实例化
(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。

不同点

(1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。

(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。

(3)接口强调特定功能的实现,而抽象类强调所属关系。

(4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。

Servlet抽象方法

SUN公司提供了一系列接口和类,其中最重要的接口是javax.servlet.Servlet。在Servlet接口中定义了5个抽象方法

1.servlet生命周期:由servlet容器自动调用,所以返回值为void
init(),service(),destory()

2.servletCofig():一个servlet类对应一个servlet实例,有一个servletCofig(),所以每个servletCofig()都不同

3.void service():servletRequest请求对象,serveltResponse()请求响应
在这里插入图片描述
其中init()、service()和destroy()这三个方法可以表现Servlet的生命周期,它们会在某个特定的时刻被调用。另外,getServletInfo()方法用于返回Servlet的相关信息。getServletConfig()方法用于返回ServletConfig对象,该对象包含Servlet的初始化信息。需要注意的是,表中提及的Servlet容器指的是Web服务器。

service()被具体化为其他不同需要的调用方法,如GenericServlet(),HttpServlet()

servlet接口实现类

针对Servlet的接口,SUN公司提供了两个默认的接口实现类:GenericServlet和HttpServlet。
GenericServlet是一个抽象类,该类为Servlet接口提供了部分实现,它并没有实现HTTP请求处理。

HttpServlet是GenericServlet的子类,它继承了GenericServlet的所有方法,并且为HTTP请求中的POST、GET等类型【总共8种,常用两种】提供了具体的操作方法。【编程直接使用!! !】

HttpServlet的常用方法及其说明如下表所示:
在这里插入图片描述
HttpServlet示例:
在这里插入图片描述

IDEA中创建Servlet

1.新建servlet:
new-servlet
在这里插入图片描述
2.
虚拟地址映射,java servlet–》URL
1)基于注解的方式在这里插入图片描述

2)使用webapp-WEB-INF-web.xml中配置,[xml文件方式]
在这里插入图片描述
在这里插入图片描述

注意:使用新建servlet的方式,会在web.xml中创建servlet
在这里插入图片描述

3.写好之后,启动Tomcat
http://localhost:端口号/当前工程根路径/

http://localhost:8082/WebServletProject_war_exploded/
在这里插入图片描述
要访问的具体servlet:
http://localhost:8082/WebServletProject_war_exploded/servlet_1

http://localhost:端口号/当前工程根路径/value的值
在这里插入图片描述
修改样式后要重启Tomcat

报错:servlet不能映射为一个url模式

Caused by: java.lang.IllegalArgumentException: 名为 [servlet_2]和 [Servlet_1] 的servlet不能映射为一个url模式(url-pattern) [/servle]

注意:注解配置的value和web.xml中的配置

启动程序时自动加载Servlet程序

适用于数据库servlet加载
在这里插入图片描述
web.xml代码:
在这里插入图片描述

servlet请求的分发处理-get()和post()

get_post.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--get方法-->
<form action="http://localhost:8082/WebServletProject_war_exploded/servlet_2" method="get">
    <input type="submit">
</form>
<!--post方法-->
<form action="http://localhost:8082/WebServletProject_war_exploded/servlet_2" method="post">
    <input type="submit">
</form>
</body>
</html>

Servlet_2.java:

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
   
   
        System.out.println("3.访问");
        //类型转换,使用ServletRequest 子类 HttpServletRequest的getMethod()方法
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        //获取请求的方式:GET POST
        String method = httpServletRequest.getMethod();
        //打印
        System.out.println(method);
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DQ_CODING

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值