javaWeb之Servlet

使用jsp可以完成动态的web开发,但是在开发时发现大量的代码在页面中,这样不简洁,不利于维护!

1,什么是Servlet?

   Servlet(服务器端小程序)是使用java编写的服务器端程序,可以像jsp一样,生成动态的Web页,Servlet主要运行在服务器端,并由服务器调用执行,是一种按照Servlet标准开发的类;Servlet是Java对CGI程序的实现,但是与传统的CGI相比,Servlet是多线程的处理方式,这样Servlet的运行效率会比CGI高,Servlet还保留了Java的可移植性特点,使得Servlet更加易用,功能也更加强大;

2,Servlet的运行步骤;

  1. 客户端通过HTTP发出请求;
  2. Web服务器接收该请求并将其发送给Servlet。如果这个Servlet尚未被加载,Web服务器将把它加载到JAVA虚拟机并执行它;
  3. Servlet程序将接收该HTTP请求并执行某种处理;
  4. Servlet会将处理后的结果向Web服务器返回应答;
  5. Web服务器将从Servlet收到的应答发回给客户端;

3,第一个Servlet!

   index.jsp:

<a href="firstServlet">测试Servlet</a>

 web.xml:

  
  <servlet>
  	<servlet-name>firstServlet</servlet-name>
  	<servlet-class>com.keith.servlet.FirstServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>firstServlet</servlet-name>
  	<url-pattern>/firstServlet</url-pattern>
  </servlet-mapping>

 FirstServlet.java:

package com.keith.servlet;

import java.io.IOException;

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

public class FirstServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("------------hello,world---------------");
	}
}

 客户端发出请求,通过web.xml找到FirstServlet类,然后执行doPost()/doGet()方法,在控制台输出hello,world!

4,Servlet生命周期!

Servlet程序是运行在服务器端的一段java程序,其生命周期将受到Web容器的控制,生命周期包括加载程序,初始化,服务,销毁,卸载5部分;

其作用如下:

  • 加载Servlet

web容器负责加载Servlet,当Web容器启动时或者是在第一次使用这个Servlet时,容器会负责创建Servlet实例,但是用户必须通过部署描述符(web.xml)指定Servlet的位置(Servlet所在的包,类),成功的加载后,web容器会通过反射的方式对Servlet进行实例化;

  • 初始化

当一个Servlet被实例化后,容器将调用init()方法初始化这个对象,初始化的目的是为了让Servlet对象在处理客户端请求前完成一些初始化工作,比如建立数据库连接,读取资源文件等信息,如果初始化失败,则此Servlet将直接被卸载!

  • 处理服务

当有请求提交时,Servlet将调用service()方法(常用的是doGet()/doPost())进行处理。在service()方法中,Servlet可以通过ServletRequest接受客户端的请求,也可以利用ServletResponse设置响应信息;

  • 销毁

当Web容器关闭或者检测到一个Servlet要从容器中被删除时,会自动调用destory()方法,以便让该实例释放掉所占用的资源;

  • 卸载

当一个Servlet调用完destory()方法后,此实例将等待被垃圾收集器所回收,如果需要再次使用此Servlet()时,会重新调用init()方法初始化;

 

注意:正常情况下,Servlet只会初始化一次,而处理服务会调用对次,销毁也只会调用一次。但是如果一个Servlet长时间不使用的话,也会被容器自动销毁,而如果需要再次使用时会重新进行初始化操作,即在特殊的情况下初始化可能会进行多次,销毁也可能进行多次;

5,取得初始化配置信息

在web.xml中配置servlet时,我们可以为其添加<init-param>标签,里面可以设置参数可以通过config对象获取;

例如,在web.xml中:

  <servlet>
  	<servlet-name>firstServlet</servlet-name>
  	<servlet-class>com.keith.servlet.FirstServlet</servlet-class>
  	<init-param>
		<param-name>name</param-name>
		<param-value>keith</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>firstServlet</servlet-name>
  	<url-pattern>/firstServlet</url-pattern>
  </servlet-mapping>

 FirstServlet.java:

package com.keith.servlet;

import java.io.IOException;

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

public class FirstServlet extends HttpServlet {
	private String initParam = null;
	
