文件上传、Cookie、Session

一、文件的上传介绍(重点)

 1、要有一个form标签,method=post请求

 2、form标签的encType属性值必须为multipart/form-data值

 3、在form标签中使用input type = file添加上传的文件

 4、编写服务器代码(Servlet程序)接收、处理上传的数据

<form action="" method="post" enctype="multipart/form-data">
        用户名:<input type="text" name="username"><br>
        头像:<input type="file" name="photo"><br>
        <input type="submit" value="上传">
    </form>

 encType = multipart/form-data表示提交的数据,以多段(每一个表单项一个数据段)的形式进行拼接,然后以二进制的形式发送给服务器
在这里插入图片描述

上传会用到的类和方法

ServletFileUpload类,用于解析上传的数据

FileItem类,表示每一个表单项

boolean ServletFileUpload.isMultipartContent(HttpServletRequest request);

判断当前上传的数据格式是否是多段的格式

public List<FileItem> parseRequest(HttpServletRequest request)

解析上传的数据

boolean FileItem.isFormField()

判断当前这个表单项,是否是普通的表单项,还是上传的文件类型

 true表示普通类型的表单项

 false表示上传的文件类型

String FileItem.getFieldName()

获取表单项的name属性值

String FileItem.getString()

获取当前表单项的值

String FileItem.getName();

获取上传的文件名

void FileItem.write(file);

将上传的文件写到参数file所指向的磁盘位置

二、Cookie

1、定义

 Cookie是服务器通知客户端保存键值对的一种技术

 客户端有了Cookie后,每次请求都发送给服务器

 每个Cookie的大小不能超过4kb

2、如何创建Cookie

在这里插入图片描述

3、服务器如何获取Cookie

 服务器获取客户端的Cookie只需要一行代码:

req.getCookies():Cookie[]

在这里插入图片描述

4、Cookie值的修改

方案一:

 ​ ①先创建一个要修改的通明的Cookie对象

 ​ ②在构造器,同时赋予新的Cookie值

 ​ ③调用response.addCookie(Cookie);

//①先创建一个要修改的通明的Cookie对象

//②在构造器,同时赋予新的Cookie值
Cookie cookie = new Cookie("key1","newValue1");
//③调用response.addCookie(Cookie);
resp.addCookie(cookie);

方案二:

 ​ ①先查找到需要修改的Cookie对象

 ​ ②调用setValue()方法赋予新的Cookie值

 ​ ③调用response.addCookie()通知客户端保存修改

//①先查找到需要修改的Cookie对象
Cookie cookie = CookieUtils.findCookie("key2",req.getCookies());
if(cookie != null){
	//②调用setValue()方法赋予新的Cookie值
	cookie.setValue("newValue2");
	//③调用response.addCookie()通知客户端保存修改
	resp.addCookie(cookie);
}
resp.getWriter().write("key1的Cookie已经修改好");

5、Cookie生命控制

Cookie的生命控制指的是如何管理Cookie什么时候被销毁(删除)

setMaxAge()

​  正数:表示在指定的秒数后过期

 ​ 负数:表示浏览器一关,Cookie就会被删除

 ​ 0:表示马上删除Cookie

protected void deleteNow(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
	//先找到要删除的Cookie对象
	Cookie cookie = CookieUtils.findCookie("key4",req.getCookie());
	if(cookie != null){
		//调用setMaxAge(0)
		cookie.setMaxAge(0);//表示马上删除,不需要等待浏览器关闭
		//调用response.addCookie(cookie)
		resp.addCookie(cookie);
		
		resp.getWriter().write("key4的Cookie已经被删除");
	}
}

protected void defaultLife(HttpServletRequest req,HttpServletRequest resp) throws ServletException,IOException{
	Cookie cookie = new Cookie("defaultLife","defaultLife");
	cookie.setMaxAge(-1);//设置存活时间
	resp.addCookie(cookie);
}

6、Cookie有效路径Path的设置

 Cookie的path属性可以有效的过滤哪些Cookie可以发送给服务器,哪些不发

 path属性是通过请求的地址来进行有效的过滤

7、Cookie练习–免输入用户名登录

在这里插入图片描述

public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        if ("wj168".equals(username) && "123456".equals(password)){
            //登录成功
            Cookie cookie = new Cookie("username",username);
            cookie.setMaxAge(60*60*24*7);//当前Cookie一周内有效
            resp.addCookie(cookie);
            System.out.println("登录成功!");
        }else {
            //登录失败
            System.out.println("登录失败!");
        }
    }
}
<form action="" method="get">
        用户名:<input type="text" name="username" id=""><br>
        密码:<input type="password" name="password" id=""><br>
        <input type="submit" value="登录">
    </form>

三、Seesion会话

1、定义

 是一个接口(HttpSeesion)

 是会话,用来维护一个客户端和服务器之间关联的一种技术

 每个客户端都有自己的Session会话

 Session会话中,经常用来保存用户登录之后的信息

2、如何创建Session和获取(id号,是否为新)

request.getSeesion();

 ​ 第一次调用:创建Seesion会话

 ​ 之后调用都是:获取前面创建好的Session会话对象

isNew():判断到底是不是刚创建出来的(新的)

 ​ true:表示刚创建

 ​ false:表示获取之前创建

每个会话都有一个ID值,且唯一,

getId()得到Session的会话id值

3、Session域数据的存取

在这里插入图片描述

4、Session生命周期控制

public void setMaxInactiveInterval(int interval)

设置Session的超时时间,超过指定时长,Session就会被销毁

 值为正数时,设定Session的超时时长

 负数表示永不超时(极少使用)

public void getMaxInactiveInterval()

获取Session的超时时间

Session默认的超时时长是多少?

 ​ 30分钟

因为在Tomcat服务器的配置文件web.xml中默认有以下的配置,表示配置了当前Tomcat服务器下所有的Session超时配置默认时长为:30分钟

<session-config><session-timeout>30</session-timeout>

</session-config>
session.setMaxInactiveInterval(int interval)

单独设置超时时长

Session超时的概念介绍:
在这里插入图片描述

protected void life(HttpServletRequest req,HttpServletRequest resp) throws ServletException,IOException{
	//先获取Session对象
	HttpSeesion session = req.getSession();
	//设置当前Session3秒后超时
	session.setMaxInactiveInterval(3);
	resp.getWriter().write("当前Session已经设置为3秒后超时");
}

5、浏览器和Session之间关联的技术内幕

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值