JavaWeb—Request请求对象

2023-11-14

目录

一、概述

二、Request对象

2.1 Request继承体系

小结

2.2 Request获取请求数据

2.2.1 获取请求行数据

2.2.2 获取请求头数据

2.2.3 获取请求体数据

小结

2.2.4 获取请求参数的通用方式

小结

2.3 IDEA快速创建Servlet 

2.4 请求参数中文乱码问题

2.4.1 POST请求解决方案

2.4.2 GET请求解决方案

小结

2.5 Request请求转发


一、概述

Request是请求对象,Response是响应对象。

  •  request:获取请求数据

        ○浏览器会发送HTTP请求到后台服务器[Tomcat]

        ○HTTP的请求中会包含很多请求数据 [请求行+请求头+请求体]

        ○所存入的对象即为request对象,所以我们可以从request对象中获取请求的相关参数

        ○获取到数据后就可以继续后续的业务,比如获取用户名和密码就可以实现登录操作的相关业务

  • response:设置响应数据

        ○业务处理完后,后台就需要给前端返回业务处理的结果,即响应数据

        ○把响应数据封装到response对象中

        ○后台服务器][Tomcat]会解析response对象,按照 [响应行+响应头+响应体]格式拼接结果

        ○浏览器最终解析结果,把内容展示在浏览器给用户浏览

小结:

  • request对象是用来封装请求数据的对象
  • response对象是用来封装响应数据的对象

二、Request对象

1. request原理:

  • request和response对象是由服务器创建的。我们来使用它们
  • request对象是来获取请求消息,response对象是来设置响应消息

2. request 对象继承体系结构:

3. request功能:

  • 获取请求消息数据

        ①获取请求行数据

        ②获取请求头数据

        ③获取请求体数据

  • 其他功能 

 

2.1 Request继承体系

 

 这个时候,我们就需要用到Request继承体系中的RequestFacade

  • 该类实现了HttpServletRequest接口,也间接实现了ServletRequest接口。
  • Servlet类中的service方法、doGet方法或者是doPost方法最终都是由Web服务器[Tomcat] 来调用的,所以Tomcat提供了方法参数接口的具体实现类,并完成了对象的创建
  • 要想了解RequestFacade中都提供了哪些方法,可以直接查看JavaEE的API文档中关于 ServletRequest和HttpServletRequest的接口文档,因为RequestFacade实现了其接口就 需要重写接口中的方法

小结

  • Request的继承体系为ServletRequest-->HttpServletRequest-->RequestFacade
  • Tomcat需要解析请求数据,封装为request对象,并且创建request对象传递到service方法
  • 使用request对象,可以查阅JavaEE API文档的HttpServletRequest接口中方法说明

2.2 Request获取请求数据

HTTP请求数据总共分为三部分内容,分别是请求行、请求头、请求体,对于这三部分内容的数据,分别该如何获取

2.2.1 获取请求行数据

请求行包括三块内容,分别是请求方式请求资源路径HTTP协议及版本

 对于这三部分内容,request对象都提供了对应的API方法来获取,具体如下:

  • 获取请求方式:GET

String getMethod()

  • 获取虚拟目录(项目访问路径):/request-demo

String getContextPath()

  • 获取URL(统一资源定位符): http://localhost:8080/request-demo/req1

StringBuffer getRequestURL()

  • 获取URI(统一资源标识符): /request-demo/req1

String getRequestURI

  • 获取请求参数(GET方式): username=zhangsan&password=123

String getQueryString()

package com.learn.web;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author 咕咕猫
 * @version 1.0
 */

@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // String getMethod():获取请求方式: GET
        String method = req.getMethod();
        System.out.println(method);

        // String getContextPath():获取虚拟目录(项目访问路径):/request-demo
        String contextPath = req.getContextPath();
        System.out.println(contextPath);

        // StringBuffer getRequestURL(): 获取URL(统一资源定位符)http://localhost:8080/request-demo/req1
        StringBuffer url = req.getRequestURL();
        System.out.println(url.toString());

        // String getRequestURI():获取URI(统一资源标识符): /request-demo/req1
        String uri = req.getRequestURI();
        System.out.println(uri);

        // String getQueryString():获取请求参数(GET方式): username=zhangsan
        String queryString = req.getQueryString();
        System.out.println(queryString);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

