zoukankan      html  css  js  c++  java
  • Servlet总结

    serlvet总结:
    servlet的体系结构:


    Servlet:接口
    |
    GenericServlet:抽象类
    |
    HttpServlet:抽象类
    |
    自定义servlet

    servlet常用方法:


    void init(ServletConfig config):初始化
    void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
    void destroy():销毁

    ServletConfig getServletConfig() :获取当前servlet的配置对象

    GenericServlet常用方法:


    除了service方法没有显示,其他都实现了
    空参的Init() 若我们自己想对servlet进行初始化操作,重写这个init()方法即可

    HttpServlet常用方法:


    service做了实现,把参数强转,调用了重载的service方法
    重载的service方法获取请求的方式,根据请求方式的不同调用相应doXxx()方法
    doGet和doPost方法



    servlet生命周期 ★★★


    void init(ServletConfig config):初始化
    * 初始化方法
    * 执行者:服务器
    * 执行次数:一次
    * 执行时机:默认第一次访问的时候
    void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
    * 服务
    * 执行者:服务器
    * 执行次数:请求一次执行一次
    * 执行时机:请求来的时候
    void destroy():销毁
    * 销毁
    * 执行者:服务器
    * 执行次数:只执行一次
    * 执行时机:当servlet被移除的时候或者服务器正常关闭的时候



    serlvet是单实例多线程
    默认第一次访问的时候,服务器创建servlet,并调用init实现初始化操作.并调用一次service方法
    每当请求来的时候,服务器创建一个线程,调用service方法执行自己的业务逻辑
    当serlvet被移除的时候服务器正常关闭的时候,服务器调用servlet的destroy方法实现销毁操作.


    url-pattern的配置:★


    方式1:完全匹配 必须以"/"开始 例如: /hello /a/b/c
    方式2:目录匹配 必须"/"开始 以"*"结束 例如: /a/* /*
    方式3:后缀名匹配 以"*"开始 以字符结尾 例如: *.jsp *.do *.action

    优先级:


    完全匹配>目录匹配>后缀名匹配


    练习:


    有如下的一些映射关系:
    Servlet1 映射到 /abc/*
    Servlet2 映射到 /*
    Servlet3 映射到 /abc
    Servlet4 映射到 *.do


    问题:


    当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应
    Servlet引擎将调用Servlet1。
    当请求URL为“/abc”时,“/*”和“/abc”都匹配,哪个servlet响应
    Servlet引擎将调用Servlet3。
    当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应
    Servlet引擎将调用Servlet1。
    当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应
    Servlet引擎将调用Servlet2.
    当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应
    Servlet引擎将调用Servlet2。


    在servlet标签有一个子标签 load-on-startup
    作用:用来修改servlet的初始化时机
    取值:正整数 值越大优先级越低



    当我们的配置文件里面没有指定配置的话,会查找tomcat的web.xml,
    若请求我们自己的项目处理不了,tomcat的默认的servlet会帮我们处理信息



    路径的写法:
    相对路径:
    当前路径 ./ 或者 什么都不写
    上一级路径 ../
    绝对路径:(我们使用)
    带主机和协议的绝对路径(访问站外资源)
    http://www.itheima.com/xxxx
    http://localhost:80/day09/hello
    不带主机和协议的绝对路径
    /day09/hello(经常使用)



    案例3-统计登录成功的总人次,
    需求:
    在一个用户登录成功之后,获取之前登录成功总人次,将次数+1.在访问另一个servlet的时候,显示登录成功的总人次
    技术分析:
    ServletContext



    ServletContext:
    上下文(全局管理者)
    常用的方法:
    setAttribute(String key,Object value);//设置值
    Object getAttribute(String key);//获取值
    removeAttribute(String key)://移除值
    获取全局管理者:
    getServletContext():



    步骤分析:
    1.在项目启动的时候,初始化登录次数
    在loginservlet的init()方法中获取全局管理者,将值初始化为0,放入servletcontext上
    2.登录成功之后,在loginservlet中获取全局管理者,获取登录成功的总次数
    3.然后将次数+1,让后将值设置回去
    4.当访问showServlet的时候,获取全局管理者,获取登录成功的总次数,然后在页面上打印出来即可



    ServletConfig:(了解)
    servlet配置对象
    作用:
    1.获取当前servlet的名称
    2.获取当前servlet的初始化参数
    3.获取全局管理者
    方法:
    String getServletName():获取当前servlet的名称(web.xml配置的servlet-name)

    String getInitParameter(String key):通过名称获取指定的参数值
    Enumeration getInitParameterNames() :获取所有的参数名称
    初始化参数是放在 web.xml文件
    servlet标签下子标签 init-param

    ★getServletContext():获取全局管理者
    servletconfig是由服务器创建的,在创建servlet的同时也创建了它,通过servlet的init(ServletConfig config)将config对象
    传递给servlet,由servlet的getServletConfig方法获取



    ServletContext:理解
    上下文(全局管理者)
    一个项目的引用.代表了当前项目.
    当项目启动的时候,服务器为每一个web项目创建一个servletcontext对象.
    当项目被移除的时候或者服务器关闭的时候servletcontext销毁
    作用:
    1.获取全局的初始化参数
    2.共享资源(xxxAttribute)
    3.获取文件资源
    4.其他操作
    获取servletcontext:
    方式1:了解
    getServletConfig().getServletContext()
    方式2:
    getServletContext()
    常用方法:
    1.了解
    String getInitParameter(String key):通过名称获取指定的参数值
    Enumeration getInitParameterNames() :获取所有的参数名称
    在根标签下有一个 context-param子标签 用来存放初始化参数
    <context-param>
    <param-name>encoding</param-name>
    <param-value>utf-8</param-value>
    </context-param>
    2.xxxAttribute
    3.
    String getRealPath(String path):获取文件部署到tomcat上的真实路径(带tomcat路径)
    getRealPath("/"):D:javaToolsapache-tomcat-7.0.52webappsday09
    InputStream getResourceAsStream(String path):以流的形式返回一个文件
    4.获取文件的mime类型 大类型/小类型
    String getMimeType(String 文件名称)



    域对象:★★★
    servletcontext
    当成map集合
    常用方法:
    xxxAttribute()
    servletcontext创建和销毁:
    当项目启动的时候,服务器为每一个web项目创建一个servletcontext对象.
    当项目被移除的时候或者服务器关闭的时候servletcontext销毁
    存放:
    共享的数据



    获取文件的路径:
    通过类加载器获取文件:2.txt 放在classes目录下无论是java项目还是web项目都可以
    类.class.getClassLoader().getResource("2.txt").getPath()

  • 相关阅读:
    【Javascript】javascript学习 二十二 JavaScript 对象简介
    【Javascript】javascript学习 二十六 JavaScript Boolean(逻辑)对象
    【Javascript】javascript学习 二十九 JavaScript HTML DOM 对象
    【Javascript】javascript学习 二十八 JavaScript RegExp 对象
    【Javascript】javascript学习 二十一 JavaScript 指导方针
    【Javascript】javascript学习 二十三 JavaScript 字符串(String)对象
    【Javascript】javascript学习 三十 JavaScript 浏览器检测
    【Javascript】javascript学习 二十五 JavaScript Array(数组)对象
    【Javascript】javascript学习 二十四 JavaScript Date(日期)对象
    【Javascript】javascript学习 二十七 JavaScript Math(算数)对象
  • 原文地址:https://www.cnblogs.com/10zhang/p/9471583.html
Copyright © 2011-2022 走看看