JavaWeb_Servlet篇_01

  • Post author:
  • Post category:java




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>



版权声明:本文为m0_46613077原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。