转发带值问题 转发的好处在哪里 解放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添加
}
}