req.getParameter()无法获取参数

问题:前端用Ajax的post方式想servlet传递参数,servlet的getParameter()方法无法获取参数。

前端代码:

$.ajax({
                    url: ‘/TestWeb/addBook‘,
                    type: ‘post‘,
                    data: JSON.stringify($(‘#addBookForm‘).serializeJSON()),//jQuery的json序列化函数
                    //data: $(‘#addBookForm‘).serialize(),
                    dataType: "json",//返回的数据类型
                    headers : {
                         ‘Content-Type‘ : ‘application/json;charset=utf-8‘
                    }
                    success: function () {
                        $(‘#addModelClose‘).click();
                        layer.msg(‘添加新书成功!‘);
                    }

});

想传入json数据,所以一开始 设置‘Content-Type‘ : ‘application/json;charset=utf-8‘  ,然后发现servlet那边req.Parameter()获取的都为null。百度相关信息后发现,HTML中的form表单有一个关键属性 enctype=application/x-www-form-urlencoded ,Servlet的API提供了对这种编码方式解码的支持,只需要调用ServletRequest 类中的getParameter()方法就可以得到表单中提交的数据。

然后百度知道jQuery的Ajax的post方法默认的ContentType就是这种,于是把之前的content-Type注释掉,重新运行,发现还是不行。然后我想可能是既然没有设置成json,servlet不识别json数据,于是把data改成普通的数据请求格式,即 id=123&cx=lklj 这种格式。

然后就成功在servlet用getParameter()获得数据。

附:

JSON.stringify($(‘#addBookForm‘).serializeJSON())可以直接把表单的内容格式化为json数据格式,但需要相对应的jquery插件

$(‘#addBookForm‘).serialize()可以直接把表单内容格式化为普通请求格式,像 id=123&cx=lklj

更改源码的js或者html后浏览器没反应,可以试着用ctrl+F5来更新。

原文地址:https://www.cnblogs.com/wangshen31/p/8434856.html

时间: 2024-11-05 14:50:54

req.getParameter()无法获取参数的相关文章

servlet获取参数时,request.getParameter("id")参数获取失败

servlet获取参数时,request.getParameter("id")参数获取失败,这里的参数是“index”里面href中的参数 要注意,取不到值,是不是要取的参数有没有提交 servlet: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String idStr = request

JSP基础知识?获取参数和过滤器(四)

JSP表单提交和参数获取 JSP表单提交的两种方式:post和get,通过这两种方式提交的参数到后台,获取参数的值主要由request来处理,获取值的方式有以下几种: getParameter(): 使用 request.getParameter() 方法来获取表单参数的值. getParameterValues(): 获得如checkbox类(名字相同,但值有多个)的数据. 接收数组变量 ,如checkbox类型 getParameterNames():该方法可以取得所有变量的名称,该方法返回

springMVC [email protected]注解(后台控制器获取参数)

在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取. 1.获取提交的参数: @RequestMapping("testRequestParam") public String filesUpload(@RequestParam String inputStr, HttpServletRequest request) { System.out.pri

Node.js中的express框架获取参数

express获取参数有三种方法: req.query  适合 http://localhost:3000/form?num=8888 req.body   适合http://localhost:3000/form,然后Post一个num为tinyphp req.params  适合获取form后的num:http://localhost:3000/form/num 一.GET app.js var express = require('express'); var app = express(

JSP userBean setProperty直接从request中获取参数

JSP userBean setProperty直接从request中获取参数: form表单Jsp: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page isELIgnored="true"%> <% String path = request.getContextPath(); String

springmvc后台控制层获取参数的方法

在SpringMVC后台控制层获取参数的方式主要有两种, 一种是request.getParameter("name"), 另外一种是用注解@RequestParam直接获取.这里主要讲这个注解 一.基本使用,获取提交的参数 后端代码: Java代码   @RequestMapping("testRequestParam") public String filesUpload(@RequestParam String inputStr, HttpServletReq

Struts2获取参数的几种方式

Struts2由于是一个贴心的框架,所以获取参数这种体力活,就无需再通过原生的request来getParameter了,有如下几种方式进行获取 1.Action中属性驱动,必须提供与form表单name相同的后台属性get/set,这种方式适合数据量比较少的form表单提交 2.大数据量的form表单,这时一般对应后台的一个实体类,所以这时还在每个action写属性驱动,那就会代码冗余,这时可以定义一个对象来属性来进行参数接收,如User对象,只是前台传参数的时候,需要先写对象名再点对象下的属

Node.js express获取参数有三种方法

Node.js express获取参数有三种方法 近本人在学习开发NodeJs,使用到express框架,对于网上的学习资料甚少,因此本人会经常在开发中做一些总结. express获取参数有三种方法:官网介绍如下 Checks route params (req.params), ex: /user/:id Checks query string params (req.query), ex: ?id=12 Checks urlencoded body params (req.body), ex

spring的控制器如何获取参数、传递参数 和跳转指定页面

传递参数 (1)addAttribute()方法来获取参数 示例 //addAttribute()方法 ===setAttribute() 2 model.addAttribute("name", name); 获取参数 (1)@RequestParam用于获取参数 示例 1 @RequestParam用于获取请求参数,相当于servlet的request.getParameter()方法 2 3 public String greeting(@RequestParam(name=&q