	@Override
	public void init(ServletConfig config) throws ServletException {
		this.initParam = config.getInitParameter("name");
	}

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("初始化参数name:"+this.initParam);
	}
}

 可以得到name的值:keith;每一个Servlet可以同时配置多个初始化参数,配置参数时直接使用<init-param>元素即可;

6,获取其他内置对象

  • 获取HttpSession实例:

 

	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		HttpSession session = req.getSession();
		session.setAttribute("name", "keith");
		System.out.println("name的值是"+session.getAttribute("name"));
	}
  •  获取ServletContext实例:

 

	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		ServletContext app = super.getServletContext();
		System.out.println("真实路径是:"+app.getRealPath("/"));
	}
 

 

Copula函数实战:如何用MATLAB计算气象干旱与农业干旱的联合概率? 本文提供了一份基于MATLAB的Copula函数实战指南,详细阐述了如何利用该多变量联合分布函数计算气象干旱与农业干旱的联合概率及条件概率。通过从数据预处理、边缘分布拟合到Copula模型选择与检验的完整流程,帮助环境科学与农业气象研究者量化干旱事件的关联风险,为风险评估提供定量依据。 阅读详情

相关推荐

ComfyUI Impact Pack实战:如何用三大检测器打造高效人脸修复工作流(附2025最新模板)

本文详细解析了如何利用ComfyUI Impact Pack中的BBOX、Segm和SAM三大检测器构建高效人脸修复工作流。通过技术选型、参数优化和实战案例,帮助用户掌握从精准定位到细节修复的全流程技巧,特别适用于商业摄影和影视制作场景。文章还提供了2025年最新模板和性能优化方案,显著提升人脸精修效率。

weixin_29040367的博客 245

javaweb Servlet

摘要:Servlet是用于扩展Web服务器功能的Java类,由容器管理其生命周期(初始化、服务、销毁)。Servlet支持三种作用域(Application、Session、Request)实现数据共享。Filter作为Servlet规范中的拦截器,用于请求预处理/后处理。Listener则监听应用、会话和请求的各种事件(如启动/销毁、属性变更等)。三者协同工作,Filter处理请求流,Listener监控状态变化,Servlet处理核心业务逻辑,共同构建完整的Java Web应用架构。

chxii的专栏 2251

ABB机器人发送实时位置给PLC

本文使用中断方式实现,多任务要订购ABB功能包 Profinet总线组变量配置 注:映射为16位和32位均可用 声明数据 VAR num CurrentExAxisPos;!外轴位置 VAR robtarget pCurrentPos;!实时位置 var intnum TrapNum;!中断号 初始化开中断 IDelete TrapNum;!中断号 CONNECT TrapNum WITH iTrapCurPos;!连接中...

澍澍爸的blog 6776

JavaWeb—Servlet

本文主要讲解了有关JavaWeb中有关Servlet的相关内容,主要介绍了请求转发重定向以及文件上传和下载的知识

rxdasd123456的博客 1316

Python 爬虫:获取网页数据的 5 种方法

requests:适用于简单的静态网页抓取,易于使用。requestslxml:适合需要高效解析大规模网页内容的情况,支持 XPath 和 CSS 选择器。Selenium:适用于动态网页(JavaScript 渲染)的抓取,模拟浏览器行为获取动态数据。Scrapy:强大的爬虫框架,适合大规模的网页抓取任务,支持异步请求和高级功能。PyQuery:基于 jQuery 语法,适合快速开发,提供简洁的 CSS 选择器语法。

想看什么文章都可以私信给我,综合性博客。 5513

AI应用架构师干货:智能财务分析AI平台可视化模块设计(附最佳实践)

智能财务分析的价值,从来不是“AI模型有多准”,而是“财务人员能用上AI的结果”。可视化模块的设计,本质是**“站在业务用户的角度,重新定义技术的价值”**——它不需要复杂的动画,不需要华丽的特效,只需要“把AI的结果翻译成财务人员能看懂的语言”。作为AI应用架构师,我们的使命不是“打造最先进的技术”,而是“打造最有用的技术”。而可视化,就是连接技术与业务的那座“桥”。附录:实战项目GitHub仓库(注:此处可放置实际项目的GitHub链接,包含完整代码、数据样例、部署文档)作者简介。

SuperAGI2025 1156

【JavaWeb】JavaWeb三大组件之Servlet

