Servlet技术简介

1.1什么是Servlet

Servlet是运行在服务器端的Java小程序,是sun公司提供的一套规范,用来处理客户端请求、响应浏览器的动态资源。

Servlet是JavaWeb三大组件(Servlet、Filter、Listener)之一,且最重要。

 

1.2 Servlet的作用

用来处理从客户端发送过来的请求,并对该请求作出响应。

Servlet的任务有:

1.获取请求数据  2.处理请求  3.完成响应

 

1.3 Servlet的准备工作:

Servlet规范要求:Servlet程序需要编写实现类,并在web.xml进行配置。

(1)实现类:通常继承javax.servlet.http.HttpServlet类,并复写doGet()和doPost()方法。

(2)doGet()方法用于处理get请求。

(3)doPost()方法用于处理post请求。

配置信息:在web.xml进行配置。

 

1.4 Servlet编写步骤

1.创建类,继承HttpServlet,复写doGet和doPost方法

//ServletDemo.java

package cn.itcast.web;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

 * Servlet implementation class ServletDemo

 */

public class ServletDemo extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

 */

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

System.out.println("get请求将执行");

}

/**

 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

 */

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

System.out.println("post请求将执行");

}

}

2.编写配置文件web.xml

<!-- ServletDemo.java

  * <servlet> 注册servlet

   <servlet-name> servlet名称,当前xml中唯一

   <servlet-class> servlet实现类的全限定类名

  * <servlet-mapping> 给注册的servlet添加映射路径

   <servlet-name> 已经注册的servlet名称。注意:必须与注册的名称一致。

   <url-pattern> 访问路径。要求:必须以/开头

   -->

  <servlet>

    <description></description>

    <display-name>ServletDemo</display-name>

    <servlet-name>ServletDemo</servlet-name>

    <servlet-class>cn.it.web.ServletDemo</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>ServletDemo</servlet-name>

    <url-pattern>/demo</url-pattern>

  </servlet-mapping>

3.浏览器访问

在浏览器地址栏输入:http://localhost:8080/demo

(1)浏览器显示空白页面

(2)控制台打印信息:get请求将执行

 

1.5 Servlet的执行流程详解

(1)浏览器的地址栏中输入localhost:8080/demo

(2)浏览器找到web.xml文件中的访问路径--> /demo

(3)根据/demo找到注册了的Servlet名称--> ServletDemo

(4)根据ServletDemo找到servlet实现类的全限定类名,从而到相应的实现类中执行程序。

 

1.6 Servlet的生命周期

生命周期:就是一个对象从创建到销毁的过程。

何时创建:用户第一次访问Servlet时创建Servlet实例(单实例)

何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候

 

1.7 Servlet规范规定

所有的servlet必须实现javax.servlet.Servlet接口:

1.第一次调用时,将执行初始化方法:init(ServletConfig)方法

2.第一次调用,都将执行service(ServletRequest, ServletResponse)方法

3.服务器关闭或项目被移除(调用destroy方法销毁servlet对象)

JavaEE规范中提供Servlet接口实现类:

GenericServlet:通用servlet实现。没有实现service

HttpServlet:与Http协议有关的实现。实现service方法,完成与http协议有关的操作。

request.getMethod()获得请求方式(get、post)

如果是get,将调用doGet()方法

如果是post,将调用doPost()方法

 

1.8 Servlet被访问过程描述

1.用户第一次访问servlet的时候,服务器会创建一个servlet实例

2.创建servlet实例的同时执行servlet的init()方法

3.每一次请求,服务器都会创建一个新的线程访问servlet中的service方法,在service方法内部根据请求的方式的不同调用doXXX的方法(get请求调用doGet, post请求调用doPost)

4.当servlet从服务器中被移除,或者关闭服务器,servlet的实例就会被销毁,同时destroy方法将会被执行

 

1.9 Servlet相关的配置

1.9.1启动时创建Servlet

Servlet默认是在第一次访问的时候被创建的。可以让Servlet在服务器启动的时候创建好,对Servlet进行配置。

在web.xml中的<servlet> </servlet>标签中配置:

<load-on-startup>2</load-on-startup>

传入正整数,整数越小,被创建的优先级就越高。

1.9.2 url-pattern的配置

url-pattern配置方式共有三种:

1.完全路径匹配:以/开始

例如:/Servlet/Demo4,/aaa/ServletDemo5

2.目录匹配:以/开始,以*结束

例如:/* (所有),/aaa/* (aaa目录下的所有),/aaa/bbb/*

3.扩展名匹配:不能以/开始,要以*开始

例如:*.do,*.action,*.jsp,*.jpg

4.缺省路径 /

通常情况访问html页面时,首先从当前web项目的web.xml文件寻找匹配路径,如果没有找到,再从tomcat默认的web.xml匹配,将使用缺省servlet.

Tomcat获得匹配路径的优先级顺序如下:

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

 

1.10开发中的路径的编写

相对路径:都是需要找位置相对关系,不能以/开始的

当前路径 ./

上级目录 ../

绝对路径:不需要找位置相对关系,以/开始的

绝对路径中分为客户端路径和服务器端路径

客户端路径一定要加工程名   /day/sd6

服务器端路径不需要加工程名 /sd6

 

1.11 ServletContext 全局管理对象

服务器启动的时候,为每个WEB应用创建一个单独的ServletContext对象,我们可以使用这个对象存取数据,用这个对象存取的数据可以在整个WEB应用中获得。

1.可以在多个servlet之间共享数据

setAttribute(String name,Object obj) 向ServletContext中存数据

getAttribute(String name) 从ServletContext中取数据

removeAttribute(String name) 从ServletContext中移除数据

2.可以获得当前WEB项目中的指定资源(文件)

InputStream getResourceAsStream(String path) 返回一个输入流对象

String getRealPath(String path) 返回资源文件的绝对路径(path为/)

Set getResourcePaths(String path) 返回一个Set集合,集合中包含资源目录中子目录和文件的路径名称。参数path必须以/开始,指定匹配资源的部分路径

URL getResource(String path) 返回映射到某个资源文件的URL对象。参数path必须以/开始,”/”表示当前WEB应用的根目录

3.可以进行整个WEB项目初始化数据设置

String getIntParameter(String) 获得Servlet的初始化参数

在web.xml可以给整个WEB项目配置初始化参数

<!-- 全局初始化参数(整个项目) -->

<context-param>

<param-name>参数名</param-name>

<param-value>参数值</param-value>

</context-param>

在实际开发中,有时候可能会需要读取WEB应用中的一些资源文件,为此,在ServletContext接口中定义了一些读取WEB资源的方法,这些方法是依靠servlet容器来实现的。Servlet容器根据资源文件名相对于WEB应用的路径,返回关联资源文件的IO流、资源文件在文件系统的绝对路径等。

 

1.12 ServletConfig:获得Servlet的配置信息

String getIntParameter(String) 获得Servlet的初始化参数

Enumeration getIntParameterNames() 获得Servlet初始化参数的名称

ServletContext getServletContext() 获得ServletContext对象的引用

String getServletName() 获得Servlet在web.xml中配置的name的值,及<servlet-name>中标签配置内容

 

 

转载于:https://my.oschina.net/jinyeyaonitian/blog/824940

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值