JavaWeb(四)

JavaWeb(四),第1张

目录

一、会话跟踪

(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.生命周期

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1323156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存