因为现在我们的请求都是基于HTTP协议的,所以我们应该专门为HTTP请求写一个Servlet做为通用父类由上图我们可以看出,以后再写Servlet可以直接继承HttpServletServlet是一个标准GenericServlet是Servlet接口的子类HttpServlet是GenericServlet的子类,一个专门处理HTTP请求的ServletServletContext是一个全局的储存信息的空间。服务器开始,其就存在,服务器关闭,其才释放。一个用户可有多个request;

2302_78914800的博客 1333

Simulink开发项1000例实战专栏--实例52:基于Simulink开发一个超导磁储能控制系统,实现对SMES系统的精确控制和优化

需求分析超导磁储能系统(Superconducting Magnetic Energy Storage, SMES)是一种利用超导线圈储存和释放电能的高效储能技术。SMES系统具有响应速度快、能量密度高、循环寿命长等优点,广泛应用于电力系统的调峰填谷、频率调节、电压稳定以及紧急备用电源等领域。本项目将基于Simulink平台,开发一个完整的超导磁储能控制系统,实现对SMES系统的精确控制和优化。我们将详细讲解如何设计和实现该系统,并结合实际应用案例进行说明。

xiaoheshang_123的博客 236

JavaWeb——Servlet

JavaWeb——Servlet Tomcat工作机制动画演示(点击动图可全屏观看) 什么是Servlet Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。 Servlet运行于支持Java的应用服务器中。从实现上讲,S

qq_42946963的博客 7031

倒立摆的PLC控制(模型分析+ SCL源代码)

首先简单介绍下倒立摆模型,下面这幅图是MATLAB网站上的倒立摆模型,下面我们利用牛顿第二运动定律建立摆杆的运动方程。

RXXW_Dor的博客 3333

GEE数据融合——Landsat (collection 2,level 2 )4、5、7、8、9长时间序列影像数据融合和视频导出分析

长时间序列影像数据融合是指将Landsat影像数据集合2级2(Level 2)中的4、5、7、8和9这五个卫星的数据进行融合。具体来说,这包括将同一地点的多个卫星影像数据进行处理和整合,以产生一个单一的、具有更高质量的影像产品。在长时间序列影像数据融合中,首先需要对不同卫星的影像数据进行校正,以消除不同卫星之间的光谱差异、辐射度问题和几何纠正误差等。然后,通过使用融合算法,将多个卫星的影像数据进行组合,以生成一张全新的、高质量的合成影像。

此星光明博客 1734

JavaWeb——怎样编写一个Servlet程序

文章目录JavaWeb——编写一个Servlet程序1.Servlet简介2.HelloServlrt1.建一个普通的Maven项目2.建一个子项目3.Maven环境优化4.编写一个Servlrt程序编写Servlet映射配置Tomcat启动Tomcat服务器测试 JavaWeb——编写一个Servlet程序 1.Servlet简介 Servlet是Sun公司开发的用于交互式地浏览和生成数据,生成动态Web的技术。 狭义的Servlet是指Java语言实现的一个接口 但一般情况下,我们把实现了S

万里顾一程的博客 4746

制作一款精美的 Qt IFW 安装程序

对于 Qt IFW 来说,默认的安装界面并不吸引人。倘若要制作一款精美的安装程序,这显然是不够的,需要在此基础上进行一系列定制。

青春不老,奋斗不止! 5259

JavaWeb之Servlet

JavaWeb-Servlet

功不唐捐,玉汝于成 1580

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JavaWEB【Servlet】

如需温习上一节内容,请点击下方链接进行查看: javaweb之E家园项目_云彩123的博客-优快云博客如需温习上一节内容,请点击下方链接进行页面跳转:Javaweb之域对象&EL表达式&JSTL库_云彩123的博客-优快云博客目录今日核心:jsp与java分离1.域对象2.EL表达式3.JSTL库今日核心:jsp与java分离1.域对象 page域(pageContext):只能作用于当前页面,既不能用来做做转发的数据分享,也不能做重定向的数据分享。 request域:只能作用于同一个

m0_64522859的博客 273

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JavaWeb之使用Servlet+MySQL实现简易登录注册功能

