文件上传三要素&session和cookie区别

文件上传

三要素:

1.post请求

2.type为file

3.添加属性enctype=“multipart/form-data”

配置文件上传解析器:

applicationContext-mvc.xml配置

<!-- 配置文件上传解析器 -->

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--设置上传大小-->
<property name="maxUploadSize" value="10485760"></property>
</bean>

cookie和session的区别

cookie:将一小段文本信息保存在客户端浏览器中的一种会话跟踪技术

生命周期:默认请求下,浏览器会将Cookie保存在内存中,只有浏览器不关闭,数据都在。直到浏览器关闭,数据消失

设置生命周期:setMaxAge(int n)
n<0:默认状态,保存在内存中,关闭浏览器数据失效
n=0:立即删除
n>0:保存在硬盘中,持续n秒(这时跟浏览器关不关闭无关),直到时间走完之后自动删除

优点:减轻了服务器的压力
缺点:
1.数据保存在浏览中,数据容易丢失,数据容易被获取,不安全(Cookie可以被禁用)
2.保存数据类型有限,只能是字符串
3.保存的数据大小有限制,大约是4kb左右
ps:cookie不能跨域获取

session:将数据保存在服务器端的会话跟踪技术

生命周期:
出生:创建Session对象
invalidate():销毁session对象

数据保存的时间:
出生:添加数据的时候
数据消失:过期时间结束(默认的过期时间是30分钟,从不操作开始计时)
自定义过期时间:
代码方式:session.setMaxInactiveInterval(int s)
web.xml方式:< session-config>,单位是分钟
优点:
1.由于session是将数据保存在服务器端,安全性高相对较高
2.大小相对于Cookie来说大得多
3.数据类型没有限制
缺点:可能会影响服务器的性能

cookie和session的优缺点其实就是反着的

用cookie实现登录页面记住我选项

前端:在记住我那个框的属性中写上value和name
<input value="1" name="jzw" id="jzww" type="checkbox"><span class="label-text">记住我</span>

然后通过document.cookie获取后台传过来的cookie,对其进行操作

     		//获取重后台传过来的cookie
     		var cookie = document.cookie;
     		//console.debug(cookie);  获取到字符串username=root; password=123
     		//先判断cookie不为null
     		if(cookie != null){
     			
				//然后判断cookie中是否包含username
				if(cookie.indexOf("username=") != -1){
	     			var username = null;		
    	 			var password = null;
					//然后把cookie字符串进行以";"为分割,得到一个数组
					var arr =cookie.split(";");
					//遍历数组
					for(var i=0; i<arr.length; i++){
						//判断数组中是否包含username
						if(arr[i].indexOf("username") != -1){
							//进行截取
							username = arr[i].substring(arr[i].lastIndexOf("=")+1);
						}if(arr[i].indexOf("password") != -1){
							//进行截取
							password = arr[i].substring(arr[i].lastIndexOf("=")+1);
						}
					}
					//进行赋值
					$("#unn").val(username);
					$("#paa").val(password);
					$("#jzww").prop("checked",true);
				}else{	//这里为取消了记住我
	     			$("#unn").val("");
					$("#paa").val("");
					$("#jzww").prop("checked",false);
	     		}
后端:接收传过来的value和name,判断value是否有值,有值的话就是记住我,没值就是没有记住我

记住我就是新建cookie,然后给cookie设置添加需要添加的属性,再给cookie设置个路径,然后给cookie设置个存活时间,最后响应到前端去

//判断jzw是否为null
		if(jzw != null){		//说明有值,这里的jzw是Integer jzw是从前端传过来的
			//创建cookie,把username和password放到coolie中去
			Cookie c1 = new Cookie("username", username);
			Cookie c2 = new Cookie("password", password);
			//为其设置路径
			c1.setPath("/");
			c2.setPath("/");
			//设置存活时间
			c1.setMaxAge(7*24*60);
			c2.setMaxAge(7*24*60);
			//把cookie响应到前端去
			resp.addCookie(c1);
			resp.addCookie(c2);
		}

取消记住我就是从前端获取cookie,然后获取的是数组,遍历数组,在遍历中去比较需要销毁掉的cookie,然后再把该cookie的状态响应给前端

//先从前端获取cookie
Cookie[] cookies = req.getCookies();
//遍历
for (Cookie cookie : cookies) {
	//判断其的值和username,password相同就进行销毁
	if(cookie.getName().equals("username") || cookie.getName().equals("password")){
		cookie.setMaxAge(0);
		//设置路径
		cookie.setPath("/");
		//把其状态响应到前端去
		resp.addCookie(cookie);
	}
}

Freemarker页面静态化技术

FreeMarker是一款模板引擎

使用步骤:
1.导入jar包
2.创建一个配置对象(传递一个版本)
3.设置模板加载路径
4设置一个模板编码
5.获取一个模板对象
6获取一个数据
7生成文件
freemarker工具类

public class FreeMarkerUtil {
	//String templateUrl -- 模板的加载路径
	//String templatename -- 模板的名称
	//Object data -- 模板中的数据
	//String suffix -- 模板生成的文件的后缀
	public static String createFile(String templatePath,String templateName,Object data,String suffix){
		//创建一个Configuration对象,为了创建Tmeplate对象
		Configuration config = new Configuration(Configuration.VERSION_2_3_28);
		File file = new File(templatePath);
		PrintWriter out = null;
		try {
			config.setDirectoryForTemplateLoading(file);//设置模板的加载路径
			config.setDefaultEncoding("UTF-8");//设置模板的编码集
			Template template = config.getTemplate(templateName);//生成模板对象
			//生成随机的名称,使用随机数
			//String uuid = UUID.randomUUID().toString().replaceAll("-", "");
			//使用时间戳生成
			long fileName = System.currentTimeMillis();
			//创建一个字符流
			out = new PrintWriter(new File(file,fileName + suffix));
			template.process(data, out);//生成静态资源
			return fileName+suffix;//返回文件的名称:带后缀的
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TemplateException e) {
			e.printStackTrace();
		} finally {
			out.close();
		}
		return null;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值