目录
一、会话跟踪
(1)客户端会话技术Cookie
1.Cookie的原理
2.Cookie的生命周期
3.Cookie如何存储中文数据
(2)服务端会话技术Session
1.基本使用
2.原理
3.使用细节
二、filter拦截器
(1)拦截器的基本使用
(2)filter的拦截路径种类和过滤器链
(三)监听器listener(略,在spring详解)
(四)、AJAX(前后端分离)
(五)axios
(六)JOSN
1.基础语法
2.josn的数据对象和java的数据对象的转换
<1>.环境设置: JSON依赖
<2>.请求数据:java对象转JSON
<3>.响应数据:JSON字符串转JSON对象
(八)vue前端框架
1.入门
2.常用指令
<1> v-model
<2>v-bind
<3>v-on绑定事件
一、会话跟踪 (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("/*")
public class filters implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// 1.放行前逻辑,可以对request的数据进行处理
System.out.println("还未放行");
// 2.放行
filterChain.doFilter(servletRequest,servletResponse);//放行代码
// 下面的代码属于放行后的逻辑
// 3.放行后逻辑,可以处理response的数据
System.out.println("放行后逻辑");
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
(2)filter的拦截路径种类和过滤器链
1.拦截路径
2.过滤器链
就是有多个过滤器的意思,他的执行顺序就是按照过滤器在类名字符串排序的顺序执行的
执行顺序:f1的方形前逻辑——》放行——》f2的放行前逻辑——》放行——》资源访问
——》f2的放行后逻辑——》f1的放行后逻辑
(三)监听器listener(略,在spring详解)(四)、AJAX(前后端分离)
1.概述:
2.基本使用
这里的代码,W3school官网有
//1.创建XMLHttpReqest对象
var xhttp;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//2.想服务器发送请求
//method:请求的类型:GET 还是 POST
//url:服务器(文件)位置,全路径locahast。。。。。
//async:true(异步)或 false(同步)
xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
//3.获取相应数据
/**
*保存了 XMLHttpRequest 的状态。
*0: 请求未初始化
*1: 服务器连接已建立
*2: 请求已接收
*3: 正在处理请求
*4: 请求已完成且响应已就绪
*200: "OK"
*403: "Forbidden"
*404: "Page not found"
**/
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;
JOSN的对象:
2.josn的数据对象和java的数据对象的转换
<1>.环境设置: JSON依赖
com.alibaba
fastjson
1.2.62
<2>.请求数据:java对象转JSON
String jsonStr = JSON.toJSONString(obj)
<3>.响应数据:JSON字符串转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的数据
/* String brandName = request.getParameter("brandName");
System.out.println(brandName);*/
// 获取请求体数据
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
为发烧而生
启用
修改 删除
(八)vue前端框架
1.入门
Title
{{username}}
2.常用指令
<1> v-model
绑定Vue对象里的数据,此控件里的数据发生变化,Vue里的数据同步变化。
Title
{{username}}
<2>v-bind
简化书写格式:
1.v-bind:href
2.:href
第二种为简化书写格式。
Title
点我
<3>v-on绑定事件
备注:绑定事件的方法放在了,methods属性里。
1.v-on click=“”
2.@click=“” 这两种表达方式相通。
Title
<4>v-if,v-else if,v-else,v-show逻辑判断
<5>v-for
循环遍历数组,同时循环创建标签
Title
{{i}} ----- {{addr}}
运行结果:
3.生命周期
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)