JavaWeb_Servlet篇_01
Posted 葡萄籽-June
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb_Servlet篇_01相关的知识,希望对你有一定的参考价值。
Servlet-01篇
通过前段时间得JavaWeb基础学习后,对于之前学习总结的,做一下简单的梳理。本篇主要梳理相关Servlet的知识点。
一、Servlet基础概念
Servlet 是JavaWeb 三大组件之一。
三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。
事实上,Servlet是JavaEE的规范(接口)之一。它具有接收客户端发送过来的请求,并响应数据给客户端的作用。
(运行在服务器的一个java程序)
二、Servlet 的生命周期
1、装载Servlet。
此操作一般为动态执行,有些服务器提供相应的管理功能,可在启动的时候就装载Servlet并能够初始化特定的Servlet。
2、执行Servlet 构造器方法
创建一个Servlet实例。
3、执行init 初始化方法
调用Servlet的init()方法。
4、服务
若容器接收到对此Servlet的请求,那么会调用Servlet的service 方法并执行。
5、销毁
执行destroy 销毁方法。
【注】第一、二、三步,是在第一次访问的时候创建Servlet 程序就会调用。
【注】 第四步,每次访问都会调用。
【注】第五步,在web 工程停止的时候调用。
三、Servlet重要函数
1、init()方法
1)在整个Servlet生命周期中,只执行一次。
2)它是在服务器装入Servlet时执行,可以配置服务器,以便于在启动服务器或客户机首次访问时装入Servlet。
3)默认的init()方法一般均符合要求,但也可以自定义init()覆盖它。例如服务器端资源的管理,初始化数据库连接等。重要的是,所有覆盖init()方法的Servlet应调用 super.init() 以确保执行这些任务。
2、service()方法
1)是Servlet的核心。
2)每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用,而且传递给这个方法一个“请求”对象和一个“响应”对象作为参数。
3)其默认的服务功能是调用HTTP请求的方法中对应的do功能(doPost /doGet)。
Servlet的响应类型:
【1】一个输出流。浏览器根据它的内容类型(MIME)进行解析
【2】一个HTTP错误响应。重定向到另一个URL、Servlet、JSP
3、destroy()方法
1)仅执行一次。在服务器停止且卸载Servlet程序时执行该方法。
2)默认的destory()方法通常符合要求,但也可以覆盖它。例如管理服务器的资源,关闭数据库的资源连接。
3)当服务器卸载Servlet时,将所有的service()方法调用完成后,或咋i指定的时间间隔后调用destory()方法。(当在调用destory()方法之前,需要确认相关线程均已终止或者完成。)
4、getServletConfig()方法
1)其返回一个ServletConfig对象,该对象可以用来返回初始化参数和ServletContext。
2)其中,ServletContext提供有关的Servlet的环境信息。
5、getServletInfo()方法
1)其是一个可选的一个方法。它提供有关Servlet的信息,如作者、版本、版权等。
2)当服务器调用Servlet的service()、doGet()、doPost()这三个方法时,均需要“请求”和“响应”对象作为参数。
3)“请求”对象提供有关请求的信息;“响应”对象提供一个将响应信息返回给浏览器的通信途径。
【补充】
Servlet能通过“请求”对象的方法获知客户机的环境,服务器环境信息和所有由客户机提供的信息。
Servlet可以调用“响应”对象的方法发送响应,该响应是准备发回给客户机的。
四、手动实现简单的Servlet程序
大致步骤:
1、编写一个类去实现Servlet 接口;
2、实现service 方法,处理请求,并响应数据 ;
3、到web.xml 中去配置servlet程序的访问地址。
Servlet 程序的示例代码:
public class HelloServlet implements Servlet {
/**
* service 方法是专门用来处理请求和响应的
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Hello!Servlet 被访问了。");
}
}
web.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">
<!-- servlet 标签给Tomcat 配置Servlet 程序-->
<servlet>
<!--servlet-name 标签Servlet 程序起一个别名(一般是类名) -->
<servlet-name>HelloServlet</servlet-name>
<!--servlet-class 是Servlet 程序的全类名-->
<servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
</servlet>
<!--servlet-mapping 标签给servlet 程序配置访问地址-->
<servlet-mapping>
<!--servlet-name 标签的作用是告诉服务器,我当前配置的地址给哪个Servlet 程序使用-->
<servlet-name>HelloServlet</servlet-name>
<!--url-pattern 标签配置访问地址<br/>
/ 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径<br/>
/hello 表示地址为:http://ip:port/工程路径/hello <br/>
-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
以上是关于JavaWeb_Servlet篇_01的主要内容,如果未能解决你的问题,请参考以下文章