首页 > 编程语言 >JavaWeb—Servlet详解

JavaWeb—Servlet详解

时间:2025-01-08 09:59:50浏览次数:3  
标签:JavaWeb Servlet 详解 demo import servlet javax 请求

前言:

        本章节主要学习Servlet基础知识点,收录于JavaWeb系列,该系列主要讲解Servlet、JSP、Filter过滤器、Session、分层开发概念等知识点,欢迎童鞋们互相交流。觉得不错可以三连订阅喔。 

目标:

一、概念

二、入门程序

        1. 创建Servlet类

        2. 配置Servlet

                2.1 注解配置

                2.2 web.xml配置文件

                2.3 小结 

        3. 运行效果

        4. 执行流程 

三、Servlet生命周期 


内容:

一、概念

        Servlet是sun公司提供的一门用于开发动态web资源的技术。该技术可以通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。

二、入门程序

1. 创建Servlet类
package com.qls.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 继承HttpServlet类
 * */
public class ServletDemo extends HttpServlet{

	/**
	 * HttpServlet类中有两个方法:doGet()方法、doPost()方法
	 * doGet()方法接收HttpGet请求,doPost()方法接收HttpPost请求
	 */
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//响应客户端		
		resp.getWriter().print("<h1>hello</h1>");
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	
	}
}
2. 配置Servlet

         Servlet类地址无法被客户端访问,需要将类地址映射为请求地址。

         配置方式有两种,分别为注解配置和web.xml配置,两者作用相同。

2.1 注解配置

        @WebServlet("映射地址")

        该注解可以将类地址映射为浏览器可以访问的请求地址,从而访问到类中。

package com.qls.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 将类地址映射为一个浏览器可以访问的请求地址
@WebServlet("/demo")
public class ServletDemo extends HttpServlet{

	/**
	 * HttpServlet类中有两个方法:doGet()方法、doPost()方法
	 * doGet()方法接收HttpGet请求,doPost()方法接收HttpPost请求
	 */
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//响应客户端		
		resp.getWriter().print("<h1>hello</h1>");
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	
	}
}
2.2 web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  
  <!-- 项目名称 -->
  <display-name>ServletDemo1</display-name>
  
  <!-- 欢迎页面 -->
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  
  <!-- 加载指定servlet类 -->
  <servlet>
  	<!-- 类名称 -->
  	<servlet-name>demo</servlet-name>
  	<!-- 类地址,通过反射动态加载指定类的字节码文件-->
  	<servlet-class>com.qls.servlet.ServletDemo</servlet-class>
  </servlet>
  
  <!-- 映射路径 -->
  <servlet-mapping>
  	<!-- 名称,与类名称保持一致 -->
  	<servlet-name>demo</servlet-name>
  	<!-- 映射请求地址 -->
  	<url-pattern>/demo</url-pattern>
  </servlet-mapping>
  
</web-app>
2.3 小结 

 *   编写Servlet类,继承HttpServlet类,重写doGet方法或doPost()方法。

 *   配置Servlet类,注解配置或web.xml配置文件。两种配置方式的作用相同,都是将类地址映射为客户端请求地址,使用一种即可。

*    注解的出现是为了替换掉xml配置。

3. 运行效果

4. 执行流程 

4.1 客户端发出请求http://localhost:8080/ServletDemo1/demo

4.2 根据web.xml文件的配置,找到<url-pattern>子元素的值“/demo的<servlet-mapping>元素

4.3 读取<servlet-mapping>元素的<servlet-name>子元素的值,由此确定Servlet的名字为demo

4.4 查找到<servlet-name>值为demo的<servlet>元素

4.5 读取<servlet>元素的<servlet-class>子元素的值,由此确定Servlet的类名为com.qls.servlet.ServletDemo

4.6 到Tomcat安装目录/webapps/ServletDemo1/WEB-INF/classes/con/qls目录下查找到ServletDemo.class文件执行

三、Servlet生命周期 

        Servlet是一个供其他Java程序调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。

        针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。

        在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。

