精华内容
下载资源
问答
  • gin请求参数处理
    千次阅读
    2021-02-01 03:56:32

    本章介绍Gin框架获取请求参数的方式

    1.获取Get 请求参数

    Get请求url例子:/path?id=1234&name=Manu&value=111

    获取Get请求参数的常用函数:

    func (c *Context) Query(key string) string

    func (c *Context) DefaultQuery(key, defaultValue string) string

    func (c *Context) GetQuery(key string) (string, bool)

    例子:

    func Handler(c *gin.Context) {

    //获取name参数, 通过Query获取的参数值是String类型。

    name := c.Query("name")

    //获取name参数, 跟Query函数的区别是,可以通过第二个参数设置默认值。

    name := c.DefaultQuery("name", "sockstack")

    //获取id参数, 通过GetQuery获取的参数值也是String类型,

    // 区别是GetQuery返回两个参数,第一个是参数值,第二个参数是参数是否存在的bool值,可以用来判断参数是否存在。

    id, ok := c.GetQuery("id")

    if !ok {

    // 参数不存在

    }

    }

    提示:GetQuery函数,判断参数是否存在的逻辑是,参数值为空,参数也算存在,只有没有提交参数,才算参数不存在。

    2.获取Post请求参数

    获取Post请求参数的常用函数:

    func (c *Context) PostForm(key string) string

    func (c *Context) DefaultPostForm(key, defaultValue string) string

    func (c *Context) GetPostForm(key string) (string, bool)

    例子:

    func Handler(c *gin.Context) {

    //获取name参数, 通过PostForm获取的参数值是String类型。

    name := c.PostForm("name")

    // 跟PostForm的区别是可以通过第二个参数设置参数默认值

    name := c.DefaultPostForm("name", "sockstack")

    //获取id参数, 通过GetPostForm获取的参数值也是String类型,

    // 区别是GetPostForm返回两个参数,第一个是参数值,第二个参数是参数是否存在的bool值,可以用来判断参数是否存在。

    id, ok := c.GetPostForm("id")

    if !ok {

    // 参数不存在

    }

    }

    3.获取URL路径参数

    获取URL路径参数,指的是获取 /user/:id 这类型路由绑定的参数,这个例子绑定了一个参数id。

    获取url路径参数常用函数:

    func (c *Context) Param(key string) string

    例子:

    r := gin.Default()

    r.GET("/user/:id", func(c *gin.Context) {

    // 获取url参数id

    id := c.Param("id")

    })

    4.将请求参数绑定到struct对象

    前面获取参数的方式都是一个个参数的读取,比较麻烦,Gin框架支持将请求参数自动绑定到一个struct对象,这种方式支持Get/Post请求,也支持http请求body内容为json/xml格式的参数。

    例子:

    下面例子是将请求参数绑定到User struct对象。

    // User 结构体定义

    type User struct {

    Name string `json:"name" form:"name"`

    Email string `json:"email" form:"email"`

    }

    通过定义struct字段的标签,定义请求参数和struct字段的关系。

    下面对User的Name字段的标签进行说明。

    struct标签说明:

    标签

    说明

    json:"name"

    数据格式为json格式,并且json字段名为name

    form:"name"

    表单参数名为name

    提示:你可以根据自己的需要选择支持的数据类型,例如需要支持json数据格式,可以这样定义字段标签: json:"name"

    下面看下控制器代码:

    r.POST("/user/:id", func(c *gin.Context) {

    // 初始化user struct

    u := User{}

    // 通过ShouldBind函数,将请求参数绑定到struct对象, 处理json请求代码是一样的。

    // 如果是post请求则根据Content-Type判断,接收的是json数据,还是普通的http请求参数

    if c.ShouldBind(&u) == nil {

    // 绑定成功, 打印请求参数

    log.Println(u.Name)

    log.Println(u.Email)

    }

    // http 请求返回一个字符串

    c.String(200, "Success")

    })

    ShouldBind有一系列函数,大致就是把前面的方式绑定到结构体的方式,如:ShouldBindUri()、ShouldBindQuery()等等,用法和ShouldBind类似,这里就不展开介绍了

    提示:如果你通过http请求body传递json格式的请求参数,并且通过post请求的方式提交参数,则需要将Content-Type设置为application/json, 如果是xml格式的数据,则设置为application/xml

    5.获取请求头信息

    获取请求头的常用函数:

    func (c *Context) GetHeader(key string) string

    例子:

    func Handler(c *gin.Context) {

    //获取请求头Host的值

    host := c.GetHeader("Host")

    //控制台输出host的值

    fmt.Println(host)

    }

    6.获取客户IP

    r := gin.Default()

    r.GET("/ip", func(c *gin.Context) {

    // 获取用户IP

    ip := c.ClientIP()

    })

    出处gin从入门到实践更多精彩文章,请关注我的博客SOCKSTACK,分享我的工作经验。

    发表评论电子邮件地址不会被公开。 必填项已用*标注

    评论

    姓名 *

    电子邮件 *

    站点

    在此浏览器中保存我的名字、电邮和网站。

    更多相关内容
  • Ajax请求参数

    千次阅读 2022-02-13 20:53:37
    Ajax请求参数GET请求参数的传递创建服务器通过表单访问服务器POST请求参数的传递 GET请求参数的传递 设置open()方法中的第1个参数为“get”,表示设置get请求方式。 xhr.open('get', '...

    GET请求参数的传递

    设置open()方法中的第1个参数为“get”,表示设置get请求方式。

    xhr.open('get', 'http://localhost:3000/demo.html?username=zhangsan &age=20');
    xhr.send();
    
    “?”后面的“username=zhangsan&age=20”表示GET请求参数,
    多个参数时需要使用“&”符号连接。
    

    创建服务器

    创建服务器将客户端请求的数据给发送出去。

    const express = require('express');
    const path = require('path');
    const app = express();
    app.all('*', function(req, res, next) {//处理跨域问题
    
        res.header("Access-Control-Allow-Origin", "*");
    
        res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    
        res.header("Access-Control-Allow-Headers", "X-Requested-With");
    
        res.header('Access-Control-Allow-Headers',['mytoken','Content-Type'])
    
        next();
    
    });
    app.use(express.static(path.join(__dirname, 'public')));
    // 定义GET路由
    app.get('/get', (req, res) => {
        res.send(req.query);
    });
    app.listen(3000);
    console.log('服务器启动成功');
    

    通过表单访问服务器

    创建一个网页,然后通过一个表单来提交数据,再将服务器发送来的数据接收并在控制台打印出来。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <form action="#" method="" style="width: 245px;">
            用户名:<input type="text" id="username" style="float: right;" /><br><br>
            年龄:<input type="text" id="age" style="float:right;" /><br><br>
            <input type="button" value="提交" id="btn" /><br><br>
        </form>
        <script>
            // 获取姓名文本框
            var username = document.getElementById('username');
            // 获取年龄文本框
            var age = document.getElementById('age');
            // 获取按钮元素
            var btn = document.getElementById('btn');
            // 为按钮添加单击事件
            btn.onclick = function () {
                // 获取用户在文本框中输入的值
                var nameValue = username.value;
                var ageValue = age.value;
                // 为按钮添加单击事件
                btn.onclick = function () {
                    var xhr = new XMLHttpRequest();
                    // 拼接请求参数
                    var params = 'username=' + nameValue + '&age=' + ageValue;
                    xhr.open('get', 'http://localhost:3000/get?' + params);
                    xhr.onload = function () { console.log(JSON.parse(xhr.responseText)); };
                    xhr.send();
                };
    
            };
    
        </script>
    
    </body>
    
    </html>
    

    结果如下
    在这里插入图片描述

    POST请求参数的传递

    使用第三方模块body-parser来处理POST请求参数
    在server目录,下载body-parser模块,执行命令如下。

    npm install body-parser@1.18.3 --save
    

    请求消息是在HTTP请求和响应的过程中传递的数据块。
    在这里插入图片描述Ajax对象中的setRequestHeader()方法用来设置请求消息中请求头信息。
    基本语法格式:

    xhr.setRequestHeader('Content-Type', '请求参数格式'); 
    xhr.send(请求参数);
    

    Content-Type是属性名称;第2个参数是请求参数的格式。
    实例:

    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    

    application/x-www-form-urlencoded请求参数的格式是用“&”符号连接多个“参数名称等于参数值”形式的数据。
    如“name=zhangsan&age=20&sex=nan”。

    xhr.setRequestHeader('Content-Type', 'application/json');
    

    application/json请求参数的格式是JSON数据。
    如“{name: ‘张三’, age: ‘20’, sex: ‘男’}”,如果有多个参数时需要使用“,”符号连接。

    application/x-www-form-urlencoded参数的接收与发送

    创建服务器

    const express = require('express');
    const path = require('path');
    const bodyParser = require('body-parser');
    const app = express();
    app.all('*', function (req, res, next) {//处理跨域问题
    
        res.header("Access-Control-Allow-Origin", "*");
    
        res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    
        res.header("Access-Control-Allow-Headers", "X-Requested-With");
    
        res.header('Access-Control-Allow-Headers', ['mytoken', 'Content-Type'])
    
        next();
    
    });
    app.use(express.static(path.join(__dirname, 'public')));
    app.use(bodyParser.urlencoded({ extended: false }));
    
    // 定义POST路由
    app.post('/post', (req, res) => {
        res.send(req.body);
    });
    app.listen(3000);
    console.log('服务器启动成功');
    
    

    通过表单访问服务器

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <form action="#" method="" style="width: 245px;">
            用户名:<input type="text" id="username" style="float: right;" /><br><br>
            年龄:<input type="text" id="age" style="float:right;" /><br><br>
            <input type="button" value="提交" id="btn" /><br><br>
        </form>
        <script>
            // 为按钮添加单击事件
            btn.onclick = function () {
                // 获取用户在文本框中输入的值
                var nameValue = username.value;
                var ageValue = age.value;
                // 拼接请求参数
                var params = 'username=' + nameValue + '&age=' + ageValue;
                var xhr = new XMLHttpRequest();
                xhr.open('post', 'http://localhost:3000/post');
                // 设置请求参数格式的类型
                xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                // 获取服务器端响应的数据
                xhr.onload = function () {
                    console.log(JSON.parse(xhr.responseText));
                };
                // 发送请求时,传入请求参数
                xhr.send(params);
            };
        </script>
    
    </body>
    
    </html>
    

    在这里插入图片描述

    JSON格式数据的发送与接收

    创建服务器

    创建服务器定义post路由,接收JSON格式数据,将客户端的数据发送出去。

    const express = require('express');
    const path = require('path');
    const bodyParser = require('body-parser');
    const app = express();
    app.all('*', function (req, res, next) {//处理跨域问题
    
        res.header("Access-Control-Allow-Origin", "*");
    
        res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    
        res.header("Access-Control-Allow-Headers", "X-Requested-With");
    
        res.header('Access-Control-Allow-Headers', ['mytoken', 'Content-Type'])
    
        next();
    
    });
    app.use(express.static(path.join(__dirname, 'public')));
    // app.use(bodyParser.urlencoded({ extended: false }));
    app.use(bodyParser.json());
    
    // 定义POST路由
    app.post('/post', (req, res) => {
        res.send(req.body);
    });
    app.listen(3000);
    console.log('服务器启动成功');
    

    通过表单访问服务器

    发送JSON格式数据

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <form action="#" method="" style="width: 245px;">
            用户名:<input type="text" id="username" style="float: right;" /><br><br>
            年龄:<input type="text" id="age" style="float:right;" /><br><br>
            <input type="button" value="提交" id="btn" /><br><br>
        </form>
        <script>
            // 获取姓名文本框
            var username = document.getElementById('username');
            // 获取年龄文本框
            var age = document.getElementById('age');
            // 获取按钮元素
            var btn = document.getElementById('btn');
            // 为按钮添加单击事件
            btn.onclick = function () {
                var xhr = new XMLHttpRequest();
                // 获取用户在文本框中输入的值
                var nameValue = username.value;
                var ageValue = age.value;
                // 定义params对象
                var params = {};
                params['username'] = nameValue;
                params['age'] = ageValue;
                xhr.open('post', 'http://localhost:3000/post');
                // 设置请求参数格式的类型
                xhr.setRequestHeader('Content-Type', 'application/json');
                // 获取服务器端响应的数据
                xhr.onload = function () {
                    console.log(JSON.parse(xhr.responseText));
                };
                // 发送请求时,传入请求参数
                xhr.send(JSON.stringify(params));
            };
    
        </script>
    
    </body>
    
    </html>
    

    在这里插入图片描述

    展开全文
  • Java request获取请求参数

    千次阅读 2021-06-13 16:22:56
    文章目录获取请求参数1. 获取请求参数getParameter()方法的示例代码getParameterValues()方法的示例代码getParameterNames()方法的示例代码总结:2. 封装请求参数到实体类中第一种:最简单直接的封装方式第二种:...

    获取请求参数

    HttpServletRequest对象获取请求参数的常用方法,以及把获取到的请求参数封装到实体类中的方式。首先,我们先来创建一个Servlet对象

    /**
     * 封装请求正文到javabean(数据模型)
     */
    public class RequestDemo3 extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            /*
             * 把下面
             *		1)获取请求参数
             *		2)封装请求参数到实体类中
             * 中定义的test1到test8逐个添加到此处来运行即可。
             */
        }
     
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    }
    

    接下来,我们在来准备一个表单页面:

    <html>
    <head>
    	<title>login to request demo 3</title>
    </head>
    <body>
    <form action="/day10_1122_requestresponse/RequestDemo3" method="post">
    	用户名:<input type="text" name="username" /><br/>
    	密码:<input type="password" name="password" /><br/>
    	性别:<input type="radio" name="gender" value="1" checked><input type="radio" name="gender" value="0"><br/>
    	<input type="submit" value="注册" />
    </form>
    </body>
    </html>
    

    现在,我们开始分析HttpServletRequest对象用于获取请求参数的方法:

    1. 获取请求参数

    getParameter()方法的示例代码

    /**
     * 获取请求正文,一个名称对应一个值。								没有使用确认密码
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    private void test1(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //1.获取请求正文
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String gender = request.getParameter("gender");
        System.out.println(username+","+password+","+gender);
    }
    

    getParameterValues()方法的示例代码

    /**
     * 获取请求正文,一个名称可能对应多个值									使用了确认密码
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
    */
    private void test2(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //1.获取请求正文
        String username = request.getParameter("username");
        String[] password = request.getParameterValues("password");//当表单中有多个名称是一样时,得到是一个字符串数组
        String gender = request.getParameter("gender");
        System.out.println(username+","+Arrays.toString(password)+","+gender);
    }
    
    <html>
    <head>
    	<title>login to request demo 4</title>
    </head>
    <body>
    <form action="/day10_1122_requestresponse/RequestDemo4" method="post" enctype="multipart/form-data">
    	用户名:<input type="text" name="username" /><br/>
    	密码:<input type="password" name="password" /><br/>
    	确认密码:<input type="password" name="password" /><br/>
    	性别:<input type="radio" name="gender" value="1" checked><input type="radio" name="gender" value="0"><br/>
    	<input type="submit" value="注册" />
    </form>
    </body>
    </html>
    

    getParameterNames()方法的示例代码

    /**
     * 获取请求正文,一个名称一个值。但是先要获取正文名称的枚举(key的枚举)				没有使用确认密码
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
    */
    private void test3(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //1.获取请求正文名称的枚举
        Enumeration<String> names = request.getParameterNames();
        //2.遍历正文名称的枚举
        while(names.hasMoreElements()){
            String name = names.nextElement();
            String value = request.getParameter(name);
            System.out.println(name+":"+value);
        }
    }
    

    总结:

    ​ 以上三个方法可以获取表单提交过来的请求参数。

    ​ 参数的名称是一个字符串,参数的值可能是一个字符串,也可能是一个字符串数组。

    2. 封装请求参数到实体类中

    我们通过上面的方法可以获取到请求参数,但是如果参数过多,在进行传递时,方法的形参定义将会变得非常难看。此时我们应该用一个对象来描述这些参数,它就是实体类。这种类的定义,从基础阶段我们就开始使用了。在基础阶段,我们做过一个学生管理系统,用到了一个Student的类,它就是用于描述一个学生的实体类。

    我们现在要做的就是把表单中提交过来的数据填充到实体类中。

    第一种:最简单直接的封装方式

    /**
     * 封装请求正文到User对象中									没有使用确认密码
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    private void test4(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //1.获取请求正文
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String gender = request.getParameter("gender");
        //2.创建一个User对象
        User user = new User();
        System.out.println("封装前:"+user.toString());
        //3.把请求正文封装到user对象中
        user.setUsername(username);
        user.setPassword(password);
        user.setGender(gender);
        System.out.println("封装后:"+user.toString());
    }
    

    第二种:使用反射方式封装

    此种封装的使用要求是,表单<input>标签的name属性取值,必须和实体类中定义的属性名称一致。

    /**
     * 封装请求正文到javabean中										没有使用确认密码
     * 使用反射+内省实现数据模型的封装
     * 内省:是sun公司推出的一套简化反射操作的规范。把javabean中的元素都封装成一个属性描述器。
     * 	        属性描述器中会有字段信息,get和set方法(取值或存值)
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
    */
    private void test5(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //1.获取请求正文名称的枚举
        Enumeration<String> names = request.getParameterNames();
        User user = new User();
        System.out.println("封装前:"+user.toString());
        //2.遍历正文名称的枚举
        while(names.hasMoreElements()){
            String name = names.nextElement();
            String value = request.getParameter(name);
            try{
                //1.拿到User对象中的属性描述器。是谁的属性描述器:是由构造函数的第一个参数决定的。第二个参数是指定javabean的字节码
                PropertyDescriptor pd = new PropertyDescriptor(name, User.class);//参数指的就是拿哪个类的哪个属性的描述器
                //2.设置javabean属性的值
                Method method = pd.getWriteMethod();
                //3.执行方法
                method.invoke(user, value);//第一个参数是指的给哪个对象,第二个参数指的是赋什么值
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        System.out.println("封装后:"+user.toString());
    } 
    

    第三种:使用反射封装,同时请求参数的值是一个数组

    此种方式其实就是针对请求参数中包含name属性相同的参数,例如:密码和确认密码,还有爱好。

    /**
     * 获取请求正文的关系映射Map<String,String[]>				使用确认密码
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    private void test6(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //1.获取请求正文的映射关系
        Map<String,String[]> map = request.getParameterMap();
        //2.遍历集合
        for(Map.Entry<String,String[]> me : map.entrySet()){
            String name = me.getKey();
            String[] value = me.getValue();
            System.out.println(name+":"+Arrays.toString(value));
        }
    } 
    

    当我们把请求参数获取出来之后,就要考虑如何针对数组的反射了,具体代码如下:

     /**
     * 封装请求正文到javabean。使用的是反射+内省						使用了确认密码
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    private void test7(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //1.获取请求正文的映射关系
        Map<String,String[]> map = request.getParameterMap();
        Users user = new Users();
        System.out.println("封装前:"+user.toString());
        //2.遍历集合
        for(Map.Entry<String,String[]> me : map.entrySet()){
            String name = me.getKey();
            String[] value = me.getValue();
            try{
                //1.拿到User对象中的属性描述器。是谁的属性描述器:是由构造函数的第一个参数决定的。第二个参数是指定javabean的字节码
                PropertyDescriptor pd = new PropertyDescriptor(name, Users.class);//参数指的就是拿哪个类的哪个属性的描述器
                //2.设置javabean属性的值
                Method method = pd.getWriteMethod();
                //3.执行方法
                //判断参数到底是几个值
                if(value.length > 1){//最少有2个元素
                    method.invoke(user, (Object)value);//第一个参数是指的给哪个对象,第二个参数指的是赋什么值
                }else{
                    method.invoke(user, value);//第一个参数是指的给哪个对象,第二个参数指的是赋什么值
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        System.out.println("封装后:"+user.toString());
    }
    

    当我们写完此种封装方式之后,同学们可以发现,我们绝大多数封装都可以使用这段代码来实现。并且,无论是谁来写这段通用的封装代码,其代码内容都是大同小异的。**那么,我们就可以得出一个很有趣的结论:一般遇到这种情况时,肯定有人帮我们写好了,我们只需要用就行了。**我们后面还会遇到类似这样的情况。

    此时,帮我们写好这段封装代码的是apache软件基金会,我们前面学习的tomcat也是它提供的。它里面有一个开源工具包集合commons,里面有很多开源工具类,今天我们就来讲解第一个:commons-beanutils

    第四种:使用apache的commons-beanutils实现封装

    实现代码:

    /**
     * 终极方法:使用beanutils实现请求正文封装到javabean中				使用了确认密码
     * 要想使用beanutils,需要先导包
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    private void test8(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        Users user = new Users();
        System.out.println("封装前:"+user.toString());
        try{
            BeanUtils.populate(user, request.getParameterMap());//就这一句话
        }catch(Exception e){
            e.printStackTrace();
        }
        System.out.println("封装后:"+user.toString());
    }
    
    展开全文
  • Servlet获取请求参数

    千次阅读 2022-03-29 17:17:43
    Servlet获取请求参数 index.jsp <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <title>Title</title> </head...

    Servlet获取请求参数

    Servlet解决post中文乱码,设置请求字符集编码必须在获取请求参数之前,否则无法生效。


    index.jsp

    <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <!DOCTYPE html>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <form action="http://localhost:8080/Test/hello" method="post">
        姓名:<input type="text" name="username"><br/>
        密码:<input type="password" name="password"><br/>
        爱好:<input type="checkbox" name="hobby" value="js">js
        <input type="checkbox" name="hobby" value="java">java
        <input type="checkbox" name="hobby" value="c">c<br/>
        <button type="submit">提交</button>
    </form>
    </body>
    </html>
    

    HelloServlet.java

    package com.example.Test;
    
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.IOException;
    import java.lang.reflect.Array;
    import java.util.Arrays;
    
    public class HelloServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //设置请求字符集为utf-8解决post请求中文乱码
            request.setCharacterEncoding("utf-8");
            String name = request.getParameter("username");
            String password = request.getParameter("password");
            String[] hobbies = request.getParameterValues("hobby");
    
            System.out.println("name:"+name);
            System.out.println("password:"+password);
            //getParameterValues获取多个值
            System.out.println("hobbies:"+ Arrays.asList(hobbies));
    
        }
    }
    
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • php全面获取请求参数

    千次阅读 2021-03-24 12:26:06
    3.$_SERVER['argc']#包含传递给程序的命令行参数的个数(如果运行在命令行模式)。4.$_SERVER['GATEWAY_INTERFACE']#服务器使用的CGI规范的版本。例如,“CGI/1.1”。5.$_SERVER['SERVER_NAME']#当前运行脚本所在...
  • 一学就会:springMVC获取请求参数有哪几种方式?

    千次阅读 多人点赞 2022-04-03 21:05:44
    使用这么久的springMVC,获取请求参数有几种方式呢?快来了解了解吧!总有一种方法适合你的!
  • SpringMVC源码分析_3 请求参数解析、校验和绑定原理 3 SpringMVC请求参数解析、校验和绑定原理 ...
  • SpringBoot - 获取Get请求参数详解

    千次阅读 多人点赞 2020-12-27 11:25:39
    (1)、假设请求地址是如下这种RESTful风格,Springboot 这个参数值直接放在路径里面 http://localhost:8080/hello/Springboot (2)、Controller 定义,如下: @RestController public class HelloCont...
  • 修改request请求参数

    千次阅读 2021-02-13 00:28:31
    本质上来讲,request请求当中的参数是无法更改的,也不能添加或者删除;但在后台程序中,一般对...所以我们要是能重写这些方法,就从侧面改变了request的请求参数。恰好,servlet就提供了一个HttpServletRequestWr...
  • 发送Get请求,但是请求参数要放在请求body内,所以经过多方查证后整理出来以下代码。 2.POM依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>...
  • Request获取请求参数的通用方法

    千次阅读 2020-07-07 15:03:31
    从这里Request获取请求数据实例我们可以了解到,get请求和post请求获取请求参数有着不一样的方法,这对我们的封装很不方便,下面就介绍一种获取请求参数的通用方法 String getParameter(String name):根据参数...
  • HttpServletRequestHttpServletRequest获取GET请求参数5种方法HttpServletRequest获取HTTP GET请求过来的字符串有如下5种方式:request.getQueryString()获取到完整的GET请求字符串(userName=51gjie&password=.....
  • HTTP PUT请求该如何传输请求参数呢?

    万次阅读 2020-12-21 01:58:58
    PUT请求该如何传输请求参数呢?有如下的接口@RequestMapping(value = "testPut", method = RequestMethod.PUT)public Result testPut(@RequestParam String foo, @RequestParam String bar) {System.out.println(foo...
  • springboot修改请求参数

    千次阅读 2020-06-30 23:42:36
    在开发中有时会遇到需要统一修改请求参数的需求,比如前端对某个请求头进行了base64加密,后端需要统一进行解密。 这个时候只需要定义一个RequestParameterWrapper,再写一个Filter即可。 import javax.servlet....
  • 一、如果接口请求地址是 http://localhost/get/{id} 示例: http://localhost/get/123 123是变量id的值 需要让nginx中的lua脚本获取到值的话,配置 nginx配置: location /get { set $id $1; #定义一个变量,变量...
  • 一、请求参数传递的方式 1、GET 请求方式 GET 请求方式参数放置在请求地址中进行传递。 xhr.open('get', 'http://www.example.com?name=zhangsan&age=20'); 传递GET 请求参数代码示例: <!DOCTYPE html> ...
  • springboot通过拦截器获取参数有两种方式,一种通过request.getParameter...@PathVariable注解是REST风格url获取参数的方式,只能用在GET请求类型,通过getParameter获取参数 @RequestParam注解支持GET和POST/PUT/DELE.
  • Controller接收请求参数的常见方式 通过实体bean接收请求参数 通过处理方法的形参接收请求参数 通过HttpServletRequest接收请求参数 通过@PathVariable接收URL中的请求参数 通过@RequestParam接收请求参数 ...
  • Gin框架 获取请求参数

    千次阅读 2020-09-01 15:19:44
    获取GET请求参数 func main() { router := gin.Default() // Query string parameters are parsed using the existing underlying request object. // The request responds to a url matching: /welcome?...
  • Request获取请求参数通用方式

    千次阅读 2019-08-17 09:40:06
    Request获取请求参数通用方式指的是不论get还是post请求方式都可以使用下列方式来获取请求参数,这样的方法一共有四种,下面来为大家一一介绍。 1.String getParameter(String name):根据参数名称获取参数值 为了...
  • Android请求参数,JSON格式的需要注意

    千次阅读 2022-03-16 09:38:48
    请求传递参数,如果遇到是JSON格式的参数,需要用 URLEncoder.encode(array.toString(), "UTF-8")。包装一下,然后后台再解码。
  • SpringBoot AOP拦截、修改请求参数

    千次阅读 2020-09-06 19:49:24
    } 修改请求参数 可以利用@Around来修改请求参数,@Around功能非常强大,作用如下: 可以在目标方法之前增加逻辑,也可以在执行目标方法之后增加逻辑. 可以决定目标方法在什么时候执行,如何执行,也可以阻止目标...
  • 本文目录Controller注解Controller 注解用法Controller 接收请求参数通过形参接收请求参数通过实体Bean 接收参数通过HttpServletRequst接收请求参数通过RequestParam注解接收请求参数PathVariable注解接收请求参数 ...
  • 通过filter过滤器对请求参数进行处理-完整

    万次阅读 热门讨论 2018-04-24 17:30:00
    遇见的问题:前台把参数通过报文或者使用表单、ajax提交到后台,如果我们的请求参数是加密的,那么我们在controller里面的每一个方法里都需要进行解密处理。如果方法太多,那就太麻烦了。 解决方案:在请求参数到达...
  • 在一些针对数据比较敏感的项目中会对客户端与服务端之间交互的数据进行加密处理。在gateway网关服务中处理此项业务需要如何实现...利用这一特性,我们可以在处理业务代码之前添加对参数的统一解密处理,到达下游服务中.
  • 获取单个请求参数 采用 request.getParameter(标签名称) 方法 获取多个请求参数 采用 request.getParameterValues() 方法,多用于获取复合标签 checkbox 中,返回 String[ ] 数组类型。 获取所有请求参数名称 ...
  • swagger常用注解和获取请求参数注解

    千次阅读 2020-03-29 21:08:34
    swagger 注解 ... value="该参数没什么意义,在UI界面上也看到,所以不需要配置" @ApiOperation 用在请求的方法上,说明方法的用途、作用 value="说明方法的用途、作用" ...
  • tornado获取全部请求参数

    万次阅读 2021-06-09 16:05:04
    data = {} for key in self.request.arguments: data[key] = self.get_argument(key) tornado解析post获取所有参数 post_data = self.request.arguments post_data = {x: post_data.get(x)[0].decode("utf-8") for x...
  • 服务端经常需要我们做一些参数校验的工作,需要在本地先把请求参数封装起来再加密之类的,那么我们可以用拦截器来实现获取所有get或post参数,还可以添加一些公共参数,这样就不用在每个接口定义那去加了: ...
  • 和别的同事对接口的时候发现,他提供的post请求格式接口的参数是int[],就在想,参数应该怎么传递,我这边塞一个int[]或者List 是不是都可以?盲猜是可以的,因为http传递参数的时候都是json,接收的时候int[]和List...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,164,192
精华内容 865,676
关键字:

请求参数