关于SpringMvc的ajax请求的问题

利用springmvc接收前台ajax传过来的数据完成注册功能。

为了方便把,前台js的model和后台的user写成一致的功能。代码如下

前端:

var User = function() {

var id = null;

var name = null;

var password = null;

var sex = null;

var telephone = null;

var role = null;

var regist_time = null;

var email_address = null;

var active_code = null;

var status = null;

var checkCode = null;

this.setId = function(_id) {

id = _id;

};

this.getId = function() {

return id;

}

this.setName = function(_name) {

name = _name;

};

this.getName = function() {

return name;

}

this.setPassword = function(_password) {

password = _password;

};

this.getPassword = function() {

return password;

}

this.setSex = function(_sex) {

sex = _sex;

};

this.getSex = function() {

return sex;

}

this.setTelephone = function(_telephone) {

telephone = _telephone;

};

this.getTelephone = function() {

return telephone;

}

this.setRole = function(_role) {

role = _role;

};

this.getRole = function() {

return role;

}

this.setRegist_time = function(_regist_time) {

regist_time = _regist_time;

};

this.getRegist_time = function() {

return regist_time;

}

this.setEmail_address = function(_email_address) {

email_address = _email_address;

};

this.getEmail_address = function() {

return email_address;

}

this.setActive_code = function(_active_code) {

active_code = _active_code;

};

this.getActive_code = function() {

return active_code;

}

this.setStatus = function(_status) {

status = _status;

};

this.getStatus = function() {

return status;

}

this.setCheckCode = function(_checkCode) {

checkCode = _checkCode;

}

this.getCheckCode = function() {

return checkCode;

}

this.getUserObj = function() {

return{

"id" : id,

"name" : name,

"password" : password,

"sex" : sex,

"telephone" : telephone,

"role" : role,

"regist_time" : regist_time,

"email_address" : email_address,

"active_code" : active_code",

"status" : status,

"checkCode" : checkCode,

};

}

};

后台代码:

package org.klh.book_store.model;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

import com.fasterxml.jackson.annotation.JsonInclude;

import com.fasterxml.jackson.annotation.JsonInclude.Include;

@Entity

@Table (name="user_info")

@JsonInclude(value=Include.NON_NULL)