标签:JavaWeb,Servlet,详解,demo,import,servlet,javax,请求
From: https://blog.csdn.net/weixin_55584739/article/details/144978646

相关文章

  • Linux(Centos 7.6)命令详解:mkdir
    1.命令作用如果目录还不存在,则创建目录(CreatetheDIRECTORY,iftheydonotalreadyexist.)2.命令语法Usage:mkdir[OPTION]...DIRECTORY...3.参数详解OPTION:-m,--mode=MODE,创建新目录同时设置权限模式-p,--parents,创建多层目录,如上层目录不存在会自动创建-v,-......
  • 详解SonnarQube 集成Sonar-dependency-check-plugin​​​​​​​落地应用的方案以及
    Dependency-Check Dependency-Check用来检查代码中是否存在任何已知的,公开披露的安全漏洞。他检查依赖项中是否存在漏洞的原理也跟我们熟知的病毒查杀软件一样,预先定义好目前已知的安全漏洞库,检查依赖包时,发现这些漏洞就会报错,最后定期更新安全漏洞库即可!更多信息可以参考文......
  • Unity3D中ILRuntime开发原则与接口绑定详解
    技术详解ILRuntime是一个高效的跨平台热更新解决方案,它允许Unity开发者在不重新编译整个项目的情况下,动态加载和执行C#代码。这在游戏开发中特别有用,因为它允许开发者快速修复bug、添加新功能或进行A/B测试,而无需用户重新下载整个游戏。对惹,这里有一个游戏开发交流小组,希望......
  • WinForm之MDI窗体开发详解
    在WinForm开发中,如果有多个页面进行展示,通常采用菜单栏+容器布局方式(点击菜单栏,打开新的页面,并在容器中显示)。今天以一个简单的小例子,简述如何通过菜单栏和MDI容器实现页面的布局,仅供学习分享使用,如有不足之处,还请指正。涉及知识点在本实例开发中,主要涉及的知识点如下所示:Menu......
  • springboot毕设 基于JavaWeb的博客网 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和信息时代的到来,个人表达与知识分享已成为网络文化中不可或缺的一部分。博客,作为一种集个人日记、文章发布、观点交流于一......
  • Java设计模式 —— 【行为型模式】命令模式(Command Pattern) 详解
    文章目录模式介绍优缺点适用场景结构案例实现注意事项模式介绍有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此之间的耦合关系。拿订餐来说......
  • 基于transformer-bilstm光伏功率预测模型详解及代码复现
    背景介绍在探讨基于Transformer-BiLSTM的光伏功率预测模型之前,我们需要了解这一研究领域的背景。近年来,随着光伏发电技术的快速发展和大规模应用,准确预测光伏功率输出成为了保障电力系统安全稳定运行的关键问题。面对日益增长的海量光伏电站数据,传统预测方法已难以应对,这促......
  • Python 模块,包(详解)
    一.引用变量        引用变量:值的传递通常可以分为两种方式,一种是值的传递,一种是引用地址传递,在Python中一般都是用引用地址传递        变量名和对象:变量名(如a)和它指向的对象(如整数5)是分开的。变量名本身没有存储任何数据,它只是指向数据的一个标签(或者......
  • 网络安全协议详解
    引言网络安全协议是保护网络通信安全的核心技术之一,通过加密、认证、数据完整性校验等手段确保信息在传输过程中的保密性、完整性和真实性。本文将详解常见的网络安全协议,包括其基本原理、工作机制以及实际应用场景,为大家提供一个深入了解网络安全协议的指南。常见网络......
  • RT-DETR代码详解(官方pytorch版)——参数配置(1)
    前言RT-DETR虽然是DETR系列,但是它的代码结构和之前的DETR系列代码不一样。它是通过很多的yaml文件进行参数配置,和之前在train.py的parser=argparse.ArgumentParser()去配置所有参数不同,所以刚开始不熟悉代码的时候可能不知道在哪儿修改参数。RT-DETR有官方版和ultralytics......