WEB项目-Servlet(简介、生命周期、访问路径、ServletContext对象、域对象)

Servlet简介

什么是Servlet:

- Servlet是一个接口,下面有5个方法

- Servlet有两个实现类,GenericServlet和HttpServlet

Servlet的作用:

- Servlet是一个小型的Java程序,运行在服务器端

- Servlet接收和响应从客户端发送过来的请求,使用的是HTTP协议

编写一个Servlet程序

(1)编写一个类,实现Servlet接口,重写5个方法

(2)在web.xml中配置Servlet的配置文件

  <!--  配置Servlet的信息 -->
  <servlet>
  	<!-- 给Servlet指定名称(值是任意的) -->
  	<servlet-name >ServletDemo1</servlet-name>
  	<!-- 配置Servlet类的类名加包名(Class.forName()) -->
  	<servlet-class>com.demo.ServletDemo1</servlet-class>
  </servlet>
  
  <!-- 配置访问的路径 -->
  <servlet-mapping>
  	<!-- 配置Servlet的名称,servlet-mapping节点下的servlet-name和servlet节点下的servlet-name的值必须是相同的 -->
  	<servlet-name>ServletDemo1</servlet-name>
  	<!-- 配置Servlet的访问路径  http://localhost:8080/Servlet/demo1 -->
  	<url-pattern>/demo1</url-pattern>

(3)将项目添加到服务器中,启动服务器,就可以访问ServletDemo1

Servlet的生命周期

Servlet实例被Tomcat服务器来创建,第一次访问的时候创建(在内存有一个实例(单例模式)),立即调用init方法进行初始化的操作,使用service方法对外提供服务(有一个请求,实例开启一个新线程,处理请求的内容),有一次请求,service就被调用一次。Tomcat服务器关闭或者移除项目的时候,Servlet被销毁,但是实例在销毁之前会调用destroy方法进行一些销毁操作(释放一些资源),destory方法只调用一次。

Servlet的类之间的关系

Servlet接口

        |

GenericServlet(5个方法全部重写了)

        |

HttpServlet(service方法重写了)

开发Servlet程序:

(1)编写一个类,继承HttpServlet

(2)重写两个方法doGet()和doPost()

(3)在web.xml中配置Servlet的相关信息

一般情况下,doGet()和doPost()方法中的逻辑都是相同的,可以互相调用,简化操作。

Servletp配置访问路径

web.xml中servlet标签中的<url-pattern></url-pattern>标签,中间加上访问路径

- 完全路径匹配 

<url-pattern>/servlet/Servlet1</url-pattern>

访问路径:http://localhost:8080/Demo/servlet/Servlet1

- 目录匹配

<url-pattern>/*</url-pattern>

访问路径:http://localhost:8080/Demo/xxx(任意)

- 扩展名匹配

<url-pattern>*.do或者*.action</url-pattern>

访问路径:

http://localhost:8080/Demo/xxx.do或者xxx.action

- 优先级

完全路径匹配>目录匹配>扩展名路径

ServletConfig对象

获取关于配置了Servlet的配置信息

                ServletConfig config = getServletConfig();
		String configName = config.getServletName();
		System.out.println(configName);

ServletContext对象

一个Web项目只有一个ServletContext对象,可以被Web项目中的所有Servlet所共享,通过ServletContext来传递数据

Tomcat服务器一启动,会为每一个Web项目创建一个ServletContext对象,服务器关闭的时候ServletContext对象就销毁了

- 获取ServletContext对象

-- 通过ServletConfig对象获取 getServletContext()

-- 通过继承GenericServlet类获取 getServletContext()

域对象

- 域对象可以在多个Servlet中传递数据

- 可以向域对象存入数据

setAttribute("属性名","属性值");底层是Map集合,属性名相同,属性值不同会覆盖。

- 可以从域对象中获取数据

Object = getAttribute("属性名称");

- 从域对象中删除属性

removeAttribute("属性名称");

ServletContext的作用

(1)获取全局的初始化参数(和ServletConfig不同,ServletConfig只能获取当前Servlet的初始化参数)

     String getInitParameter(String name) 
 
     Enumeration getInitParameterNames() 
 

配置全局初始化参数

(2)实现数据的共享

- void setAttribute(String name, Object object)     设置属性的值
- Object getAttribute(String name)                        获取属性的值
- void removeAttribute(String name)                     删除属性的值
- Enumeration getAttributeNames()                      获取属性的名称们

(3)读取资源文件

猜你喜欢

转载自blog.csdn.net/Tommy5553/article/details/85175327