• 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()

  • 相关阅读:
    js 字符串转化成数字:(实例:用正则检测大于0的正数,最多保留4位小数)
    SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法
    Entity Framework学习二:定义数据结构
    Entity Framework学习一:在.net类基础上创建新数据库
    Create Primary Key using Entity Framework Code First
    MVC缓存(转载)
    不错的博文地址
    read xml test
    xml读取类
    VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发(转载)
  • 原文地址:https://www.cnblogs.com/10zhang/p/9471583.html
Copyright © 2020-2023  润新知