栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb(四)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb(四)

目录

一、会话跟踪

(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
      fastjson
      1.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 为发烧而生 启用 修改 删除
(八)vue前端框架

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/927373.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号