注:本文章基于尚硅谷JavaWeb相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!
文章目录
开篇
什么是Servlet?
1.Servlet是JavaEE的规范之一;(规范就是接口)
2.Servlet是JavaWeb三大组件之一;(Servlet程序,Filter过滤器,Listener监听器)
3.Servlet是运行在服务器上的一个java小程序,它可以接受客户端发送的请求,并相应数据给客户端。
一、手动实现一个Servlet程序
-
编写一个类去实现servlet接口
-
实现service方法 ,处理请求,并响应数据;
当访问指定请求地址时,会在控制台输出一段话 -
到web.xml文件中配置Servlet程序的访问地址;
(4)启动项目。访问http:localhost:8080/06_servlet/hello,控制台输出如下语句,说明第一个Servlet程序正常启动;
Servlet的生命周期:
-
执行servlet构造器方法
-
执行init初始化方法
* 第一二步是在第一次访问的时候创建Servlet程序的时候会调用 -
执行service方法
*每次访问的时候会调用 -
执行destory销毁方法
*终止程序运行的时候会调用一般项目中都是通过继承HttpServlet类的方式来实现Servlet程序
(1)编写一个类去继承HttpServlet类;
(2)根据业务需要重写doGet或doPost方法;
(3)到web.xml中配置Servlet程序的访问地址;
使用IDEA快捷方式创建一个Servlet类:
new–>Create New Servlet
然后会自动生成类。之后只需要配置web.xml文件的访问地址和映射地址;
二、Servlet类的继承体系
(1)Servlet接口:只是负责定义Servlet程序的访问规范
(2)GenericServlet:实现了Servlet的接口,作了很多空实现;并只有一个ServletConfig类的引用。。并对ServletConfig的使用作了一些方法;
(3)HttpServlet类实现了service()方法,并实现了请求的分发处理;这里的doGet和doPost方法只负责抛异常,说不支持GET/POST请求
(4)我们只需要根据自己的业务需要去重写doGet/doPost方法即可;
三、ServletConfig类
Servlet程序的配置信息类。
ServletConfig类的三大作用:
1.可以获取Servlet程序的别名,servlet-name的值
servletConfig.getServletName();
2.获取初始化参数init-param
servletConfig.getInitParameter(参数名)
3.获取ServletContext对象
servletConfig.getServletContext()
Servlet程序和servletConfig对象都是由Tomcat负责创建,我们负责使用。
Servlet程序默认是第一次访问的时候创建,servletConfig是每个servlet程序创建时,就创建一个对应的servletConfig对象;
四、ServletContext类
什么是ServletContext?
(1)ServletContext是一个接口,它表示Servlet上下文对象;
(2)一个web工程,只有一个ServletContext对象实例;
(3)ServletContext对象是一个域对象
(4)ServletContext是在web工程部署启动的时候创建,在web工程挺值得饿时候销毁
域对象:是可以像Map一样存取数据的对象,叫域对象,这里的域指的是存取数据操作的范围;
/ | 存数据 | 取数据 | 删除数据 |
---|---|---|---|
Map | put() | get() | remove() |
域对象 | setAttribute() | getAttribute() | removeAttribute() |
ServletContext类的四个作用
1.获取web.xml中配置的上下文参数context.param
可以在web.xml文件中配置context-param
<!--contextparam是上下文参数,它属于整个web工程-->
<context-param>
<param-name>password</param-name>
<param-value>root</param-value>
</context-param>
在ContextServlet.java程序中
ServletContext context=getServletCoonfig().getServletContext();
conntext.getInitParameter("passwora");
运行结果:
2.获取当前的工程路径。格式:/工程路径
context.getContextPath()
3.获取工程部署以后在服务器硬盘上的绝对路径
context.getRealPath("/")
“/"映射到web目录,输出以下类似内容
4.像Map一样存取数据
注意:ServletContext对象可以在任意地方进行增删改操作,且都是操作同一个ServletContext对象;
如果感觉内容写的还不错的话,一键三连不迷路!!!!
后面将会更新更多学习内容,一起学习吧!!!!!!