位置: 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代码)

  • 天猫精灵怎么在手机上看监控(天猫精灵怎么在首页切换可播放设备)

    天猫精灵怎么在手机上看监控(天猫精灵怎么在首页切换可播放设备)

  • 荣耀手机怎么截取视频片段(荣耀手机怎么截长图 滚动截屏)

    荣耀手机怎么截取视频片段(荣耀手机怎么截长图 滚动截屏)

  • 华为手机怎么开启陌生电话拦截(华为手机怎么开热点)

    华为手机怎么开启陌生电话拦截(华为手机怎么开热点)

  • 转转专业卖家有什么用(转转专业卖家是什么意思)

    转转专业卖家有什么用(转转专业卖家是什么意思)

  • wifi网线插哪个口(wifi线插哪个口)

    wifi网线插哪个口(wifi线插哪个口)

  • nem-al10是什么型号的手机(nemal10是什么型号手机)

    nem-al10是什么型号的手机(nemal10是什么型号手机)

  • el817光耦工作原理(el816光耦工作原理)

    el817光耦工作原理(el816光耦工作原理)

  • 自己家的wifi拒绝接入是什么意思(自己家的wifi拒绝请求)

    自己家的wifi拒绝接入是什么意思(自己家的wifi拒绝请求)

  • 华为p30pro系统问题充不进电(华为p30pro10.1系统)

    华为p30pro系统问题充不进电(华为p30pro10.1系统)

  • iphone11充一晚上电好吗(iphone11充一晚上电)

    iphone11充一晚上电好吗(iphone11充一晚上电)

  • 多媒体会议业务是什么(多媒体会议解决方案)

    多媒体会议业务是什么(多媒体会议解决方案)

  • 小米mi5c支持电信卡吗(小米5c支持多少瓦快充)

    小米mi5c支持电信卡吗(小米5c支持多少瓦快充)

  • 华为nova6呼吸灯在哪(华为nova6呼吸灯设置)

    华为nova6呼吸灯在哪(华为nova6呼吸灯设置)

  • 快手登录异常怎么回事(快手异常怎么办怎么解)

    快手登录异常怎么回事(快手异常怎么办怎么解)

  • 咪咕视频怎么用wifi看(咪咕视频怎么用微信支付)

    咪咕视频怎么用wifi看(咪咕视频怎么用微信支付)

  • 抖音上什么是青少年模式(抖音是青青呀)

    抖音上什么是青少年模式(抖音是青青呀)

  • 红米note8怎么关闭应用广告(红米note8怎么关闭广告)

    红米note8怎么关闭应用广告(红米note8怎么关闭广告)

  • 苹果快捷指令中心打不开(苹果快捷指令中心怎么用)

    苹果快捷指令中心打不开(苹果快捷指令中心怎么用)

  • 华为手环3怎么连接手机(华为手环3怎么调时间和日期)

    华为手环3怎么连接手机(华为手环3怎么调时间和日期)

  • 支付宝步数和手机不一致(支付宝步数和手机步数不一样)

    支付宝步数和手机不一致(支付宝步数和手机步数不一样)

  • 网络虚拟电话怎么拦截(网络虚拟电话怎么打)

    网络虚拟电话怎么拦截(网络虚拟电话怎么打)

  • 腾讯视频登陆超时(腾讯视频登陆超时怎么办)

    腾讯视频登陆超时(腾讯视频登陆超时怎么办)

  • 计算机的主机包括(计算机的主机包括cpu和什么)

    计算机的主机包括(计算机的主机包括cpu和什么)

  • 苹果4id密码忘了怎么办(苹果4id密码忘了怎么找回)

    苹果4id密码忘了怎么办(苹果4id密码忘了怎么找回)

  •  oppor17通话设置在哪(oppor15通话设置)

    oppor17通话设置在哪(oppor15通话设置)

  • 苹果8怎么分屏操作(苹果8怎么分屏一半一半)

    苹果8怎么分屏操作(苹果8怎么分屏一半一半)

  • 嘀嗒顺风车乘客不点确认到达(嘀嗒顺风车乘客愿意承担高速费怎么收取)

    嘀嗒顺风车乘客不点确认到达(嘀嗒顺风车乘客愿意承担高速费怎么收取)

  • 京豆如何兑换(京豆如何兑换优惠券)

    京豆如何兑换(京豆如何兑换优惠券)

  • 未交增值税和应交增值税科目怎么调整
  • 即征即退进项税额怎么填写申报表
  • 一般纳税人劳务公司可以开3%的发票吗
  • 申报个人所得税在哪里报
  • 期末留抵税额是怎么产生的
  • 个人勾机给公司开票怎么开
  • 个人独资企业怎么取钱
  • 验收入库材料结转怎么写
  • 资产减值损失包括应收账款减值损失吗
  • 施工劳务企业要交增值税吗
  • 公司闲置资金理财做了三年定期存款
  • 小规模升级一般纳税人需要多久
  • 国税 增值税
  • 如何分清进口农产品增值税抵扣率
  • 合并报表成本法调整为权益法
  • 小规模纳税人未开票收入如何填申报表
  • 财务人员最重要的三点
  • 保险营销员的佣金怎么算个税
  • 没有缴纳社保怎么开证明
  • 建筑劳务分包一般纳税人可以选择简易计税法吗?
  • 土地增值税计算题及答案解析
  • 税局税种认定
  • 如何确定增值税以旧换新方式下销售货物的销售额
  • 折价购买债券是什么意思
  • 私人打款到对公账户可以吗
  • 固定资产提前报废需要补提折旧吗
  • WordPress置顶文章的相关PHP函数小结
  • app制作公司开发一个app的价格
  • php splqueue
  • windows商店如何切换地区
  • 土地使用税若干问题的补充规定
  • php中imagecreatefromjpeg
  • 股东股权转让税务稽查案例
  • 福利费需要缴税吗
  • 最多显示2行文字怎么弄
  • 微信php接口
  • php与其他语言的比较
  • 季度盈利弥补亏损利润表
  • 什么是会计确认的基础
  • 电缆租赁发票开具属于什么项目
  • 土增税预征计征依据
  • 织梦使用手册
  • 一般纳税人认定管理办法
  • 单位全额承担社保能税前扣除吗
  • 员工意外伤害险入什么会计科目
  • 未达起征点增值税申报表怎么填
  • 无偿调入资产如何做账
  • 小规模纳税人企业所得税2023
  • 专票多长时间
  • 食堂购电饭锅账务处理
  • 出口退税的发票是专票还是普票
  • 会员卡充值赠送金额怎么做账
  • 哪些合同不用交社保
  • 冲销预付账款怎么填记账凭证
  • 无法收回的应收账款如何进行财务处理
  • 企业注销固定资产清理税务处理
  • 员工社保,个税怎么计算
  • ubuntu git not found
  • 修改注册表显示隐藏文件
  • 密码多次错误被锁定怎么办
  • smOutlookPack.exe - smOutlookPack是什么进程 什么文件
  • Win10预览版怎么变回正式版
  • mac快捷功能
  • perl中\s+
  • Linux中scp命令获取远程文件的方法
  • Quick cocos2dx-Lua(V3.3R1)学习笔记(十三)-----继续触摸事件之多点触摸
  • node.js javascript
  • 利用pm2部署多个设备
  • node.js mac
  • node.js golang
  • shell if -lt
  • js复制对象的值
  • python嵌套列表怎么遍历
  • python定义全局
  • 浙里办怎么给小孩子缴医保费
  • 上海个人到税务局怎么开票
  • 晋江劳动局地址
  • 江苏省2023年1号文
  • 买房契税发票图片别人看到了有危险吗
  • 梨树烧烤一条街打人
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设