cookie session 表单登录 Ajax登录

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的回调函数

你可能感兴趣的:(cookie session 表单登录 Ajax登录)