本文是使用Servlet+MySQL开发,实现登录注册功能,javaweb是一门知识较多的科目,我的文章里没有太多理论体系,适合基础较弱的同学,非常容易上手,本文为javaweb入门学习 目录一、创建数据库表二、创建前端页面1. 登录界面2.注册界面三、后端数据处理1.创建并测试servlet接收前端请求2.登录与注册注册 提示:以下是本篇文章正文内容 一、创建数据库表 这里我们创建一个数据库名为JavaWeb,创建库的使用可视化工具很简单就不细说了,下面sql代码块是我们创建一个简易用户表为了方便我们

qinnt的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

javaweb——servlet简单登录案例

用户登录案例需求: 1.编写login.html登录页面 username & password 两个输入框 2.登录成功跳转到Success.html展示:登录成功!用户名,欢迎您 3.登录失败跳转到loginServlet编写内部逻辑以及简单用户数据 编写loginservlet package servlet; import javax.servlet.ServletException; import j...

ZhaFi人 4145

JavaWeb之Servlet接口

对于每个Servlet可能在启动时都需要一些初始化参数,而所有的Servlet是交由Servlet引擎去实例化的,那么也就是需要将每个Servlet的初始化参数也都配置到web.xml中,Servlet引擎将Servlet容器对象和Servlet的配置信息封装到ServletConfig中,并在Servlet初始化时将ServletConfig传递给该Servlet。该方法由GenericServlet的调用,如果需要使用到ServletConfig则调用getServletConfig()方法来获取。

Lxn2zh的博客 1810

JavaWeb——Servlet完整总结

JavaWeb——Servlet完整总结

RamProg的博客 1005

javaweb之servlet入门

javaweb之servlet入门 第一步:右键src新建一个包 第二步:右键包。新建一个java程序 这里用re.java为例 第三步:写re.java package servletsummer; import javax.servlet.Servlet; public class oooop implements Servlet{ }

qw160的博客 303

JavaWeb-Servlet

本文摘要: 介绍了软件系统两大架构(C/S和B/S)的优缺点,B/S架构因其无需安装客户端、便于升级维护而成为主流。重点阐述了JavaWeb开发的优势,包括Java语言特性、面向对象特点和庞大的类库支持。讲解了HTTP/TCP协议层级关系,以及JavaWeb核心组件Servlet和JSP的原理。最后说明了Maven的项目管理和依赖配置功能,包括修改本地仓库路径等设置要点。文章从架构选择到具体实现,为JavaWeb开发提供了系统性的技术概述。

m0_72900498的博客 937

JavaWeb基石之——Servlet

最近一段时间,老是觉得学不爽,焦虑而急躁。归根到底,是没有一个较好的学习路径。像是还没学会走,就想飞一样。 学习,还是要按照一定的路径,一步一步来。才能学的扎实,走的稳重。以实践为指导,输出倒逼输入,才能学的更有意义,也让知识消化的更彻底。而不是一味地为了学习而学习。 就像很多人一上来就想着如何去阅读Spring源码,为什么呢?因为这样能在面试时让面试官高看自己一眼呀,很多公司现在招聘都会要求面试者阅读过什么什么源码。源码阅读没有错,也是一个想要在技术上深耕的人的必经之路。只是它应该往后放,学习不应该这么浮

vcj1009784814的博客 566

javaweb之Servlet

Servlet,javaweb的基础之一。 主要作用是处理浏览器的请求。 1.接收请求 ServletRequest 2.处理请求 编码 3.响应请求 ServetResponse Servlet接口: public interface Servlet { //生命周期方法,初始化,在Servlet对象创建后执行 void init(ServletConfig var1) throws ServletException; //获取Servlet配置信息 Serv

u011573295的博客 269

JavaWeb从入门到精通001:什么是JavaWeb、Servlet、Servlet容器?Servlet和Servlet容器关系、Servlet架构

一、什么是JavaWeb应用? 在Sun的Java Servlet规范中,对Java Web应用作了这样定义:“Java Web应用由一组Servlet、HTML页面、类、以及其它可以被绑定的资源构成。它可以在各种供应商提供的实现Servlet规范的Servlet容器中运行。” Java Web应用中可以包含如下内容: Servlet JSP 实用类 静态文件,如HTML、JS、图片等...

couragehope的博客 356
上一篇: javaBean实例之注册验证
下一篇: javaWeb之Servlet跳转
keithJava
博客等级 码龄16年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值