A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Day14  Servlet的使用和概述


day_14      Servlet的概述和使用Servlet的实现的关系  Servlet     :接口
      |
  GenericServlet  :通用的Servlet
      |
  HttpServlet     :HttpServlet
  * 编写一个类继承HttpServlet,重写doGet和doPost 方法
  * 配置
  ​程序的书写步骤
  • 先建好数据库表格
  • 创建一个于数据库表格所对应的一个实体类,并且实体类的成员和数据库字段名相同
  • 引入jar包
  • 引入login的页面
  • 编写Servlet--->Service---->DAO
      
      步骤一: 创建数据库的实体类 User
      步骤二:创建UserServlet类中,继承HttpServlet类重写Do方法
          - // 接收数据
          -//将数据封装到实体类User对象中
          -// 调用业务层处理数据,判断数据
          -// 根据处理结果显示信息(页面跳转)
      步骤三:创建UserService类,
          -// 创建login方法,判断数据库中是否有这个数据
          -// 调用dao,完成对数据库的查询操作
          -// 这里我们要链接数据库
Servlet的生命周期
  • 生命周期:就是一个对象从创建到销毁的过程
  • WEB的面试重点

    • 从用户访问到结束,servlet对象有且只有一个
    • 用户第一次访问Servlet的时候,服务器创建一个Servlet的实例,那么Servlet中的init方法就会执行,任何一次请求服务器都会创建一个新的线程访问Servlet中的Service的方法,在service方法内部会根据请求方式的不同,执行不同的do方法,当服务器关闭的时候servlet就会自动销毁,而且Servlet 只创建一次


为了程序的性能和用户的体验(程序优化)  
  在创建Servlet对象,调用init方法的时候的耗时
  ​
  第一次访问的时候初始化资源(耗时),以后访问无序在初始化,把这个耗时的操作放到服务器启动的时候
  ​重点:虚拟路径的url-pattern的配置目的和作用:    为了实现服务器启动,自动创建Srevlet对象,且该对象至创建一次
  • Servlet默认是在第一次访问的时候创建的.现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置:
    在web.xml中在<servlet></servlet>标签中配置:
    *<load-on-startup>2</load-on-startup>  --- 传入正整数,整数越小,被创建的优先级就越高.

url-parrern的配置三种方式
  • 优先级:完全路径>目录>扩展名
  • 为什么有优先级:一次请求,只有一次响应

  
  url-pattern配置方式共有三种:
  1.完全路径匹配
      以 / 开始  例如: /ServletDemo4 , /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6
  2.目录匹配
      以 / 开始 需要以 * 结束.    例如: /* ,/aaa/* ,/aaa/bbb/*
  3.扩展名匹配
      不能以 / 开始 以 * 开始的. 例如: *.do , *.action
  ***** 错误的写法 : /*.do
  ​开发中的路径的编写  
  相对路径:都是需要找位置相对关系.不能以 / 开始的.
  * ./ 当前路径  ../上一级目录
  * 使用相对路径访问:
      * http://localhost:8080/day09/demo4-url/demo1.html
      * http://localhost:8080/day09/ServletDemo6
  绝对路径:不需要找位置相对关系. 以 / 开始的.
  * 绝对路径中分为客户端路径和服务器端路径:
      * 客户端路径一定要加工程名.     /day09/ServletDemo6
      * 服务器端路径不需要加工程名.    /ServletDemo6
  ​网页的定时跳转
  • 设置五秒跳转

  
  【使用Http协议中的Refresh头信息】
  ​
  Refresh之前已经介绍可以定时页面跳转.需要使用程序设置头信息才可以.
  ​
  【response中设置响应头】**********重点
  * addHeader(String name,String value);      --- 针对一个key对应多个value的响应头.
      * addDateHeader(String name,long date);
      * addIntHeader(String name,int value);
  ​
  * setHeader(String name,String value);      --- 针对一个key对应一个value的响应头.
      * setDateHeader(String name,long date);
      * setIntHeader(String name,int value);
  ​
  例如:头信息: xxx:aaa
      * addHeader(“xxx”,”bbb”);       -->xxx:aaa,bbb
      * setHeader(“xxx”,”bbb”);       -->xxx:bbb
  ​网页登陆成功后统计次数ServletContext:重要
​         作用范围: 整个web工程
  • 用来存取数据
  • ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。

域对象存储数据(Attribute是属性的意思)
  • setAttribute(String name, Object value);   存储数据
  • getAttribute(String name);   返回值是一个Object值,获取数据
  • remobeAttibute(String name); 删除存储的数据


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马