分享

javaee(3)

 Dragon_chen 2017-05-12
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.重定向回商品列表页面

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多