
Servlet程序和ServletConfig对象都是由Tomcat负责创建,程序员负责使用。
Servlet程序默认是第一次访问的时候场景,ServletConfig是每个Servlet程序创建时就创建一个对应的ServletConfig对象。
1.ServletContext是一个接口,它表示Servlet上下文对象。
2.一个web工程中只有一个ServletContext对象实例。
3.ServletContext对象是一个域对象。
4.ServletContext是在web工程部署启动的时候创建,在web工程停止的时候销毁。
什么是域对象?
答:域对象是可以像Map一样存取数据的对象,叫域对象。这里的域指的是存取数据的操作范围。
context.getRealPath("/")
在这里 / 斜杆被服务器解析地址为:http://ip:port/工程名/
5. 像Map一样存取数据。
作用:每次只要有请求进入Tomcat服务器, Tomcat 服务器就会把请求过来的HTTP协议信息解析好封装到Request对象中。然后传递到service方法( doGet和doPost)中给我们使用。我们可以通过HttpServletRequest对象,获取到所有请求的信息。
i. getRequestURI() 获取请求的资源路径
ii. getRequestURL () 获取请求的统一资源定位符 (绝对路径)
iii. getRemoteHost () 获取客户端的ip地址
iv. getHeader() 获取请求头
v. getParameter( ) 获取请求的参数
vi. getParameterValues( ) 获取请求的参数(多个值的时候使用)
vii. getMethod( ) 获取请求的方式GET或POST
viii. setAttribute(key, value); . 设置域数据
ix. getAttribute(key); 获取域数据
x. getRequestDispat cher( ) 获取请求转发对象
什么是请求转发?
答:请求转发是指服务器收到请求后,从一次资源跳转到另一个服务器资源的操作。

请求转发的特点:
1、 浏览器地址栏没有变化。
2、是一次请求。
3、共享Request域中的数据。
4、可以转发到WEB-INF目录下。
5、不可以访问工程外的资源。
1.作用:HttpServletResponse类和HttpServletRequest类- -样。每次清求进来,Tomcat 服务器都会创建一个Response 对象传递给Servlet程序去使用。
HttpSerletRequest 表示请求过来的信息,HttpSerletResponse 表示所有响应的信息,我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse对象来进行设置。
字节流 getOutputStream(); 常用于下载(传递二进制数据)
字符流 getWriter(); 常用于回传字符串(常用)
两个流同时只能使用一个!
需要给响应流以及浏览器设置编码
HttpServletResponse resp;
// 设置服务器字符集为UTF-8
resp.setCharacterEncoding("UTF-8");
// 通过响应头,设置浏览器也使用UTF-8
resp.setHeader("Content-type", "text/html;charset=UTF-8");
或者使用下面代码,可以同时设置服务器和客户端都使用特定字符集
resp.setContentType("text/html;charset=UTF-8");
需要注意的是,这个方法需要在获取流对象之前调用才有效!
什么是请求重定向?
答:请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你新地址。你去新地址访问。叫请求重定向(因为之前的地址可能已经被废弃)。

resp.setStatus(302);
resp.setHeader("Location", "地址");
resp.sendRedirect("地址");

1、Listener监听器它是JavaWeb的三大组件之一。 JavaWeb的三大组件分别是: Servlet 程序、Filter 过滤器、Listener 监
听器。
2、Listener 它是JavaEE的规范,就是接口
3、监听器的作用是,监听某种事物的变化。然后通过回调函数,反馈给客户(程序)去做- -些相应的处理。
1.ServletContextListener它可以监听ServletContext对象的创建和销毁。
2.ServletContext对象在web工程启动的时候创建,在web工程停止的时候销毁。
3.监听到创建和销毁之后都会分别调用ServletContextListener监听器的方法反馈。
// 在ServletContext对象创建之后马上调用,做初始化
void contextInitialized(ServletContextEvent var1);
// 在ServletContext对象销毁之后调用。
void contextDestroyed(ServletContextEvent var1);
使用步骤如下:
拦截请求的常见应用场景有:
1.权限检查(登录后才能访问某些资源)
2.日记操作
3.事物管理
。。。。等等
Filter的生命周期包含几个方法:
简单的说FilterChain就是多个过滤器联合工作。

多个Filter联合工作的时候,其执行顺序是根据其在配置文件中的顺序决定的。
多个Filter过滤器执行的特点:
<url-pattern>/xxx.jspurl-pattern>
以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/xxx.jsp
<url-pattern>/img/*url-pattern>
以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/img/*
<url-pattern>*.htmlurl-pattern>
以上配置的路径,表示请求地址必须以html结尾才会拦截到
后缀名不一定是文件类型,任意字符可以