目录
一、会话跟踪
(1)客户端会话技术Cookie
1.Cookie的原理
2.Cookie的生命周期
3.Cookie如何存储中文数据
(2)服务端会话技术Session
1.基本使用
2.原理
3.使用细节
二、filter拦截器
(1)拦截器的基本使用
一、会话跟踪
(1)客户端会话技术Cookie
示例:
package com.wrx.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/aServlet")
public class aServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//value里面别放中文会报错
Cookie cookie = new Cookie("wrx", "123");
response.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
package com.wrx.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/bServlet")
public class bServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取所有的Cookie,并且放入数组
Cookie[] cookies = request.getCookies();
// 遍历数组
for (Cookie cookie : cookies) {
String name = cookie.getName();
// 将自己想要的数据和获取到的数据进行比对,相同就获取内容
if("wrx".equals(name)){
String value = cookie.getValue();
System.out.println(name+":"+value);
break;
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
1.Cookie的原理
2.Cookie的生命周期
默认的生命周期为关闭浏览器就销毁Cookie
setMaxAge(时间):1.时间参数为负数,默认关闭浏览器就销毁Cookie
2.时间位0,直接销毁Cookie
3.正数,设置成为Cookie新的存活时间,Cookie的数据会存储到电上,
时间到后自动销毁.
3.Cookie如何存储中文数据
1.传Cookie前URL编码
2.接收Cookie时候URL解码
package com.wrx.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.net.URL;
import java.net.URLEncoder;
@WebServlet("/aServlet")
public class aServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//value里面别放中文会报错
String name = "高黎";
// Cookie没法存储中文,但是可以用URL编码换成字符,接收Cookie时候再解码
name = URLEncoder.encode(name, "UTF-8");
Cookie cookie1 = new Cookie("user", name);
// 非中文
// Cookie cookie2 = new Cookie("wrx", "123");
System.out.println(cookie1);
// 设置Cookie的存活周期,通常情况下,关闭浏览器销毁Cookie
// setMaxAge(60*60*24*7)参数为负数关闭浏览器销毁Cookie;0直接销毁;正数为存活时间
// cookie2.setMaxAge(60*60*24*7);//参数为Cookie的存活时间一周
// response.addCookie(cookie2);
response.addCookie(cookie1);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
package com.wrx.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
@WebServlet("/bServlet")
public class bServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取所有的Cookie,并且放入数组
Cookie[] cookies = request.getCookies();
// 遍历数组
for (Cookie cookie : cookies) {
String name = cookie.getName();
// 将自己想要的数据和获取到的数据进行比对,相同就获取内容
if("user".equals(name)){
String value = cookie.getValue();
// 解码
String decode = URLDecoder.decode(value);
System.out.println(name+":"+decode);
break;
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
(5)在jsp页面获取Cookie数据
(2)服务端会话技术Session
1.基本使用
第一步:存数据到Session
package com.wrx.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/demo1")
public class Servletdemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取session对象
HttpSession session = request.getSession();
// 存数据
session.setAttribute("name","wrx");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
第二部:取数据
package com.wrx.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/demo2")
public class Servletdemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取数据
HttpSession session = request.getSession();
Object name = session.getAttribute("name");
System.out.println(name);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
2.原理
当我们请求一个Session对象时候会有一个默认的id值,在访问这个servlet时,tomcat,会创建一个Cookie,这个Cookie里面存储着session的默认id值。在响应头里存储着,发到浏览器,当请求时带着着这个Cookie的请求头发送到新的serlet,这个servlet在创建的Session对象就是和第一次创建session对象是同一个对象。
3.使用细节
再正常关闭服务器时候,session不会被销毁,会存储到电脑的本地磁盘,默认30分钟后自动销毁。若是在没有销毁前,再次打开服务器,服务端会获取session文件的数据,并且把本地磁盘的session文件删除。
1. ******如何销毁Session:函数:invalidate();
2. 设置session的销毁时间:
在web.xml中写配置
40
二、filter拦截器
(1)拦截器的基本使用
1.定义类,实现Filter的接口,重写方法,主要的方法为doFliter(),chain为放行参数
2.配置拦截器的路径
3.利用chain调用doFliter(request,response)放行
注意:执行流程为,客户端请求——》放行前逻辑——》放行——》访问资源——》放行后逻辑
package com.itheima.web.filterdemo;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
this.responseText;//获取到的响应数据
}
(五)axios
注意:在调用回显的数据时先转为字符串tostring()一下
axios.get("http://localhost:8083/AllUsedDemo1/Servlet?username=wrx").then(function (resp){
alert(resp.data.toString())
})
(六)JOSN
1.基础语法
数据的交互方式还是axios
2.josn的对象和java的对象转换
1. 依赖:
com.alibaba fastjson1.2.62
·2.java对象转JSON
String jsonStr = JSON.toJSONString(obj)
3.JSON字符串转对象
User user = JSON.parsreObject(jsonStr,User.class)
User user = new User();
user.setId(1);
user.setPassword("123");
user.setUsername("1111");
String s = JSON.toJSONString(user);
System.out.println(s);
User user1 = JSON.parseObject(s, User.class);
System.out.println(user1);
注意:在java中不能用getParameter接收JSON的数据,要使用流的方式
//1. 接收数据,request.getParameter 不能接收json的数据
// 获取请求体数据
BufferedReader br = request.getReader();
String params = br.readLine();
// 将JSON字符串转为Java对象
Brand brand = JSON.parseObject(params, Brand.class);
//2. 调用service 添加
brandService.add(brand);
//3. 响应成功标识
response.getWriter().write("success");
示例代码:
添加:
添加品牌
添加品牌
查询所有:
Title
| 序号 | 品牌名称 | 企业名称 | 排序 | 品牌介绍 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| 1 | 三只松鼠 | 三只松鼠 | 100 | 三只松鼠,好吃不上火 | 启用 | 修改 删除 |
| 2 | 优衣库 | 优衣库 | 10 | 优衣库,服适人生 | 禁用 | 修改 删除 |
| 3 | 小米 | 小米科技有限公司 | 1000 | 为发烧而生 | 启用 | 修改 删除 |



