JSP(部分) java server page 运行在服务器端的页面. ==> 本质就是servlet. 运行流程: jsp =(第一次访问时)=> .java ==> .class ==> 运行 JSP中的脚本: <% java内容 %> 该脚本包裹的代码会出现在 service方法中 <%=表达式 %> 该脚本用于输出内容.out.print();方法包裹输出内容. <%! 内容 %>(了解): 该脚本包裹的内容会出现在类定义中. //--------------------------------------------------------------------- EL 表达式 代替 脚本 => 输出脚本 <%= %> 格式: ${表达式} EL表达式可以在4个域中取数据 => 4个内置对象 applicationScope/requestScope/sessionScope/pageScope 从指定域取值: ${requestScope.name}<br> ${applicationScope.name}<br> 不指定域取值: ${name}<br> => 从小域到大域中查找.显示最先找到的. //----------------------------------------------------------------------------------------------------------------------------------------- 会话技术 会话的概念: 日常生活来讲.会话就是两个人聊天. 聊天的前提,聊天双方需要有记忆力. 在聊的过程中,都是 基于之前聊的状态,继续往下聊. 我们javaweb中,浏览器和服务器也可以看作是双方在聊天(请求,响应). 浏览器服务器双方也需要 有"记忆力",保存之前的聊天状态.服务器和浏览器才可以完成会话. 会话的范围: 两个从打招呼到两人互相道别.是一次会话. 打开网站,完成我们想做的需求,到关闭浏览器.是一次会话. Cookie: 让浏览器能够记录信息. Session:让服务器端能够记录信息. //----------------------------------------------------------------------------------- cookie 浏览器端记录信息的技术 基本操作 创建cookid Cookie cookie = new Cookie(String key,String value); 发送cookie response.addCookie(cookie); 获得cookie Cookie cookie = null; Cookie[] cookies = request.getCookies(); if(cookies!=null && cookies.length>0){ for(Cookie c : cookies ){ if(c.getName().equals("remember")){ cookie = c; } } } cookie的细节 1>关于浏览器记住多久. 默认情况: 浏览器会在关闭的时候删除cookie(会话结束时) 手动设置: c.setMaxAge(60*60*24*7*2);//告诉浏览器保存2周 c.setMaxAge(-1);// -1代表 在会话结束时删除cookie(默认情况) c.setMaxAge(0);// 通常用于删除已经存在的cookie.使用一个寿命为0的cookie,覆盖要删除的cookie 2>浏览器在什么情况下发送cookie(cookie的路径问题) *cookie的默认路径就是 发送cookie的动态资源所在的上一级路径. *如果 cookie路径是"/day10-cookie", 主机(域)是:localhost . 那么浏览器在访问cookie路径的所有子路径时会携带cookie. http:/localhost:8080/day10-cookie/BServlet 会发送 http:/localhost:8080/day10-cookie/ABC/BCD/CServlet 会发送 http:/localhost:8080/day12/AServlet 不会发送 http:/www.baidu.com/day10-cookie/BServlet 不会发送 3>Cookie路径的设置 默认情况: 发送Cookie的资源所在路径. 例如: http:/localhost:8080/day9-cookie/CServlet => /day9-cookie 手动设置: c.setPath("/day09-cookie/ABC"); 4>cookie的主机(域)设置 (了解) 默认情况: 发送Cookie的资源所在主机. 手动设置: //自己当前是什么主机,你就只能设置为什么主机,或者主机名的一部分 //假设自己的主机是www.baidu.com那么可以如下设置: c.setDomain(".baidu.com"); 5> cookie删除的问题 删除cookie原理就是 使用一个寿命为0的cookie 覆盖需要删除的cookie. 如何覆盖cookie.? 需要 路径,键,主机 一致,即可覆盖. 6> 使用cookie记录中文键值对问题. 为什么不能直接使用中文? 因为http协议中,除正文部分都不得使用Latin码表以外的其他码表. 所以不管是cookie还是之前的Cotent-disposition.都不能直接使用中文. 汤姆 => %E3%E5%C2 1.使用 URLEncoder 对中文进行url编码 2.在获取cookie时,使用URLDecoder进行解码. //--------------------------------------------------------------------------------------------------------------- 例1: 使用cookie 记录浏览历史. 1.获得参数 2.获得Cookie //存在 => 修改cookie加上现在浏览器的品牌 //不存在 => 创建cookie 3.将cookie发送会浏览器 4.重定向到列表页面 例2: 记住我 1.获得用户名密码 2.校验用户名密码 //失败=> 转发到表单页面,并提示错误 3.创建cookie 添加要保存的用户名, 4.查看记住用户名是否被选中 //选中 => 设置保存时间为2周 //没选中=>设置保存事件为0 5.添加到响应中 6.重定向到成功页面 //------------------------------------------------------------------------------------------------------------------------------------------ Session 服务器段记录信息的技术 操作 我们只需要掌握原理.和 学会如何获得 session即可. 获得==> request.getSession(); 操作: getAttribute(); setAttribute(); removeAttribute(); getAttributeNames(); session的细节 1> session能在服务器端保存多久? 1. <session-config> <session-timeout>30</session-timeout> </session-config> 在tomcat/conf/web.xml 有如上配置. 该配置决定了session对象的有效存活时间为30分钟. 2. 在我们项目的web.xml中, 也可以加上如上配置. 区别就是影响的范围不同.在项目中配只影响当前项目. 3.(了解). 在session对象中,还有如下方法. 该方法也是控制session对象 的有效存活时间的,单位是秒. 范围是只影响调用该方法的某个session. void setMaxInactiveInterval(int interval) 2>session的范围问题. 1>浏览器第一次访问服务器,服务器创建session对象.会话开始. 2>*浏览器关闭,保存sessionID的cookie丢失. 会话结束.(session还在服务器中,等死) *session过期 *手动销毁session 3>session中的其他方法. //其他操作 System.out.println("session.isNew()"+session.isNew());// 判断session是否 是新的. System.out.println("session.getCreationTime()"+new Date(session.getCreationTime()));//获得session的创建时间 System.out.println("session.getId()"+session.getId());//获得session的id System.out.println("session.getLastAccessedTime()"+new Date(session.getLastAccessedTime()));//获得最后一次的访问时间 System.out.println("session.getMaxInactiveInterval()"+session.getMaxInactiveInterval());// 获得session的最大有效时间 session.setMaxInactiveInterval(60);//设置session的最大有效时间为60秒 session.invalidate();//需要记住: 立即让session销毁. //--------------------------------------------------------------------------------------------------------------------------------- 例3:验证码 例4:购物车 1. 获得当前请求要添加的商品 2.从Session中取出存放购物车的map //取不到=>初始化map,并放入session 3.使用当前要添加的商品从map中取值 //取不到=> 放入map,设置数量为1 //取得到=> 将数量+1放回去 4.重定向回商品列表页面 |
|
来自: Dragon_chen > 《javaee和mysql》