Servlet续、session、cookie

重定向:

response.sendRedirect("/oa/dept/list");

转发与重定向?

转发为一次请求,浏览器最终地址栏的地址和用户输入访问的一致。而重定向为两次请求,浏览器最终地址显示的为重定向后的地址。

如果在上一个Servlet当中向request域当中绑定了数据,希望从下一个Servlet当中把request域里面的数据取出来,使用转发机制

剩下所有的请求均使用重定向。(重定向使用较多)并且,删除,修改,保存等操作最好使用重定向以避免刷新时带来的问题。

Servlet注解

@WebServlet注解可以在类上直接使用,从而省略了在xml文件中配置的一些繁琐操作。
使用格式:@注解名称(属性名=属性值, 属性名=属性值, 属性名=属性值....)

session

什么是一次请求:用户在浏览器上点击了一下,然后到页面停下来,可以粗略认为是一次请求。请求对应的服务器端的java对象是:request。

用户打开浏览器,进行一系列操作,然后最终将浏览器关闭,这个整个过程叫做:一次会话,所以一次会话包括多次请求。会话在服务器端也有一个对应的java对象,这个java对象叫做:session

session对象最主要的作用是:保存会话状态。(用户登录成功了,这是一种登录成功的状态,你怎么把登录成功的状态一直保存下来呢?使用session对象可以保留会话状态。因为HTTP是无状态的协议,请求的一瞬间是连接的,但是结束后马上断开)

session的原理

HttpSession session=req.getSession();

JSESSIONID=xxxxxx 这个是以Cookie的形式保存在浏览器的内存中的。浏览器只要关闭。这个cookie就没有了

session列表是一个Map,map的key是sessionid,map的value是session对象。

用户第一次请求,服务器生成session对象,同时生成id,将id发送给浏览器。用户第二次请求,自动将浏览器内存中的id发送给服务器,服务器根据id查找session对象。

关闭浏览器,内存消失,cookie消失,sessionid消失,会话等同于结束

Cookie

session的实现原理中,每一个session对象都会关联一个sessionid,例如:JSESSIONID=41C481F0224664BDB28E95081D23D5B8。以上的这个键值对数据其实就是cookie对象。

cookie最终是保存在运行内存或者硬盘文件中。只要设置cookie的有效时间 > 0,这个cookie一定会存储到硬盘文件当中。

cookie的默认路径为设置的路径以及它的所有子路径

输出cookie

@WebServlet("/receive")
public class Receive extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Cookie[] cookies=req.getCookies();
        int i=0;
        if(cookies!=null){
        for(Cookie cookie:cookies){
            i++;
            System.out.println(i);
            String name=cookie.getName();
            String value=cookie.getValue();
            System.out.println(name+"="+value);
        }
    }}
posted @ 2022-09-16 20:41  零基础科班  阅读(32)  评论(0)    收藏  举报