2.2.2 获取请求头数据

对于请求头的数据,格式为key:value如下:

  •  根据请求头名称获取对应值的方法为

String getHeader(String name)

**
* request 获取请求数据
*/
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

        //获取请求头: user-agent: 浏览器的版本信息
        String agent = req.getHeader("user-agent");
        System.out.println(agent);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
    }
}

2.2.3 获取请求体数据

浏览器在发送GET请求的时候是没有请求体的,所以需要把请求方式变更为POST,请求体中的数据格式如下:

 对于请求体中的数据,Request对象提供了如下两种方式来获取其中的数据,分别是:

  • 获取字节输入流,如果前端发送的是字节数据,比如传递的是文件数据,则使用该方法

ServletInputStream getInputStream()

该方法可以获取字节

  • 获取字符输入流,如果前端发送的是纯文本数据,则使用该方法

BufferedReader getReader()

**
* request 获取请求数据
*/
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
        //获取post 请求体:请求参数
        //1. 获取字符输入流
        BufferedReader br = req.getReader();
        //2. 读取数据
        String line = br.readLine();
        System.out.println(line);
    }
}

小结

 HTTP请求数据中包含了请求行、请求头、请求体,针对三部分内容,Request对象都提供了对应的API方法来获取对应的值:

2.2.4 获取请求参数的通用方式

对于请求参数的获取,常用的有以下两种

  • GET方式

String getQueryString()

  • POST方式

BufferedReader gerReader()

基于上述理论,request对象为我们提供了如下方法:

  • 获取所有参数Map集合

Map getParameterMap()

  • 根据名称获取参数值(数组)

String[] getParameterValues(String name)

  • 根据名称获取参数值(单个值)

String getParameter(String name)

通过案例来把上述的三个方法进行实例演示:

1.修改req.html页面,添加爱好选项,爱好可以同时选多个

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="/request_demo/req2" method="get">
    <input type="text" name="username"><br>
    <input type="password" name="password"><br>
    <input type="checkbox" name="hobby" value="1">游泳
    <input type="checkbox" name="hobby" value="2">爬山<br>
    <input type="submit">

</form>

</body>
</html>

2.在Servlet代码中获取页面传递GET请求的参数值

  • 获取GET方式的所有请求参数
@WebServlet("/req2")
public class RequestDemo2 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //GET请求逻辑
        System.out.println("get...");

        //1. 获取所有参数的map
        Map<String, String[]> map = req.getParameterMap();
        for (String key : map.keySet()) {
            //username:zhangsan
            System.out.print(key + ":");

            //获取值
            String[] values = map.get(key);
            for (String value : values) {
                System.out.print(value + " ");
            }

            System.out.println();
        }

  • 获取GET请求参数中的爱好,结果是数组值
@WebServlet("/req2")
public class RequestDemo2 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //GET请求逻辑
        //2.根据key获取参数值,数组
        String[] hobbies = req.getParameterValues("hobby");
        for (String hobby : hobbies) {
            System.out.println(hobby);
        }
    }

  •  获取GET请求参数中的用户名和密码,结果是单个值
@WebServlet("/req2")
public class RequestDemo2 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //GET请求逻辑
        //3.根据key获取单个参数值
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        System.out.println(username);
        System.out.println(password);
    }

小结

  • req.getParameter()方法使用的频率会比较高
  • 再写代码的时候,就只需要按照如下格式来编写
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
        //采用request提供的获取请求参数的通用方式来获取请求参数
        //编写其他的业务代码...
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
        this.doGet(req,resp);
    }
}

完整代码

package com.learn.web;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

/**
 * @author 咕咕猫
 * @version 1.0
 */
