JAVAEE笔记
get里面只可以获取URL中的参数
post可以获取URL和body中的参数
request
response
设置响应数据
响应数据分为3个部分
1、响应行:HTTP/1.1 200 OK
void setStatus(int sc):设置响应状态码
2、响应头:Content-Type:text/html
void setHeader(String name,String value):设置响应头键值对
3、响应体:如图片,html信息等
PrintWriter getWriter():获取字符输出流
ServletOutputStream getOutputStream():获取字节输出流
完成重定向
特点
- 浏览器地址变化
- 可以重定向到任意位置的资源(外部内部都可)
- 是两次请求,不能在多个资源之间使用Request共享数据
// //1. 设置状态码
// response.setStatus(302);
// //2.设置响应头
// response.setHeader("location","/demo2");
//重定向的简写方式
response.sendRedirect("/demo2");
路径问题
什么时候路径需要加虚拟目录?
浏览器使用–>加虚拟目录
服务端使用–>不加虚拟目录
加虚拟目录时建议使用request.getContextPath()
如
加虚拟目录
《a herf=》
《form action=》
response.sendRedierct(“”)
不加虚拟目录
request.getRequestDispatcher(“”)
响应字符数据
响应字节数据
会话跟踪技术
会话:
用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。
一次会话中可以包含{% color red 多次 %}请求和响应。
6次请求,3个会话

会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在 同一次会话的多次请求间共享数据。
为什么无法在浏览器和服务器不支持数据共享呢?
- 浏览器和服务器之间使用的是HTTP请求来进行数据传输
- HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求
- HTTP协议设计成无状态的目的是让每次请求之间相互独立,互不影响
- 请求与请求之间独立后,就无法实现多次请求之间的数据共享
会话跟踪技术的具体实现方式:
客户端:Cookie
服务端:Session
Cookie是存储在浏览器端而Session是存储在服务器端
Cookie
概念
基本使用
原理分析
Session
概念
基本使用
原理分析
钝化和活化
钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中
活化:再次启动服务器后,从文件中加载数据到Session
Filter
概念
执行流程
路径说明
- 拦截具体资源:/index.jsp—>只有访问index.jsp时才会拦截
- 目录拦截:/user/*—>访问/user下的所有资源,都会被拦截
- 后缀名拦截:*.jsp—>访问后缀为jsp的资源都会被拦截
- 拦截所有:/*—>访问所有的资源都会被拦截
Listener
监听器可以在application、session和request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件

基本使用
定义类,实现接口
添加注解
package filter;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebListener
public class Listener implements ServletContextListener, HttpSessionListener, HttpSessionAttributeListener {
public Listener() {
}
@Override
public void contextInitialized(ServletContextEvent sce) {
/* This method is called when the servlet context is initialized(when the Web application is deployed). */
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
/* This method is called when the servlet Context is undeployed or Application Server shuts down. */
}
@Override
public void sessionCreated(HttpSessionEvent se) {
/* Session is created. */
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
/* Session is destroyed. */
}
@Override
public void attributeAdded(HttpSessionBindingEvent sbe) {
/* This method is called when an attribute is added to a session. */
}
@Override
public void attributeRemoved(HttpSessionBindingEvent sbe) {
/* This method is called when an attribute is removed from a session. */
}
@Override
public void attributeReplaced(HttpSessionBindingEvent sbe) {
/* This method is called when an attribute is replaced in a session. */
}
}

