Session
- Session
- Session概述
将会话中的数据保存在服务器端
浏览器访问服务器,携带要保存的数据,服务器获取数据,然后检查有没有为当前浏览器服务的session,如果有,直接拿来使用,如果没有,则创建session,并将数据存入session中
当浏览器再次访问服务器,服务器找到为当前浏览器服务的session并从中获取数据,通过这种方式保存会话的数据
-
- Session域对象
生命周期:
创建:第一次调用request.getSession()方法是创建
销毁:
超时死亡:漠然30分钟不使用超时销毁
配置超时时间:在web.xml中
<!--配置session超时时间,单位为分钟-->
<session-config>
<session-timeout>1</session-timeout>
</session-config>
主动杀死:调用invalidate()方法销毁session
意外身亡:服务器意外宕机,session会随之销毁
如果服务器正常关闭,session会钝化到磁盘中,当服务器再次启动时会活化
作用范围:整个会话
功能:在整个绘画范围内共享数据
- Easymall登陆状态保存
创建User实体类用户封装用户数据
将user对象保存到session中
在head.jsp中:
<%if(request.getSession().getAttribute("user")==null){%>
<ahref="<%=request.getContextPath()%>/login.jsp">登录</a> |
<ahref="<%=request.getContextPath()%>/regist.jsp">注册</a>
<%}else{%>
欢迎<%=((User)request.getSession()
.getAttribute("user")).getUsername()%>回来!
<ahref="<%=request.getContextPath()%>/LogoutServlet">退出</a>
<%}%>
创建LogoutServlet,杀死session,并重定向到首页
- Easymall验证码效验
在ValiImageServlet中获取验证码并存入session中
在RegistServlet中,从session获取验证码,然后进行验证码效验
- AJAX
- AJAX概述
异步的js和xml
-
- 异步交互和同步交互
同步:浏览器向服务器发送一个请求,必须等待响应结束,才能发送第二个请求,在服务器处理期间,浏览器不能干别的事
通常刷新整个页面
异步:浏览器向服务器发送一个请求,无需等待响应结束,就能发送第二个请求,在服务器处理期间,浏览器可以干别的事
通常刷新局部页面
-
- AJAX使用场景
百度搜索框
注册时用户名校验
。。。
-
- AJAX优缺点
优点:异步交互,提高了用户的体验
服务器只是响应了部分数据,而不是整个页面,因此降低了服务器的压力
缺点:ajax不适用于所有场景
Ajax会无端的增加服务器的访问次数,从而增加服务器的压力
-
- Js实现ajax(了解)
第一步,获取xmlhttprequest对象
var xmlHttp = ajaxFunction();
function ajaxFunction(){
var xmlHttp;
try{
//现代浏览器(IE7+、Firefox、Chrome、Safari 和 Opera)都有内建的 XMLHttpRequest 对象
xmlHttp = new XMLHttpRequest();
}catch(e){
try{
//IE6.0
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
//IE5.0及更早版本
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
alert("...");
throw e;
}
}
}
return xmlHttp;
}
第二步,打开与服务器的连接
xmlHttp.open(method,url,async);
>method:请求方式,可以是GET或者POST
>url;所要访问的服务器中资源的路径如:/Day10/servlet/Aservlet
>async;是否为异步传输,true表示为异步传输,一般都是true
第三步,发送请求
xmlHttp.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded”);
//通知服务器发送的数据是请求参数
xmlHttp.send(“xxxx”);//注意,如果不给参数可能会造成部分浏览器无法发送请求
xmlHttp.send(“username=”+username+”&psw=”+)
>参数:
如果是GET请求,可以是null,因为GET提交参数会拼接在url后面
如果是POST请求,传入的就是请求参数
“username=张飞&psw=123”
第四步,注册监听
>在xmlgttpRequest对象的一个时间上注册监听器
Onreadtstatechange
>一共有五个状态(xmlHttp.readyState)
0状态:表示刚创建XMLHttpRequest对象,还未调用open()方法
1状态:表示刚调用open()方法,但是还没有调用send()方法发送请求
2状态,调用完send()方法了,请求已经开始
3状态:服务器已经开始相应,但是不代表响应结束
4状态:服务器响应结束!(通常我们只关心这个状态)
>获取xmlHttp对象的状态码
Var state = xmlHttp.readtState;//可能得到0.1.2.3.4
>获取服务器响应的内容
Var data = xmlHttp.responseText;//得到服务器响应的文本格式的数据
readtState
- ->1
/*注册监听,时刻监听服务器处理请求的状态*/
xmlHttp.onreadtstatechange = function(){{
if(xmlHttp.readyState == 4){
//状态为4表示服务器已经处理完成, 但是不代表处理成功
if(xmlHttp.status == 200){//当状态码为200, 表示服务器成功的处理了请求
var result = xmlHttp.responseText();
//xxx
}
}
}
-
- jQuery实现ajax
- $.get或$.post
- jQuery实现ajax
$.get(url,data,callback)
Url:请求的路径
Data:可选参数,请求的数据,json格式
Callbac:可选参数,请求成功后执行的函数
-
-
- load方法
-
$(selector).load(url,data,callback)
$(selector):选择器,服务器返回的数据可以直接存入这个选择器选中的元素中
Url:请求的路径
Data:可选参数,请求的数据,json格式
Callback:可选参数,请求成功后执行的函数
-
-
- $.ajax方法
-
$.ajax(url,data,async,type,success)
Url:请求的路径
Data:可选参数吗请求的数据,json格式
Async:可选参数,表示是否异步,漠然true是异步
Type:可选参数,请求方式,get,post
Success:可选参数没请求成功后执行的函数
7.用户名ajax校验
用户名失去焦点时发起ajax请求
$("input[name='username']").blur(function(){
$(this).nextAll("span").html("")
if($(this).val().trim()==""){
$(this).nextAll("span").html("用户名不能为空").css("color","red")
return
}
//获取用户名
varusername=$(this).val()
//调用ajax
$.post("<%=request.getContextPath()%>/AjaxCheckUnServlet",
{"username":username},function(result){
//result代表服务器响应的数据
$("#u_span").html(result).css("color","red")
})
})
创建ajaxChecjUnServlet,根据业务逻辑查询用户名是否存在并响应
- JSP
- Jsp介绍
由sun公司提供的动态web资源开发技术
Jsp是为了解决html只能输出页面,不能展示动态数据,而servlet适合开发动态web资源,不适合响应页面的问题
Jsp既能写html代码,也可以写java代码
-
- Jsp语法
Jsp表达式:
<%=jsp表达式%>:将jsp表达式的值放在所在的位置上
Jsp脚本片段:
<%jsp脚本片段%>:可以写普通的java代码
注意:一个jsp脚本片段可以不完整,但是多个脚本片段合起来要保证代码的完整性
Jsp指令:
<%@jsp指令%>:
Page指令:定义jsp的基本信息
contentType属性:指定浏览器解析的编码格式
Language属性:当前jsp的开发语言
Import属性:导包
Include指令:包含其他jsp页面
Taglib指令:引入jstl