@WebServlet("/req2")
public class RequestDemo2 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //GET请求逻辑
        System.out.println("get...");

        //1. 获取所有参数的map
        Map<String, String[]> map = req.getParameterMap();
        for (String key : map.keySet()) {
            //username:zhangsan
            System.out.print(key + ":");

            //获取值
            String[] values = map.get(key);
            for (String value : values) {
                System.out.print(value + " ");
            }

            System.out.println();
        }

        System.out.println("----------------------");

        //2.根据key获取参数值,数组
        String[] hobbies = req.getParameterValues("hobby");
        for (String hobby : hobbies) {
            System.out.println(hobby);
        }

        //3.根据key获取单个参数值
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        System.out.println(username);
        System.out.println(password);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //POST请求逻辑
        this.doGet(req,resp);

        /*System.out.println("post...");
        //1. 获取所有参数的map
        Map<String, String[]> map = req.getParameterMap();
        for (String key : map.keySet()) {
            //username:zhangsan
            System.out.print(key + ":");

            //获取值
            String[] values = map.get(key);
            for (String value : values) {
                System.out.print(value + " ");
            }

            System.out.println();
        }

        System.out.println("----------------------");

        //2.根据key获取参数值,数组
        String[] hobbies = req.getParameterValues("hobby");
        for (String hobby : hobbies) {
            System.out.println(hobby);
        }

        //3.根据key获取单个参数值
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        System.out.println(username);
        System.out.println(password);*/

    }
}

2.3 IDEA快速创建Servlet 

2.4 请求参数中文乱码问题

2.4.1 POST请求解决方案

  • 分析出现中文乱码的原因:

        ○POST的请求参数是通过request的getReader()来获取流中的数据

        ○TOMCAT在获取流的时候采用的编码是ISO-8859-1

        ○ISO-8859-1编码是不支持中文的,所以会出现乱码

  • 解决方案:

        ○页面设置的编码格式为UTF-8

        ○把TOMCAT在获取流数据之前的编码设置为UTF-8

        ○通过request.setCharacterEncoding("UTF-8")设置编码,UTF-8也可以写成小写

@WebServlet("/req3")
public class RequestDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 解决乱码:POST,getReader()
        request.setCharacterEncoding("UTF-8");//设置字符输入流的编码

        //2. 获取username
        String username = request.getParameter("username");
        System.out.println(username);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

2.4.2 GET请求解决方案

package com.itheima.web.request;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

public class URLDemo {

    public static void main(String[] args) throws UnsupportedEncodingException {
        String username = "张三";

        //1. URL编码
        String encode = URLEncoder.encode(username, "utf-8");
        System.out.println(encode);

        //2. URL解码
        //String decode = URLDecoder.decode(encode, "utf-8");
        String decode = URLDecoder.decode(encode, "ISO-8859-1");

        System.out.println(decode);

        //3. 转换为字节数据,编码
        byte[] bytes = decode.getBytes("ISO-8859-1");
      /*  for (byte b : bytes) {
            System.out.print(b + " ");
        }*/

        //4. 将字节数组转为字符串,解码
        String s = new String(bytes, "utf-8");

        System.out.println(s);


    }
}

GET请求中文参数出现乱码的原因

1. 浏览器把中文参数按照UTF-8进行URL解码

2. Tomcat对获取到的内容进行了ISO-8859-1的URL解码

3. 在控制台就会出现类上å¼ ä¸ 的乱码

package com.learn.web; /**
 * @author 咕咕猫
 * @version 1.0
 * 中文乱码解决方案
 */

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

@WebServlet("/req3")
public class RequestDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 解决乱码:POST,getReader()
//        request.setCharacterEncoding("UTF-8");//设置字符输入流的编码

        //2. 获取username
        String username = request.getParameter("username");
        System.out.println("解决乱码前:"+username);


        //3. GET,获取参数的方式:getQueryString
        // 乱码原因:tomcat进行URL解码,默认的字符集ISO-8859-1