public class User {

@Id

@Column(name="id")

private int id;

@Column(name="name")

private String name;

@Column(name="password")

private String password;

@Column(name="sex")

private String sex;

@Column(name="telephone")

private String telephone;

@Column(name="role")

private String role;

@Column(name="regist_time")

private String regist_time;

@Column(name="email_address")

private String email_address;

@Column(name="active_code")

private String active_code;

@Column(name="status")

private String status;

@Column(name="checkCode")

private String checkCode;

public User() {

}

public User(int id, String name, String password, String sex, String telephone, String role, String regist_time,

String email_address, String active_code, String status, String checkCode) {

this.id = id;

this.name = name;

this.password = password;

this.sex = sex;

this.telephone = telephone;

this.role = role;

this.regist_time = regist_time;

this.email_address = email_address;

this.active_code = active_code;

this.status = status;

this.checkCode = checkCode;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getTelephone() {

return telephone;

}

public void setTelephone(String telephone) {

this.telephone = telephone;

}

public String getRole() {

return role;

}

public void setRole(String role) {

this.role = role;

}

public String getRegist_time() {

return regist_time;

}

public void setRegist_time(String regist_time) {

this.regist_time = regist_time;

}

public String getEmail_address() {

return email_address;

}

public void setEmail_address(String email_address) {

this.email_address = email_address;

}

public String getActive_code() {

return active_code;

}

public void setActive_code(String active_code) {

this.active_code = active_code;

}

public String getStatus() {

return status;

}

public void setStatus(String status) {

this.status = status;

}

public String getCheckCode() {

return checkCode;

}

public void setCheckCode(String checkCode) {

this.checkCode = checkCode;

}

@Override

public String toString() {

return "User [\nid=" + id + ",\n name=" + name + ", \npassword=" + password + ", \nsex=" + sex + ", \ntelephone="

+ telephone + ", \nrole=" + role + ",\n regist_time=" + regist_time + ",\n email_address=" + email_address

+ ",\n active_code=" + active_code + ",\n status=" + status + ",\n checkCode=" + checkCode + "\n]";

}

}

在controller里面的代码如下:主要是处理关于注册端的业务逻辑,想着接收到数据用邮箱验证,而且邮箱发送代码也已经测试通过。接下来就是前台通过ajax发送数据就好了。

@Controller

public class Register {

public Register() {

}

@RequestMapping(value="/register", method=RequestMethod.POST,

produces="application/json;charset=UTF-8")

@ResponseBody

public User doUserLogin(HttpServletRequest request, HttpServletResponse response, User user) throws IOException {

System.out.println(request.getMethod());

System.out.println(request.getContextPath());

System.out.println("ajax进来了");

System.out.println(user);

//System.out.println(UUID.randomUUID().toString());

//SendJMail.sendMail("[email protected]", "一次伟大的尝试");

return null;

}

}

前台ajax发送代码如下:

var url = “./register”

$$.$setAction(pro + ".registAction",function(newUser,url,success,error) {

$$.$ajax({

url : url,

data :newUser,

async : true,

success : success,

error : error

});

});

但是老是显示badrequest400. 这就很尴尬,然后通过百度才知道。Springmvc下ajax利用json数据和后台交互时。必须得保证数据和后台model里面的数据量是一致的。简单来说,就是我注册页面的数据没有填满我前端的js下的user对象。

然后改成如下情况:

. . .

this.getUserObj = function() {

return{

"id" : id || 0,

"name" : name,

"password" : password,

"sex" : sex,

"telephone" : telephone,

"role" : role || "普通用户",

"regist_time" : regist_time || new Date().toLocaleTimeString(),

"email_address" : email_address,

"active_code" : active_code || "未设定",

"status" : status || "0",

"checkCode" : checkCode,

};

}

. . .

然后执行:后台打印数据如下

POST

/%E5%9C%A8%E7%BA%BF%E4%B9%A6%E5%9F%8E0.2

ajax进来了

User [

id=0,

name=hzg,

password=123,

sex=1,

telephone=15829243533,

role=普通用户,

regist_time=下午2:28:19,

[email protected],

active_code=未设定,

status=0,

checkCode=ymxq

]

总结:就是在springmvc下,利用json和后台交互时,必须的保证数据量的一致性,所以建议在没有值得情况下,最好给一些默认值。

时间: 2024-08-29 12:42:51

关于SpringMvc的ajax请求的问题的相关文章

SpringMVC经典系列-13使用SpringMVC处理Ajax请求---【LinusZhu】

注意:此文章是个人原创,希望有转载需要的朋友们标明文章出处,如果各位朋友们觉得写的还好,就给个赞哈,你的鼓励是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系[email protected],敬请朋友们斧正,谢谢. 这一部分主要讲解SpringMVC如何处理Ajax请求,是首先要讲解一下jackson类库,可以帮助我们在java对象和json.xml数据之间的互相转换.他可以将控制器返回的对象直接转换成json数据,供客户端使用,客户端也可以传送json数据到服务

SpringMVC的AJAX请求报406错误

SpringMVC的AJAX请求报406错误原因有两种:1.jackson包没有引入 2.如果已经引入jackson包了还报406的错误,那么就有可能是请求的url路径是.html结尾,但是返回的数据是一个对象,这时浏览器就不知道怎么响应了,因为一般请求.html后缀的页面,返回的一般是个字符串或者页面内容,此时可以在web.xml中再配置一个拦截后缀,如*.action,web.xml可以有多个拦截后缀,请求.action的后缀,浏览器就没有这个限制了

springMVC 解决ajax请求的406错误

直入主题-- 页面表单异步提交:$.post('<%=request.getContextPath()%>/web/register.html', $(form).serialize(), function(data){...}); java后台springMVC的controller接受请求: @RequestMapping("register") @ResponseBody public Map<String, String> register(HttpSe

SpringMVC使用Ajax请求返回中文乱码

前言: 最近在写一个JavaWeb后台时采用了spring+MyBatis+MySQL的方式.记录下遇到的关键问题 接口返回数据相关 使用@ResponseBody后返回NUll 说明:刚把后台运行起来,兴高采烈的测试接口数据,结果无论如何都是返回null, 最终通过各种百度,发现原来是没有引入关键的Jar包. 解决办法: 需要引入jackson的jar包(jackson core和jackson mapper),引入后 图: 使用@RequestMapping返回中文乱码 原因分析:(网上基本

SpringMVC进行Ajax请求页面显示乱码

最近在项目的使用过程中发现在springmvc的项目中,使用返回页面的请求方式,数据都能正常显示,但是对于ajax的请求,始终显示乱码. 首先第一种是因为我们在web.xml中配置了spring的字符编码过滤器,那么使用ajax请求为什么就不行了呢? 下面简单的分析一下,仅供参考. 先列出简单的请求代码: //Java代码 @Controller @RequestMapping("Goods") public class GoodsController { @RequestMappin

SpringMVC下Ajax请求的方法,@Responsebody如果返回的是布尔值,ajax不会接到任何回传数据

SpringMVC框架下,如果用ajax向后台请求得方法如果使用@Responsebody返回布尔值的话,ajax得不到任何的回传数据. 但是如果返回String类型,就是正常的. 测试了下代码写得没有任何问题,也不报错.只是在地址栏直接输入ajax请求的url会报404. The resource identified by this request is only capable of generating responses with characteristics not accepta

springMVC中ajax请求和日期转换(九)

一.代码示例(需要导入jquery文件和json的jar包) 1.前台页面 <html> <head> <script type="text/javascript" src="js/jquery-1.8.3.js"></script> <script> function check(x){ var uname= x.value; var url="findOneByUname?t="+n

修改springmvc返回ajax方式的json数据

现在由这么一个需求,就是修改几个功能模块的springmvc的ajax请求返回值(对返回值加密), 因为controller很多,而且以前抱着开闭原则,这里就选择使用拦截器的方式(是Filter不是spring的handlerFilter).废话不多少,上代码.(原始controller里返回的都是json数据). 修改web.xml 添加filter <filter> <filter-name>jsonFilter</filter-name> <filter-c

SpringMVC Ajax请求时返回json中文字符串的乱码问题的解决方案

1.org.springframework.http.converter.StringHttpMessageConverter类是处理请求或相应字符串的类,并且默认字符集为ISO-8859-1,所以在当返回json中有中文时会出现乱码. 2.StringHttpMessageConverter的父类里有个List<MediaType> supportedMediaTypes属性,用来存放StringHttpMessageConverter支持需特殊处理的MediaType类型,如果需处理的Me