Servlet

Servlet

Servlet概述

Servlet是运行在服务端的java的小程序,是javaWeb的三大组件之一(Servlet,Filter,Listener),且最为重要。

Servlet作用

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

  • 获得请求数据
  • 处理请求
  • 完成响应

准备工作

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

  • 实现类:通过继承javax.servlet.http.HttpServelt类,并复写doGet和doPost方法 、分别处理get和post请求

编写步骤

  • 创建类,继承HttpServlet,复写doGet和doPost方法
  • 编写配置文件web.xml
  • 浏览器访问

Servlet的执行流程详解


1.先根据浏览器地址栏中的地址找到web.xml文件中在< servlet-mapping>的< url-pattern>中的名字。
2.再在< servlet-mapping>的找到< servlet-name>中真实的文件名,
3.再去< servlet>中找到全地址找到该servlet
4.并访问

Request接收请求参数

Request接收请求参数的概述

请求参数
post的参数是在请求体中,get的参数是直接在url后面以?连接的(多个的话以&连接的)post的参数是在请求体中,get的参数是直接在url后面以?连接的(多个的话以&连接的)

  • String getParameter(String name) 获得指定参数名对应的值,如果没有返回null,有多个则获得第一个。例如:username=jack
  • String[] getParamteterValues(String name) 获得指定参数名对应的所有的值。例如hobby=抽烟&hobby=喝酒&hobby=烫头
  • Map<String,String[]> getParameterMap() 获得所有的请求参数。key为参数名,value为key对应的所有的值
  • setCharacterEncoding(String env) 设置请求体的编码,用于解决post请求参数乱码问题

Request接收请求参数入门

在这里插入图片描述
在这里插入图片描述

案例分析

在这里插入图片描述

代码实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Servlet的生命周期

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

  • Servlet生命周期:Servlet从用户第一次访问Servlet创建Servlet的实例的时候创建,当项目从服务器移除或者关闭服务器的时候Servlet被销毁。
  • 用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行。任何一次请求 服务器都会创建一个新的线程访问Servlet的service的方法,在service方法内部根据请求的方法不同调用doxxx的方法,当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,destory方法就会被执行。

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

  • GenericServlet:通用servlet实现,没有实现service
  • HttpServlet:与HTTP协议有关的实现。实现service方法,request.getMethod()获得请求方式,分别调用doGet()和doPost()方法。

Servlet规范规定,所有的servlet必须实现javax.servlet.Servlet接口,主要方法:init(),service(),destory()方法

  • init():每一次调用都将执行初始化方法init(ServletConfig)
  • service():每一次调用都将执行service(ServletRequest,ServletResponse)方法
  • destory():服务器关闭或项目移除时调用

Servlet的相关配置

启动时创建Servlet

Servlet默认是在第一次访问的时候创建的,现在让Servlet在服务器启动的时候创建好,进行对Servlet的配置
在web.xml的< servlet>< /servlet>标签中配置
< load-on-startup>2< /load-on-startup> --传入正整数,整数越小,被创建的优先级就越高

【url-pattern的配置】

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

  • 完全路径匹配:以 / 开始
    例如:/ServletDemo4 ,/aaa/ServletDemo5 ,/aaa/bbb/ServletDemo6

  • 目录匹配: 以/开始,需要以结束
    例如: /
    (所有),/aaa/*(aaa目录下的所有)

  • 扩展名匹配:不能以/开始,以开始的。
    例如:
    .do、.action、.jsp。错误的写法:/*.do

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

    tomcat获得匹配路径时:1>2>3>4
    在这里插入图片描述
    在这里插入图片描述

开发中路径的编写:

在这里插入图片描述

案例:记录网站的登陆成功的人数

相关知识点:

ServletContext

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

  • void setAttribute(String name,Object object)
  • object getAttribute(Stirng name)
  • void removeAttribute(String name)

案例分析

在这里插入图片描述

代码实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ServletConfig:获得Servlet的配置信息(了解)

  1. String getInitParamter(String name) 获得Servlet的初始信息
  2. Enumeration getInitParameterNames() 获得所有Servlet的初始化参数的名称
  3. ServletContext getServletContext() 获得封装了servlet的上下文内容的对象
  4. Stirng getServletName() 获得Servlet在web.xml中配置的name的值

ServletContext:读取WEB工程下的文件(重点)

ServletContext 对象,tomcat为每一个web项目单独创建的一个上下文对象。就有功能:

  1. 可以在多个servlet之间共享数据
    存放:setAttribute()
    获得:getAtribute()
    删除:removeAtribute()
  2. 可以获得当前WEB项目中的指定资源文件
    InputStream getResourceAsStream(String) 将一个文件转为流
    String getRealPath(String) 将虚拟路径转化为真实路径
  3. 进行整个web项目初始化数据设置
    String getInitParameter(String)
    Enumeration getInitParameterNames()
    在这里插入图片描述
    在实际开发中,有时候可能会需要读取Web应用中的一些资源文件,比如配置文件,图片等。为此,在ServletContext接口中定义了一些读取Web应用的路径,返回关联资源文件的IO流,资源文件文件在系统中的绝对位置等
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值