day07
来源:互联网 发布:window10装mac系统 编辑:程序博客网 时间:2024/05/22 14:23
1、Session的原理
1.HttpSession对象由容器创建,存在于服务器端。
2.HttpSession也是一个域对象:setAttribute(Stringname,Object obj)
getAttribute(String name)
3.得到HttpSession对象:
request.getSession
获取客户端带过来的名字为JSESSIONID的cookie的值
发现没有该Cookie,创建了一个session对象。
把刚创建的session对象的id以cookie形式写给了客户端。Cookie的名称固定为 JSESSIONID
发现有名称为JSESSIONID的cookie
在服务器端查找id为cookie值的session对象,如果该对象存在,继续为你服务,不存
在创建新的session对象
request.getSession(booleancreate):
create=true:作用等同getSession()
create=false:只获取不创建。
2、案例
简单购物车
Response.encodeUrl()调用这个方法时,当客户端禁用Cookie,还可以把session的id
带过来。
完成用户一次性登录(结合随机验证码)
MD5加密和Base64编码
Base64编码是将数据的三个字节变成四个字节
MessageDigest md = MessageDigest.getInstance("md5");
byte b[] = md.digest(message.getBytes());//message的数据指纹
//b重新编码:看得懂的字符Base64
BASE64Encoder base64 = new BASE64Encoder();
base64.encode(b);
防止表单重复提交
用户登录时
生成一个随机的唯一的ID:
一个放在放到HttpSession的属性中
一个放在界面上
然后在服务端把这两者比对:
如果两者一致:证明没有重复提交;最后把session中的id干掉
如果不一致:重复提交
3、客户端禁用Cookie后的会话数据保存问题
当客户端禁用cookie后,如果访问地址是http://localhost,则禁用无效.(根据客户端的不同而不同)
URL重写:
http://127.0.0.1:8080/day07/servlet/BuyServlet oldUrl
http://127.0.0.1:8080/day07/servlet/BuyServlet;JSESSIONID=23432432newUrl
response.encodeURL(oldUrl)------------>newUrl
自动判断客户端有无禁用cookie,如果禁用了,就重写url,没有禁用,就不写了。
4、HttpSession对象的默认超时时间
1修改session的默认超时时间(默认为30分钟)(web.xml)
<session-config>
<session-timeout>1</session-timeout>分钟,至少一分钟
</session-config>
2浏览器会话的界定:
IE:
IE8+:开启的多个IE进程窗口共享同一个会话。
IE7-:开启一个新的IE进程不共享同一次会话。
新开的标签(Tab)页也属于同一次会话。
通过<a href=""target="_blank"/>开启的新窗口和原来的窗口属于同一次
会话。
5、Session的钝化和活化
1、session对象长时间没有使用了
2、用户在浏览过程中重新启动TOmcat或重新加载了当前应用
钝化(搁置)把Session这个对象保存在磁盘中(注意如果你Session里面保存的是对象就必须实现序列化接口)
1、session当前又活动了
2、重启成功了
活化(激活)把磁盘中的Session对象加载到缓存中
6、JSP语法
JSP实际上就是Servlet。
jsp的request和Servlet的request是不一样的,只是共享数据
学习JSP的最好办法:大脑中时刻想着Servlet。
1.模板元素:指JSP中的html
2.表达式:
作用:向页面输出运算结果。
语法:<%=表达式%>
实际上就是service中调用out.println(表达式);
3.Java脚本片段(实际开发中在JSP中是不允许有java脚本的。自定义标签来代替)
出现在JSP中的java代码。
作用:组织逻辑
语法:<%语句1;
语句2;%>
实际上会原封不动的被翻译到jsp对应serlvet的service方法中。
4.JSP声明:
作用:定义成员变量或方法
语法:<%!
语句;
%>
5.JSP注释
作用:注释
语法:<%--这是注释--%>
JSP中尽量使用JSP注释,不要使用HTML注释。
jsp注释不会翻译成Servlet,效率高
7、JSP的指令
作用:为JSP引擎(Tomcat)而设计的
语法:<% @指令名称属性1="value1" ....%>
Tip:指令是服务整个JSP的,出现在JSP的位置无关。但是一般把指令放在页面的最前端。
6.1:page
属性:
language:指定JSP中使用的脚本语言。默认是java,目前只支持java
extends:指定JSP对应的Servlet的父类。不要改改属性。
*import:导入JSP中需要的包或类。
可以import="java.util.UUID,java.util.Date"
或者写到多个page指令中
<%@pageimport="java.util.UUID"%>
<%@pageimport="java.util.Date"%>
JSP引擎会自动导入以下包:
javax.servlet.*;
javax.servlet.http.*;
javax.servlet.jsp.*;
*session:指定是否生成HttpSession对象。默认值是true。
buffer:输出流的缓存大小。none|8kb|sizeKb.默认值是8kb。
autoFlush:指定缓存满了是否自动刷新。默认值是true
isThreadSafe:是不是线程安全。true|false。默认值是true。
true:不安全的。
实际上是指定该JSP对应的Servlet是否实现SingelThreadModel接口。
*errorPage:指定当前页面出错后的显示页面。如果以"/"开头,表示绝对路径。
配置全局消息提示页面:
web.xml
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
8、JSP的图示
- day07
- day07
- day07
- day07
- day07
- day07
- day07
- day07
- day07
- day07
- day07
- Day07
- day07
- day07
- day07
- day07-tomcat
- day07 homework
- 作业day07
- 我不开心
- Struts2基础之十三:Struts2拦截器
- **乌托邦式的接口和实现分离技术**
- C++中的前置声明(Forward Declaration)
- POJ-3686-TheWindy's
- day07
- Activity的启动方式
- 1 filter入门
- JDBC事务相关概念
- XPDM vs WDDM
- js实现表单内容修改与初始值进行比较
- GPU更多参与 Windows7 WDDM1.1版浅析
- 1021. Couples
- x264和aac编解码器下载地址