位置: IT常识 - 正文

【JavaWeb】重新认识 Servlet 的初始化 [ 回顾 Servlet ](重置java)

编辑:rootadmin
【JavaWeb】重新认识 Servlet 的初始化

推荐整理分享【JavaWeb】重新认识 Servlet 的初始化 [ 回顾 Servlet ](重置java),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:java重新运行程序,java怎么重新赋值,java怎么重置,javaweb重置代码,java怎么重启,java重置按钮让内容清空,java重新运行程序,javaweb重置代码,内容如对您有帮助,希望把文章链接给更多的朋友!

🥇作者 .29. 的✔博客主页✔ 🥇记录JavaWeb学习的专栏:Web专栏 🥇向前走,不要回头。

您的点赞,收藏以及关注是对作者最大的鼓励喔 ~~

重新认识Servlet的初始化一、回顾Servlet1.什么是Servlet2.Servlet规范3.Servlet生命周期二、Servlet 的初始化方法1.带参初始化2.无参初始化3.重写 init() 方法,进行额外的初始化准备① 获取初始化参数值② `ServletContext` 和 `<context-param>`一、回顾Servlet

====================

1.什么是Servlet

在讲解Servlet初始化方法之前,让我们先回顾一下Servlet:

Servlet 是 Java 提供的一门动态Web资源开发技术。

2.Servlet规范

经过对Servlet规范的总结,我们得到以下几点:

Servlet规范是JAVAEE规范中的一种。Servlet规范给开发者指定了 动态资源文件 的开发步骤。Servlet规范给Http服务器指定了调用 动态资源文件 的规则。Servlet规范给Http服务器指定了管理 动态资源文件实例对象 的规则。

3.Servlet生命周期

Servlet运行在Servlet容器中,其生命周期是由容器(Web服务器)来管理的,Servlet生命周期大致分为四个阶段:

实例化:默认情况下,当Servlet第一次被访问时,Web服务器(容器)会自动创建Servlet对象。

初始化:Servlet实例化后,容器会调用init()空参方法来初始化实例对象。这个过程中会完成加载配置文件、创建连接等初始化工作。初始化方法只会被调用一次

服务(请求响应):每次向Servlet发起请求时,Servlet容器都会调用Servlet中的service()方法来响应请求.(即:对请求进行处理)

销毁:当完成服务,需要释放内存或者关闭容器时,Servlet容器就会调用Servlet中的destroy()方法进行资源的释放:调用此方法后,容器会释放当前Servlet实例,而后该实例就会被Java垃圾收集器回收。

二、Servlet 的初始化方法

Servlet中的初始化方法有两个:

无参数的方法: init();带参数的方法: init(ServletConfig config);1.带参初始化

源码中,带参数的初始化方法代码如下:

public void init(ServletConfig config) throws ServletException { this.config = config; this.init();}2.无参初始化

源码中,无参数的初始化方法代码如下:

public void init() throws ServletException {}3.重写 init() 方法,进行额外的初始化准备【JavaWeb】重新认识 Servlet 的初始化 [ 回顾 Servlet ](重置java)

如果我们想在Servlet初始化时做一些准备工作,那么我们可以重写init()方法

========================

① 获取初始化参数值

如果想要获取初始化设置的数据,我们可以这么做:

在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> <servlet-name>Demo01Servlet</servlet-name> <servlet-class>com.haojin.servlet.Demo01Servlet</servlet-class> <init-param> <param-name>name</param-name> <param-value>InitName</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Demo01Servlet</servlet-name> <url-pattern>/demo01</url-pattern> </servlet-mapping></web-app>

XML配置文件中,<init-param> </init-param>标签内的内容,就是我们设置的初始化参数,参数名为:“name” ---- 参数值为:“InitName” …

重写init()方法,利用ServletConfig实例对象获取初始化参数值

