天天看点

关于在转发时 request 带值问题 、Cookie

转发带值问题 转发的好处在哪里 解放Tomcat,Tomcat专心做逻辑就好了,将逻辑运算完的值,进行转发到页面处理层,jsp等有他们进行拿到转发到的值进行页面的呈现

给request存放值是为了带到下一个页面中,或者最后一个页面

有以下几种方法

request.setAttribute(String,Object); 如果里面有相应键值,就会覆盖值(注意名称相同就会覆盖)

request.removeAttribute(String); 根据键值输出数据

request.getAttribute(String); 取值 没有值返回null

request.getAttributeNames(); 得到所有的名称

public class B extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("a");
        req.setAttribute("小明", 15);
        requestDispatcher.forward(req, resp);
    }
}           
public class A extends HttpServlet {
   @Override
   protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       resp.setContentType("text/html;charset=UTF8");
       System.out.println(req.getAttribute("小明"));
    //加入转发到的是网页处理部分他就能拿转发的值进行呈现
       PrintWriter printWriter = resp.getWriter();
       printWriter.print("来了老弟");
       printWriter.close();
   }
}
           

Http是一个无状态协议 生命周期很短暂一去一回就结束了,没次都会开启新的Servlet没有记忆功能所以就有了Cookie技术

Cookie 是通过浏览器配合做的会话跟踪技术

他会将你设置的内容进行缓存起来,生成一个编号当你再次访问这个网站他就会给服务器这个编号通过Coolkie技术就编号内容进行呈现

要想获得浏览器带来Cookie 使用request

如果想给浏览器设置Cookie 使用response

setMaxAge 最大存活世界 是秒单位 默认是存放内存中

删除客户端的cookie 只需要setMaxAge(0) 即可

cookie一旦设置存活时间,就会在硬盘中存放,这个时候可能曝光

public class B extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        Cookie cookie = new Cookie("名字", "刘德华");
        cookie.setMaxAge(60);//60秒的生命周期如果不写的话,默认网页关闭Cookie结束
        resp.addCookie(cookie);
    }
}           
public class A extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Cookie[] cookies = req.getCookies();//得到用Request
        for (int i = 0; i < cookies.length; i++) {
            if (cookies[i] != null) {
                System.out.println(cookies[i].getName());
                System.out.println(cookies[i].getValue());
            }
        }
        Cookie cookie = new Cookie("name", "");//删除Cookie方法
        cookie.setMaxAge(0);//生命周期
        resp.addCookie(cookie);//添加Cookie 用Response添加
    }
}