JSP&Cookie&Session
-
概念
- Java Server Pages: Java 服务器端页面
- 一个特殊的页面,其中既可以执行定义HTML标签,又可以定义java代码
- 用于简化书写
- Java Server Pages: Java 服务器端页面
-
原理
- JSP本质上 就是一个Servlet
-
JSP脚本:JSP定义Java代码的方式
- <% 代码 %>:定义的Java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
- <%! 代码 %>:定义的Java代码,在jsp转换后的java类的成员位置。
- <%= 代码 %>:定义的Java代码,会输出到页面上。
-
JSP的内置对象
- 在JSP页面中不需要获取和创建,可以直接使用的对象
- jsp共有9个内置对象
- request
- response
- out:字符输出流对象。 和response.getWriter()类似
- 区别:response.getWriter的数据输出永远在out.writer之前
Session
-
概念:服务器端会话技术。在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession
-
快速入门
-
获取HttpSession对象
request.getSession() -
使用HttpSession对象
- getAttribute\
- setAttribute
- removeAttribute
-
-
原理
- Session的实现依赖于cookie的
-
细节:
-
当客户端关闭后,服务器不关闭,两次获取session是否是同一个
- 默认情况下不是
- 如果需要相同,则可以创建cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存
-
客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
- 不是用一个,但是要确保数据不丢失
- session的钝化:
- 在服务器正常关闭之前,将session对象序列化到硬盘上
- session的活化
- 在服务器启动后,将session文件转化为内存中的session对象即可
- session的钝化:
- 不是用一个,但是要确保数据不丢失
-
session的失效时间(什么情况下被销毁)
- 服务器关闭
- session调用方法 invalidate
- session默认失效时间 30分钟
- 选择性配置修改
-
-
session 的特点
- session用于存储一次会话的多次请求的数据,存在服务器端
- session可以存储任意类型,任意大小的对象
- session与cookie的区别
- session存储数据在服务器端,cookie在客户端
- session没有数据大小限制,cookie有
- session数据安全,cookie相对不安全
package com.ybs.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* @author Paulson
* @date 2019/10/25 22:14
*/
@WebServlet("/sessionDemo1")
public class SessionDemo1 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.setAttribute("msg", "hello session");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}
package com.ybs.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* @author Paulson
* @date 2019/10/25 22:14
*/
@WebServlet("/sessionDemo2")
public class SessionDemo2 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
Object msg = session.getAttribute("msg");
System.out.println(msg);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}