import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;/** * @author .29. * @create 2022-10-21 16:20 */public class Demo01Servlet extends HttpServlet { @Override public void init() throws ServletException { //获取ServletConfig实例对象 ServletConfig config = getServletConfig(); //通过实例对象调用getInitParameter()方法,获取初始化的参数 String initValue = config.getInitParameter("name"); //输出我们获取到的初始化参数,验证操作的可行性 System.out.println("initValue = " + initValue); }}

因为我们没有重写service()方法,所以程序运行后浏览器页面会显示405类型的错误,但我们不需要理会。

… 这时候主要应检查控制台能否正确输出我们设置好的初始化参数,以验证上述重写init()方法,获取初始化参数值操作的可行性。

注意绿色框框内容,程序成功读取配置文件中设置的初始化参数,控制台输出无误,事实证明操作是可行的。

上述在XML配置文件中注册的操作过于繁琐,Servlet3.0后支持以注解的方式进行注册,让我们来看一下更加简便的一种实现方法吧:

仅仅在代码开头加上了注解,这样就不需要在XML配置文件中设置复杂的配置了。

import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebInitParam;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;/** * @author .29. * @create 2022-10-21 16:20 */@WebServlet(urlPatterns = {"/demo01"} , initParams = { @WebInitParam(name = "name" , value = "InitName") } )public class Demo01Servlet extends HttpServlet { @Override public void init() throws ServletException { //获取ServletConfig实例对象 ServletConfig config = getServletConfig(); //通过实例对象调用getInitParameter()方法,获取初始化的参数 String initValue = config.getInitParameter("name"); //输出我们获取到的初始化参数,验证操作的可行性 System.out.println("initValue = " + initValue); }}② ServletContext 和 <context-param>

我们重写init()方法除了可以获取到配置文件中设置的初始化参数外,还可以用类似的流程来获取配置文件中设置的context参数。

XML文件中添加<context-param>配置:

<context-param> <param-name>ContextConfigLocation</param-name> <param-value>classpath:application.xml</param-value> </context-param>

… 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_4_0.xsd" version="4.0"> <context-param> <param-name>ContextConfigLocation</param-name> <param-value>classpath:application.xml</param-value> </context-param> <servlet> <servlet-name>Demo01Servlet</servlet-name> <servlet-class>com.haojin.servlet.Demo01Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Demo01Servlet</servlet-name> <url-pattern>/demo01</url-pattern> </servlet-mapping></web-app>

… 重写init()方法,在方法内获取初始化配置的context值:

import javax.servlet.ServletConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;/** * @author .29. * @create 2022-10-21 16:20 */public class Demo01Servlet extends HttpServlet { @Override public void init() throws ServletException { //获取ServletContext实例对象 ServletContext servletContext = getServletContext(); //通过对象调用getInitParameter()方法,获取设置的初始化参数(通过参数名获取对应参数值) String contextConfigLocation = servletContext.getInitParameter("ContextConfigLocation"); //在控制台输出获取到的值 System.out.println("contextConfigLocation = " + contextConfigLocation); }}

… 控制台输出: 成功获取到了xml配置文件中设置好的context值:

🥇作者 .29. 的✔博客主页✔

本文链接地址:https://www.jiuchutong.com/zhishi/298313.html 转载请保留说明!

上一篇:JavaWeb:实现购物商城(课程设计完整版)(javaweb购物)

下一篇:html简洁漂亮的个人简历,个人主页,个人简介网页版(源码)(简单html代码)

  • 华为荣耀v20更新应用闪退(华为荣耀v20更新时退)

    华为荣耀v20更新应用闪退(华为荣耀v20更新时退)

  • 华为荣耀v20对比iqoo(荣耀v20和华为)

    华为荣耀v20对比iqoo(荣耀v20和华为)

  • 电脑上大小写转换是什么键(电脑大小写转换按键)

    电脑上大小写转换是什么键(电脑大小写转换按键)

  • 笔记本触摸键盘没反应(笔记本触摸键盘怎么关闭)

    笔记本触摸键盘没反应(笔记本触摸键盘怎么关闭)

  • 快手怎么私信主播(快手怎么私信主播的客服)

    快手怎么私信主播(快手怎么私信主播的客服)

  • adsl拨号上网什么意思(adsl拨号啥意思)

    adsl拨号上网什么意思(adsl拨号啥意思)

  • 微信红包点开可以不领吗(微信红包点开可以看到吗)

    微信红包点开可以不领吗(微信红包点开可以看到吗)

  • 苹果xsmax型号mt是什么版本

    苹果xsmax型号mt是什么版本

  • 连接mac或装有itunes的pc是什么意思(连接mac或装有itunes的pc)

    连接mac或装有itunes的pc是什么意思(连接mac或装有itunes的pc)

  • 华为情景智能怎么打开(华为情景智能怎么才能识别车票)

    华为情景智能怎么打开(华为情景智能怎么才能识别车票)

  • 海信a6与a6l有什么不同(海信a6a6l区别)

    海信a6与a6l有什么不同(海信a6a6l区别)

  • mate20可以单独换外屏吗(华为mate20可以更换电池吗)

    mate20可以单独换外屏吗(华为mate20可以更换电池吗)

  • amv和mad区别(mad和amv的区别)

    amv和mad区别(mad和amv的区别)

  • ipad出现一个框怎么取消(ipad出现一个框 点击不了)

    ipad出现一个框怎么取消(ipad出现一个框 点击不了)

  • 5g手机一定要5g套餐吗(5g手机一定要用5g网络吗)

    5g手机一定要5g套餐吗(5g手机一定要用5g网络吗)

  • 在windows中写字板是一种(在windows中写字板和记事本所编辑的文档)

    在windows中写字板是一种(在windows中写字板和记事本所编辑的文档)

  • 蓝牙耳机可以分开用吗(蓝牙耳机可以分开用吗,一个放家里一个放办公室)

    蓝牙耳机可以分开用吗(蓝牙耳机可以分开用吗,一个放家里一个放办公室)

  • 描述光驱读取数据速度的单位是(描述光驱读取数量的方法)

    描述光驱读取数据速度的单位是(描述光驱读取数量的方法)

  • 小米手机gps设置在哪里(小米手机gps在哪里设置)

    小米手机gps设置在哪里(小米手机gps在哪里设置)

  • 黑鲨2可以无线充电吗(黑鲨2无线充电怎么开启)

    黑鲨2可以无线充电吗(黑鲨2无线充电怎么开启)

  • vivoz3i有红外功能吗(vivoz3红外线在哪)

    vivoz3i有红外功能吗(vivoz3红外线在哪)

  • WIN7为什么无法启动"WLAN AutoConfig"服务?(win7为什么无法开启aero)

    WIN7为什么无法启动"WLAN AutoConfig"服务?(win7为什么无法开启aero)

  • Vue项目中,el-image实现按钮触发大图预览模式(vue项目中的package.json是( )?)

    Vue项目中,el-image实现按钮触发大图预览模式(vue项目中的package.json是( )?)

  • word保存或打印时出现是否保存/打印的提示(word要打印保存在哪个类型)

    word保存或打印时出现是否保存/打印的提示(word要打印保存在哪个类型)

  • 记录--TS封装axios(tsop封装)

    记录--TS封装axios(tsop封装)

  • MVC架构-01(MVC架构模式)

    MVC架构-01(MVC架构模式)

  • 帝国CMS如何调用关键字TAG(帝国cms如何调用网络)

    帝国CMS如何调用关键字TAG(帝国cms如何调用网络)

  • 企业所得税会计科目
  • 公关支出是什么意思
  • 长租公寓 税费
  • 房产税从价计征和从租怎么选择
  • 一个季度30万是不含税吗
  • 老板从公司拿钱怎么拿税最低
  • 抽奖中的汽车需要交购置税吗
  • 税收的优惠性政策包括哪些
  • 融资租入的企业有哪些
  • 环评费用包括哪些
  • 企业委托银行收款,银行以办妥手续,而企业尚未收到凭证
  • 收回员工社保入什么科目
  • 房地产分期开发的标准
  • 个税税费返还
  • 个体工商户有公户吗?
  • 出纳能办理涉税实名认证吗?
  • 上个月个税申报能作废重报吗
  • 收到的会费计入什么会计科目
  • 收到房租发票可以抵扣吗
  • 混合销售行为的名词解释
  • 更改代理设置失败 可能无网络连接
  • 电脑游戏没法玩怎么办
  • 电脑右下角弹窗广告怎么彻底清除
  • 职工福利费的扣除限额怎么算
  • 车辆购置税如何计算器
  • 付出去的款项退回的会计分录如何做
  • windows7网络无法连接
  • win10怎么自定义开机音乐
  • mac 移动硬盘 文件系统
  • 上个月做无票收入这个月开票,怎么做分录
  • php详细安装步骤
  • 如何在局域网内发布网页
  • php-mbstring
  • 累计计税折旧如何调整
  • 公允价值变动损益借贷方向增减
  • 网线插上还是显示红叉
  • 工业企业成本核算方法
  • php redis常用命令
  • php读取mysql
  • 对公户怎么取备用金
  • thinkphpgui
  • mysql中regexp_substr函数的使用
  • 关于小微企业免征增值税
  • C++ 使用dll路径不在当前路径时如何调用
  • 怎么实现宏的功能
  • mongodb添加用户并授权
  • 农民专业合作组织法律制度的类型包括哪些?
  • 股权激励税务处理方案
  • 不开增值税发票的销售收入报税的操作流程是?
  • 收到费用报销单据应该怎么记账?
  • access日期时间格式怎么修改
  • 个人所得税的计算标准
  • 停车费报销会计分录
  • 房地产企业成本结转
  • 暂估金额与发票金额的区别
  • 有限合伙企业的
  • 当月没认证发票有补救措施吗
  • 用友有审核权限审核不了
  • 测距仪计入什么科目
  • 增值税收入的确认时间
  • 压缩sql数据库
  • sql server索引的使用
  • mysql数据库主机一般填什么
  • w8远程桌面连接
  • 怎么才能使牙齿变白
  • 什么是suv汽车
  • win7系统换桌面
  • windows mobile
  • excel 级联
  • 为了防止编码过程的过载现象出现
  • 物理引擎演示
  • javascript入门基础
  • 安卓微信仿ios版
  • 下岗职工再就业优惠政策
  • 企业的绿化用地暂免征收土地使用税
  • 个人出租商业用房开票税率
  • 地税局是政府部门吗
  • 福建省网上税务办事大厅
  • 新余契税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设