Servlet常用类剖析,2024年最新web前端面试基础

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

1、可以获取Servlet程序的别名(servlet-name的值)

2、获取初始化参数init-param

3、获取ServletContent对象

所处位置init方法

**1、**获取servlet别名

public void init(ServletConfig servletConfig) throws ServletException {

System.out.println(“HelloServlet 的别名是”+servletConfig.getServletName());

}

**2、**获取初始化参数init-param,其他的前面谢过了

现在web.xml文件中配

HelloServlet

com.servlet.HelloServlet

username

root

url

jdbc:mysql://localhost:3306/text

在实现Servlet接口的类中的init()下

// 2、获取初始化参数init-param

System.out.println(“初始化参数username的值是”+servletConfig.getInitParameter(“username”));

System.out.println(“初始化参数url的值是”+servletConfig.getInitParameter(“url”));

**3、**获取ServlertContent对象

// 3、获取ServletContent对象

System.out.println(“servletcontent对象是”+servletConfig.getServletContext());

以上运行结果:

每一个ServletConfig程序独立 ,在web.xml 中每个类中信息不共享,

重写init方法时得加上super.init(config),得访问父类的init初始化方法,否则报错

继承体系可以得知ServletConfig在GenericServlet类中,该类中的init定义:

public void init(ServletConfig config) throws ServletException {

this.config = config;

this.init();

}

所以如果重写init方法,必须加上super.init(config),否则父类的init方法不会执行(父类中中的保存操作执行不了)

ServletContext类

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

什么是ServletContext?


1、ServletContent是一个接口,他表示Servlet上下文对象

2、一个web工程,只有一个ServletContext对象实例。

3、ServletContent对象是一个域对象。

4、在web工程启动后创建,在web工程结束后销毁

什么是域对象?


域对象,是可以像Map一样存取数据的对象,叫做域对象。

这里的域指的是存取数据的操作范围。

对照示意表:

存数据取数据删除数据
Mapput()get()remove()
域对象setAttribute()getAttribute()removeAttribute()

ServletContext类的四个作用


1、获取web.xml中的配置的上下文参数context-param

2、获取当前的工程路径你,格式:/工程路径

3、获取部署后在服务器硬盘上的绝对路径

4、像Map一样存取数据

用快捷方式创建一个类ContextServlet,在web.xml中配置路径(   其余的已经自动生成了)

ContextServlet

com.servlet.ContextServlet

ContextServlet

/contextServlet

1、获取web.xml中的配置的上下文参数,

首先得在web.xml中配置context-param(一般写在其他servlet之上)

username

context

password

root

在ContextServlet类中doGet()方法

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//1、获取web.xml中的配置的上下文参数context-param

//获取对象

ServletContext context = getServletConfig().getServletContext();

String username = context.getInitParameter(“username”);

String password = context.getInitParameter(“password”);

System.out.println(“context-param参数username的值是”+username);

System.out.println(“context-param参数password的值是”+password);

}

}

运行之后结果是:

易错点:

①:在配置web.xml文件中地址中的/斜杆不要忘记,否则会报地址无效

/contextServlet

②:在类中获取参数是应在doGet()方法中书写,否则运行之后访问地址不会显示处对应的信息

获取当前工程路径

System.out.println(“当前工程路径:”+context.getContextPath());

获取部署后在服务器硬盘上的绝对路径

System.out.println(“获取工程部署的路径”+context.getRealPath(“/”));

这个斜杆/表示到当前工程的路径

map一样存取数据

创建一个Servlet类,在web.xml文件中配置好路径

ContextServlet1

com.servlet.ContextServlet1

ContextServlet1

/contextServlet1

在类中:

public class ContextServlet1 extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//获取ServletContext对象

ServletContext context = getServletContext();

System.out.println(“保存之前Context获取key1的值是:”+context.getAttribute(“key1”));

context.setAttribute(“key1”,“value1”);

System.out.println(“context获取数据key1的值为:”+context.getAttribute(“key1”));

}

}

我们直接可以用getServletContext()获取对象,这样简单些,而不用getServletConfig().getServletContext();

我们ctrl+b看源码可知:

public ServletContext getServletContext() {

return this.getServletConfig().getServletContext();

}

源代码已经做好了那步,所以我们直接返回即可。

我们继续定义一个类叫ContextServlet2

public class ContextServlet2 extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

ServletContext context = getServletContext();

System.out.println(“ContextServlet2中 context获取数据key1的值为:”+context.getAttribute(“key1”));

}

}

部署就省略了,运行之后

不难发现当ContextServlet1中的有数据存入,ContextServlet2中就可以查到该数据。也可以context下的数据是共享数据

ContextServlet对象在web工程启动后创建,在web工程结束后销毁,且共享

重启和重新部署都会导致web工程销毁

ContextServlet1、2的地址也是一样的

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
sdnimg.cn/80a76ff8cb5c4222bdfd534c7bd0e7d8.png)

ContextServlet1、2的地址也是一样的

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

[外链图片转存中…(img-P09FDsnS-1713386608799)]

[外链图片转存中…(img-mZLlpRo9-1713386608799)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-L99OVdr9-1713386608800)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值