Day14 Servlet的使用和概述
day_14 Servlet的概述和使用Servlet的实现的关系 Servlet :接口
|
GenericServlet :通用的Servlet
|
HttpServlet :HttpServlet
* 编写一个类继承HttpServlet,重写doGet和doPost 方法
* 配置
程序的书写步骤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工程 域对象存储数据(Attribute是属性的意思)setAttribute(String name, Object value); 存储数据 getAttribute(String name); 返回值是一个Object值,获取数据 remobeAttibute(String name); 删除存储的数据
|
|