cookie
客户端的缓存技术,浏览器技术
作用:
提高网页效率,减轻服务器的负载
Cookie的创建和发送
Cookie的创建和发送
Cookie的创建
Cookie cookie=new Cookie("名称","值")
Cookie的发送:
resp.addCookie(cookie)
Cookie到期时间的设置
到期时间,用来指定该cookie何时失效。默认为当前浏览器关闭即失效
大于0的整数
表示cookie存活指定的秒数
小于0的整数
表示不存储,默认关闭浏览器失效
0
表示删除
获取Cookie的值
req.getCookies();
设置到期时间:
Cookie对象名.setMaxAge();.
Cookie的注意点:
1、cookie不跨电脑和浏览器
2、cookie设置中文问题
Cookie中不能出现中文,如果有中文则通过URLEncoder.encode()来进行编码
获取时通过URLDecoder.decode()来进行解码
Cookie的覆盖
在相同的domain和path下,如果出现相同的name的cookie对象,后面的cookie对象会将前面的覆盖
Cookie的路径
1、cookie.setPath("/");当前服务器下,所有的资源都可以获得Cookie
2、在相同的domain下,只有访问资源的路径中包含cookie设置的path值,才能访问到cookie对象
session
session是一次会话,在会话中可以存在多次请求
1、创建|获取session对象(当访问资源时,会先判断session对象是否存在,存在,则获取,或者创建)
HttpSession session=req.getSession();
2、会话标识符
session.isNew();
3、是否为新的会话
session.isNew();
4、创建的时间
session.getCreationTime();
5、最后的访问时间
session.getLastAccessedTime();
Session域对象
Session用来表示一次会话,在一次会话中数据是可以共享的,这是session作为域对象存在
通过setAttribute(name,value)方法向域对象中添加数据
通过getAttribute(name)方法从域对象中获取数据
通过removeAttribute(name)方法从域对象中移出数据
session的销毁
1、默认到期时间
当最大不活动时间到达默认到期时间,session会销毁
在服务器规定时间内没有任何有效的操作,session对象就会销毁
Tomcat服务器默认时间是30分钟。单位是分钟
可以修改默认的时间:
Tomcat下的web。xml目录中
2、自己设置到期时间
通过session.setMaxInactiveINterval(int)方法来设置session最大活动时间,单位为秒
通过session.getMaxInactiveINterval(int)方法来获取最大不活动时间
3、默认关闭浏览器即失效
session底层依赖cookie;默认关闭浏览器即失效
4、关闭服务器(非正常关闭)
当非正常关闭服务器时,session 销毁;
当正常关闭服务器时,Session 将被序列化 到磁盘上,在工作空间 work 目录下的 SESSION.ser 文件中,下次启动服务时,自动加 载到内存
5、手动销毁
session.invalidate()方法;
ServletContext 对象,又称 Application 对象
作用:
1、作为域对象用来共享数据,此时数据在整个应用程序中共享
2、该对象中保存了当前应用程序相关信息
获取ServletContext 对象的方法:
1、通过request对象获取
ServletContext sc =request.getServletContext();
2、通过session对象获取
ServletContext sc1=request.getSession().getServletContext();
3、通过Config对象获取
ServletContext sc2=getServletConfig().getServletContext();
4、直接获取
ServletContext sc3=getServletContext();
常用方法:
1、获取服务器的版本信息
.getServerInfo()
2、获取项目在服务器的真实路径
.getRealPath("/");
文件上传
需要第三方的jar包的支持。
commons-fileupload.jar 是文件上传的核心包
commons-io.jar 是 filefupload 的依赖包,同时又是一个工具包。
注:jar包需要放在项目的WEB-INF的lib目录下,不需要bulid path。
核心对象:
DiskFileItemFactory – 设置磁盘空间,保存临时文件。只是一个工具类
ServletFileUpload – 文件上传的核心类,此类接收 request,并解析
核心方法:
ServletFileUpload.parseRequest(request); – List 解析 request
实现步骤:
1、 创建一个 DiskFileItemFactory 工厂类,并制定临时文件和大小
2、 创建 ServletFileUpload 核心类,接收临时文件,做请求的转换
3、 通过 ServletFileUpload 类转换原始请求,得到 FileItem 集合
4、 遍历集合中的各个元素并处理
5、 判断每个元素是否是普通表单项,如果是则按照普通表单项处理
6、 如果不是普通表单项,则是文件,通过处理的方式进行处理(上传)
具体步骤:
1、设置请求的编码(处理POST请求)
2、需要在项目的WebContent目录下创建两个文件夹 (upload:文件最终上传的目录 temp:临时目录)
3、得到两个文件夹的路径(在服务器下的真实路径)
4、声明DiskFileItemFactory工厂类,用于在指定磁盘上设置一个临时目录
5、声明ServletFileUpload,接收上面的临时文件。
6、通过ServletFileUpload核心上传类,解析请求,返回集合 List
7、判断集合是否为空
8、遍历集合,得到集合中每一个元素
9、判断元素是否是普通表单,如果是,按照普通表单项取值
10、如果是非普通表单,则为文件上传
a、得到文件名,通过判断和截取得到文静后缀,生成随机文件名,拼接成新的文件名
b、将文件写入指定目录中(upload目录)
c、删除临时文件
文件下载方式:
1、超链接下载
浏览器遇到能够识别的资源会直接显示,遇到不能识别的资源则会进行下载
download属性
当a标签设置download属性时,点击链接会进行下载;
download属性如果没有设置对应的值,下载时的文件就是下载名;如果设置过属性值则下载名为设置的值
表单登录
前台:
表单
表单提交地址
表单类型
id属性值
表单元素
文本框
设置name和id属性值
密码框
设置name和id属性值
普通按钮
设置id属性值,绑定点击事件
表单校验
1、获取表单元素的值
2、判断表单元素的值是否为空
如果为空,显示提示信息
如果不为空,则提交表单
后台:
1、获取前台传递的姓名和密码 request.getParameter("表单元素的name属性值");
2、参数的非空校验(姓名和密码)
如果为空,请求转发跳转到登录页面,并return
3、通过姓名和密码去数据库查询用户对象,返回用户对象(创建JavaBean User类)
JDBC的查询操作(创建DBUtil工具类)
1、通过DBUtil工具类得到数据库连接
2、定义sql语句
3、预编译sql语句
4、设置参数,下标从1开始
5、执行查询,返回resultSet结果集
6、判断并分析结果集
如果查询到数据,将数据填充到用户对象中
7、关闭资源
8、返回用户对象
注:需要将mysql的jar包拷贝到项目的WEB-INF的lib目录下
4、判断用户对象是否为空
如果为空,表示账号密码不正确,登录失败,请求转发跳转到登录页面,并return
5、如果用户对象不为空
表示登录成功,重定向跳转到首页
Ajax登录
前台:
表单元素
文本框
设置id属性值
密码框
设置id属性值
普通按钮
设置id属性值,绑定点击事件
非空校验
1、获取表单元素的值
2、判断表单元素的值是否为空
如果为空,显示提示信息
如果不为空,则发送ajax请求
$.ajax({
type:"post", // 请求类型 GET|POST
url:"loginServlet", // 请求路径
data:{ // 需要传递给后台的参数
"uname":uname,
"upwd":upwd
},
success:function(result){ // 回调函数:用来接收后台返回的结果
/*
需要得到数据:
成功或失败 1=成功,0=失败
为什么失败 字符串:错误原因
{
code:0,
msg:"xxx失败"
}
*/
// 判断是否登录成功
if (result.code == 1) { // 登录成功
// 通过js跳转页面
window.location.href = "index.html";
} else {
// 登录失败
// 设置提示信息
$("#msg").html(result.msg);
}
}
});
后台:
1、获取前台传递的参数
2、参数的非空校验(姓名和密码)
如果为空,需要通过输出流将结果响应给ajax的回调函数,并return
3、通过姓名和密码去数据库查询用户对象,返回用户对象(创建JavaBean User类)
JDBC的查询操作(创建DBUtil工具类)
1、通过DBUtil工具类得到数据库连接
2、定义sql语句
3、预编译sql语句
4、设置参数,下标从1开始
5、执行查询,返回resultSet结果集
6、判断并分析结果集
如果查询到数据,将数据填充到用户对象中
7、关闭资源
8、返回用户对象
注:需要将mysql的jar包拷贝到项目的WEB-INF的lib目录下
4、判断用户对象是否为空
如果为空,需要通过输出流将结果响应给ajax的回调函数,并return
5、如果用户对象不为空
表示登录成功,需要通过输出流将结果响应给ajax的回调函数