1)什么是Session对象
Session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要Session对象。
Session失效:1关闭服务器 2关闭浏览器
2)Session对象的ID
当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个Session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样Session对象,直到客户关闭浏览器后,服务器端才将该客户的Session对象取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的Session对象。
3)Session对象的常用方法
方法名 |
作用 |
public String getId() |
获取Session对象编号 |
public void setAttribute(String key,Object obj) |
将参数Object指定的对象obj添加到Session对象中,并为添加的对象指定索引关键字 |
public Object getAttribute(String key) |
获取Session对象中含有关键字的对象 |
public Boolean isNew() |
判断是否是一个新的客户 |
如何设置session的有效期,有几种方式,分别如何去设置?
session默认有效期是30分钟,设置session的有效期有三种方法:
1.在tomcat中的web.xml中定义:
在tomcat中的conf/web.xml文件配置session的超时时间,单位为分钟,定义代码如下:
60
2.在工程的web.xml中定义,会覆盖tomcat服务器的conf/web.xml文件中的配置,单位为分钟
3.通过Java代码设定:
在servlet/jsp代码中配置
设置单位为秒,设置为-1则表示永不过期
session.setMaxInactiveInterval(30*60)
session会话对象
session当我们第一次访问一个资源时,session会产生一个id,同时把id发给客户端,存放在cookie中,
session通过id区别客户
session和cookie的区别
session 保存在服务端 保存的内容为Object类型 保存对象 两个都是key-value保存
Cookie在 客户端 不是内置对象 保存的内容为String类型 只能保存字符串 cookie不能保存中文
session里的数据相对安全,cookie不安全 ,因为session的数据保存在服务器
Cookie由服务端生成的,再发送给客户端保存
session 会在以下这几种情况下失效:
关闭浏览器;
关闭网页服务器;
用户未向服务器提出请求超过预设的时间,Tomcat 服务器预设时间为30分钟;
运行程序结束 session;
同源策略 cors 浏览器的安全策略 ajax跨域问题 解决跨越问题的机制:jsonp CORS(跨源资源共享)
//把用户存储在session //存储 HttpSession session=request.getSession(); session.setAttribute("loginUser", user); //loginuser自己命名,区分用的 //把存储的user里的属性值拿出来 User user=(User)session.getAttribute("loginUser"); %>欢迎您:<%=user.getName() %>
请求转发只能跳转本项目的页面,重定向可以跳转不同的页面和服务器
servlet是由tomcat实现的
分层的目的是为了解耦 便以代码的管理和维护
表示层: 页面展示层 对于Web应用系统而言,HTML页面、JSP页面属于表示层的内容
业务逻辑层:和系统功能相对应 通常由Service和servlet两个包共同组成 service下有一个接口service接口,有一个实现类实现它,通过接口和实现类,分开,定义规则
数据访问层:dao包,对应的实体类对于数据库的操作 由接口和实现类组成
实体类:和数据库表相对应
工具类:util 连接数据库
package cn.lanqiao.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; //工具类 加载连接数据库
request.setCharacterEncoding("utf-8"); //解决前端获取参数时,乱码问题
response.setContentType("text/html;charset=utf-8");//解决后端发数据到前端的乱码问题
重定向与转发的区别
重定向:response.sendRedirect("URL");
转发:request.getRequestDispatcher("URL").forward(request,response);
1.转发在服务器端完成的;重定向是在客户端完成的 2.转发的速度快;重定向速度慢 3.转发的是同一次请求;重定向是两次不同请求 4.转发地址栏没有变化;重定向地址栏有变化 5.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成
//请求转发 request.getRequestDispatcher("admin.jsp").forward(request,response); //重定向 response.sendRedirect("admin.jsp");
编写前先测试地址能不能用
ajax在doGet中不能使用请求转发和重定向 写了也用不了
回调函数不需要我们主动调用,当我们服务器返回数据后,调用函数
// 将 JSON 字符串格式化为 js 对象 var jsObj = JSON.parse(ajax.responseText) // 将 js 对象格式化为 JSON 字符串 var jsonStr = JSON.stringify(Obj); JSON - 转换为 JavaScript 对象 JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。 由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。
提示:eval() 函数可编译并执行任何 JavaScript 代码。这隐藏了一个潜在的安全问题。
使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。JSON 解析器只能识别 JSON 文本,而不会编译脚本。
在浏览器中,这提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。
较新的浏览器和最新的 ECMAScript (JavaScript) 标准中均包含了原生的对 JSON 的支持。
vue
v-model 双向数据绑定
v-for 循环遍历指令
computed:{//声明的是计算属性 (通过计算而得到的属性)
sum(){ //使用{{sum}}
return Number(this.num1)+Number(this.num2);
}
}
计算属性不要监听 ,如果想要实现功能,可以提供set方法就可以了
watch:{ //监听属性
count:function(newVal,oldVal){
console.log('改变前'+oldVal)
console.log('改变后'+newVal)
}
deep:true //深度监听
}
SPA (single page application) :单页面应用程序
基于组件的开发
全局组件:全局都可以用
tamplate:模板一定要有跟标签 ,就用div,别用别的