//        //3.1 先对乱码数据进行编码:转为字节数组
//        byte[] bytes = username.getBytes(StandardCharsets.ISO_8859_1);
//        //3.2 字节数组解码
//        username = new String(bytes, StandardCharsets.UTF_8);

        username = new String(username.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
        System.out.println("解决乱码后:"+username);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

小结

1. 中文乱码解决方案

  • POST请求和GET请求的参数中如果有中文,后台接受数据就会出现中文乱码问题,GET请求在Tomcat8.0以后的版本就不会出现了
  • POST请求解决的方法是:设置输入流的编码

request.setCharacterEncoding("UTF-8");

注意:设置的字符集要和页面保持一致

  • 通用方式(GET/POST):需要先解码,再编码

new String(username.getBytes("ISO-8859-1"),"UTF-8");

2. URL编码实现方式

  • 编码:

URLEncoder.encode(str,"UTF-8");

  • 解码:

URLDecoder.decode(s,"ISO-8859-1");

2.5 Request请求转发

  • 请求转发(forward):一种在服务器内部的资源跳转方式

  •  请求转发的实现方式:

req.getRequestDispatcher("资源B路径").forward(request,response);

  •  请求转发资源间共享数据:使用Request对象

此处主要解决的问题是把请求从/req5转发到/req6的时候,如何传递数据给/req6。

需要使用request对象提供的三个方法:

存储数据到request域[范围,数据是存储在request对象]中

void setAttribute(String name,Object o);

根据key获取值

Object getAttribute(String name);

根据key删除该键值对

void removeAttribute(String name);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb—Request请求对象 的相关文章

  • JS 库请求的常见 HTTP 标头是什么?

    使用JavaScript 框架原型 http www prototypejs org 我注意到 Ajax 请求通过一个名为X Requested With 其他 JavaScript 库 如 jQuery dojo 和 YUI 是否会向其
  • 最适合“正在进行的作业”的 HTTP 状态代码

    向客户端提供的最合适的 HTTP 状态代码是什么 表示 您的请求很好 但仍在进行中 请稍后在完全相同的位置回来查看 例如 假设客户端提交初始请求以启动繁重的查询 服务器立即返回一个 URL 客户端可以定期轮询该 URL 以获取结果 如果客户
  • 为什么我的 Github 托管网站响应 HTTP 302 而不是 200?

    我拥有该域名penkov id au http penkov id au 我主持一个blog http michael penkov id au blog 2014 01 02 reinventing the wheel html usin
  • 如何将文件透明地传输到浏览器?

    受控环境 IE8 IIS 7 ColdFusion 当从 IE 发出指向媒体文件 例如 mp3 mpeg 等 的 GET 请求时 浏览器将启动关联的应用程序 Window Media Player 我猜测 IIS 提供文件的方式允许应用程序
  • 如何在java中以编程方式访问网页

    有一个网页 我想从中检索某个字符串 为此 我需要登录 单击一些按钮 填充文本框 单击另一个按钮 然后就会出现字符串 我怎样才能编写一个java程序来自动执行此操作 是否有任何有用的库用于此目的 Thanks Try HtmlUnit htt
  • Zoopla 沙箱出现 cURL http 标头错误

    我正在为房地产经纪人开发代码 以通过他们的数据源将房产上传到 Zoopla 我在将所需的配置文件添加到所需的 http 标头时遇到问题 文档中唯一的示例是来自 Linux 的测试 echo branch reference test cur
  • Go客户端程序生成大量TIME_WAIT状态的socket

    我有一个 Go 程序 它从多个 goroutine 生成大量 HTTP 请求 运行一段时间后 程序报错 connect cannot allocaterequestedaddress 当检查时netstat 我得到大量 28229 个连接T
  • 在express js中禁用http方法

    我正在我的 Express 应用程序上进行 nessus 测试 这是我得到的 基于每种方法的测试 HTTP 方法 ACL CHECKOUT COPY DELETE GET HEAD LOCK MERGE MKACTIVITY MKCOL 移
  • 为什么我在将数据上传到数据库时不断看到“正在重置断开的连接”?

    我正在通过 REST API 将数亿个项目从 Heroku 上的云服务器上传到 AWS EC2 中的数据库 我正在使用 Python 并且经常在日志中看到以下 INFO 日志消息 requests packages urllib3 conn
  • HTTP请求的内容长度>正文大小

    我正在管理一个网站 该网站过去几个月在使用 MVC 3 0 ASP net 构建的 IIS 7 5 上运行良好 当我们的 AJAX POST 请求 通过 jQuery 触发 因发布的 JSON 被截断而失败时 我们时不时地会遇到一个问题 到
  • 为 REST API 编写单元测试的最佳方法是什么?

    在为 API 包装器编写单元测试时 我应该对 REST API 端点进行真正的调用 还是应该使用 mocl 响应来模拟成功和错误的调用 单元测试意味着只测试你的unit API 包装器 仅此而已 因此 不幸的是 您应该模拟整个 API 另一
  • Node.js:在检索 http 请求正文之前断开 http 请求连接

    我正在用 Node js 编写一个 http 服务器 我有一个客户端通过 HTTP POST 多部分 数据 将大文件上传到该服务器 我想接受唯一使用有效文件名上传文件的连接 我有一些条件 在服务器检索数据之前应断开无效文件名连接 我不知道如
  • 哪些具体用例需要通过 WebSockets 和长轮询使用 BOSH? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 防止表单重新提交

    第一页包含一个 HTML 表单 第二页 处理提交的数据的代码 第一页中的表格已提交 浏览器被重定向到第二页 第二页处理提交的数据 此时 如果刷新第二页 则会弹出 确认表单重新提交 警报 这可以预防吗 人们过去常采取两种方法 方法一 使用 A
  • Rest 和 Http 中“无状态”的含义

    当我阅读有关 REST 是什么的文档时 他们总是说 REST api 应该是无状态的 在这里 我感觉有点尴尬 因为普通的 HTTP 也是无状态的 既然REST可以说是一种使用HTTP协议的特殊架构 那么说REST应该是无状态的似乎是多余的
  • eBay API 调用不适用于 UPC/EAN

    eBay 的 API findItemsByProduct 操作适用于 UPC 和 EAN 但不幸的是它不起作用 例如 下面的 HTTP GET 请求会抛出 无效的产品 ID 值 错误41 Note 请将 SECURITY APPNAME
  • 如何防止 Firefox 缓存

    我尝试了很多可能的解决方案 但无法解决问题 这些不起作用 有人可以帮忙吗 我正在使用jsp servlet application 是websphere Portal 6 1 的一个portlet 切勿
  • Crystal lang如何从http获取二进制文件

    In Ruby require open uri download open http example com download pdf IO copy stream download my file pdf 如何在水晶中做同样的事情 我们
  • 对于较大的请求正文,Nginx proxy_cache_key $request_body 将被忽略

    我使用 nginx 作为反向代理 我希望它能够缓存 POST 请求 我的后端已正确配置为为 POST 请求返回适当的缓存控制标头 在 nginx 中我配置了 proxy cache methods POST proxy cache key
  • 如何用 C 语言通过 HTTP 协议发送图像?

    我是一名正在做网络服务器练习的学生 我需要一些帮助 我的网络服务器在文本页面上运行良好 但是每当浏览器发送一个 GET img jpg HTTP 1 1请求 我不知道如何处理 我听说 HTTP 协议是基于文本的 那么如何在 HTTP 响应中

随机推荐

  • seaborn导入数据集报错 <;urlopen error [Errno 11004] getaddrinfo failed> 数据集链接超时,获取地址失败错误

    seaborn导入数据集报错
  • uniapp打包成H5,为什么本地访问页面空白?

    1 点击菜单栏发行 点击选择网站 H5手机版 2 在网站域名这一栏填写 网站域名 例如www xxx com或者你的服务器的IP地址47 103 XX XX 这个地址是你将项目打包之后存放放静态文件的地址 我这里为了考虑到安全因素 将自己的
  • 免费资源网站大全

    网盘类 网盘类百搭 放第一个了 推荐 盘多多 http www panduoduo net 去转盘 http www quzhuanpan com Bdsola http www 3134 cc 西林街 http www xilinjie
  • Richard Stevens的几本书

    版权声明 转载时请以超链接形式标明文章原始出处和作者信息及本声明 http stevens0102 blogbus com logs 37223648 html 博客名取为 纪念Richard Stevens 居然没有写几篇与Stevens
  • TX 和RX 代表什么

    tx是发送 transport rx是接收 receive 光纤中是成对出现的 收发是1对 收发必须同时 只收不发 只发不收都是有问题的
  • pg_dump 逻辑备份

    pg dump逻辑备份 1 单独备份表 schema database 2 除了备份为SQL文本格式 也支持压缩格式或 TAR包格式 3 导出的文件在客户端本地 导出在SERVER端 pg dump dbname gt tmp dbname
  • 什么是Java注解,如何创建和使用注解?

    首先 我们来解释一下什么是Java注解 简单来说 Java注解就是给代码加上一些注释 但是这些注释不是给编译器看的 而是给Java虚拟机 JVM 看的 这些注解可以让我们在运行时获取一些信息 或者对代码进行一些特殊的处理 那么 我们如何创建
  • ajax传值 vue_vue2.0 axios post请求传参问题(ajax请求)

    最近需要做一个项目用vue 由于之前没接触过所以也想挑战下 我不会撘项目 果断选择网上现成搭好的项目 最后我们选择了vue element admin网上项目地址放这里 axios post请求问题 项目中用的ajax请求是 axios 废
  • Qt Creater快速定义函数的快捷键

    1 简介 在Qt creator中编写函数的时候 在头文件编写了函数 需要在相应的cpp文件中编写对应的函数定义实现 如果每次都需要手动的敲击全部的代码 这会非常的耗时耗力 显得很方便 这时候就需要巧妙的利用好Qt creator这款IDE
  • DOS 常用批处理命令

    一 call 功能 在批处理中调用别的批处理或者可运行程序 命令格式 CALL 驱动盘符 路径 文件名 参数 示例 call ex bat echo off call E RDA 8955 CSDTK4 CSDTKvars bat set
  • 苍蓝誓约服务器维护什么时候结束,《苍蓝誓约》2月13日09:00停服维护公告

    原标题 苍蓝誓约 2月13日09 00停服维护公告 尊敬的指挥官您好 我们计划将于2月13日09 00 2月13日11 00对作战海域进行停服维护 届时各位指挥官将无法进入游戏 停服时间会根据维护情况提前或顺延 维护结束后 各位指挥官将会收
  • win7 扩展双屏后 双屏同时显示任务栏

    扩展屏幕下都显示任务栏 第一步 Dual Monitor Taskbar 下载 下载链接 链接 http pan baidu com s 1pKxYUFL 密码 gu5c 第二步 安装完在扩展屏幕上便会出现任务栏 第三步 在扩展屏下任务栏中
  • 阅读有感——Verilog对数据进行四舍五入(round)与饱和(saturation)截位

    思考1 FPGA中只能定义定点数吗 首先 我没有搞清楚定点数与浮点数的定义 定点数就是小数位固定不变的数叫做定点数 也就是小数点是定在某个位置不变的数 结论 FPGA中的信号可以是定点型也可以是浮点型 这只是一种数据表示形式 各有优缺点 1
  • 【c++】vector的使用与实现

    目录 1 vector的介绍 2 vector的使用 2 1 vector 的构造 2 2 vector迭代器的使用 2 3 vector 空间方面的函数 2 4 vector 增删查改 2 5 vector 迭代器失效问题 3 vecto
  • Android开发—浅谈人脸检测的简易实现,成功定级腾讯T3-2

    findFaces 方法 Canvas类绘制人脸矩形区域 完整代码 最终效果图 结语 Android中的人脸检测 计算机视觉开发在近些年来越发火热 而关于人脸检测或识别等相应功能也成为了大家津津乐道的话题 在智能手机端领域中 人脸识别被广泛
  • Android混合使用service小技巧

    预备知识 Android四大组件之service 一 我想月薪过万的博客 CSDN博客https blog csdn net qq 41885673 article details 120816678 spm 1001 2014 3001
  • curl(文件传输工具)安装和基础使用

    cURL是一个利用URL语法在命令行下工作的文件传输工具 1997年首次发行 它支持文件上传和下载 所以是综合传输工具 但按传统 习惯称cURL为下载工具 cURL还包含了用于程序开发的libcurl ubuntu下的安装 安装curl 1
  • Android:线性布局介绍,线性布局weight属性,线性布局微调参数gravity,线性布局divider

    LinearLayout 线性布局 一 线性布局介绍 新建一个工程 然后我们默认的布局 是相对布局 相对布局的意思是我的控件可以在里面随意放置 那如果把这个RelativeLayout 改了呢 不用这相对布局 而是用线性布局 我们把代码都删
  • MySQL自治平台建设的内核原理及实践(下)

    本文整理自美团技术沙龙第75期的主题分享 美团数据库攻防演练建设实践 系超大规模数据库集群保稳系列 内含4个议题的PPT及视频 的第4篇文章 本文作者在演讲后根据同学们的反馈 补充了很多技术细节 跟演讲 视频 相比 内容更加丰富 文章分成上
  • JavaWeb—Request请求对象

    目录 一 概述 二 Request对象 2 1 Request继承体系 小结 2 2 Request获取请求数据 2 2 1 获取请求行数据 2 2 2 获取请求头数据 2 2 3 获取请求体数据 小结 2 2 4 获取请求参数的通用方式