servlet知识点<四>

本文详细介绍了Servlet的生命周期,包括实例化、初始化、服务和销毁等阶段,并探讨了ServletConfig和ServletContext的作用。此外,还深入讲解了会话跟踪技术中的Cookie和Session,包括它们的创建、使用及生命周期管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

servlet的生命周期:
    实例化  第1次请求 构造方法 1次
    初始    实例化后,紧接着执行 init() 1
    服务    有请求    service(doGet/doPost)    N
    销毁   server停        destroy()    1
ServletContext:web.xml    一个web应用对应一个servletContext
    读取全局初始化参数:<servlet>外面,<web-app>的第一项<context-param>
        String str = this.getServletContext().getInitParameter("参数名");
ServletConfig:web.xml中的一个<servlet>配置标签,一个web应用对应多个servletconfig
    读取局部初始化参数:<servlet>里面,<servlet-class>的后面<init-param>
        String str = this.getServletConfig().getInitParameter("参数名");

include:包含
    PrintWriter out = request.getWriter();//设置命名属性
    out.response("<html></html>");
    RequestDispatcher rd = request.getRequestDispatcher("/url-pattern");
    rd.include(request, response);
    
forward:请求转发
    request.setAttribute("name", objval);//设置命名属性
    RequestDispatcher rd = request.getRequestDispatcher("/url-pattern");
    rd.forward(request, response);
                request.getParameter("name");
    Object obj = request.getAttribute("name");
    特点:1)地址栏不变
        2)服务器端的转发
        3)永久转向
        4)共享同一个request
        
sendRedirect:重定向
    response.sendRedirect("/web应用/url-pattern?name=val&name2=val2");
    
    String val = request.getParameter("name");
    特点:1)地址栏改变
        2)客户端的转向
        3)永久转向
        4)不共享同一个request
问题:request.getRequestDispatcher("http://www.sina.com.cn").forward(request, response);    ERROR 404
    response.sendRedirect("http://www.sina.com.cn");   OK
    
-----------------------------------------------------------
    
一、Cookie
    服务器 往 浏览器 写的一小段数据(字符串),同两部分构成:name value
    
    1)创建
        Cookie c = new Cookie("name", "val");
        c.setMaxAge(60);//设置cookie有效时间,秒
    2)写cookie
        response.addCookie(c);
    3)读cookie
        Cookies[] cookies = request.getCookies();
二、Session[重点]
    http:无状态 ,对于同一客户端的连续请求不能记忆
    会话跟踪,为了解决http的无状态.常见的会话跟踪技术:            cookie(客户端保存数据的方式)
                                        HttpSession(服务器端保存数据的方式)
    Session:用于记录同一客户端的连接操作,包含多个request
    1)创建session
        HttpSession session = request.getSession(true);//true,如果当前client没有session,创建一个新的;如果有,直接拿来使用
                                  //false,如果当前client没有session,返回null;如果有,直接拿来使用
        String sessionid = session.getId();
        boolean bn = session.isNew();
        long seconds = session.getCreationTime();
    2)Session是一个作用域对象
        session.setAttribute("name",objval);
        Object obj = session.getAttribute("name");
        session.removeAttribute("name");
    3)生命周期
        开始:client发出请求,getSession(true)
        结束:超时/server停/session.invalidate()

    修改session的最大失效时间方法:
    1)web.xml,<servlet-mapping>标签后添加如下标签,单位分钟
        <session-config>
              <session-timeout>10</session-timeout>
          </session-config>
    2)session.setMaxInactiveInterval(600);//设置单个session的最大失效,单位秒

作业:
1。使用Servlet实现删除用户功能

2.给项目动态页面添加上当前登录用户:XXX










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值