ajax请求 spring mvc responsebody 注解的方法 为啥写不了cookie
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax请求 spring mvc responsebody 注解的方法 为啥写不了cookie相关的知识,希望对你有一定的参考价值。
debug一下,看看controller是不是能走到最后,如果能就不是java代码问题,不能的话就是代码问题的问题了。能走到最后,但是不走success的话就需要firebug看一下ajax请求了,看看是不是requestMapping路径不小心写错了,或者http errorcode多少等等。一步一步排查,这都是小问题,需要的细心和耐心。 参考技术ACookie cookie = new Cookie(cookieName,"2333");
cookie.setPath("/");
response.addCookie(cookie);
一定要给cookie 设置一个path
本回答被提问者采纳无法向spring mvc控制器发送ajax post请求
【中文标题】无法向spring mvc控制器发送ajax post请求【英文标题】:Unable to send ajax post request to spring mvc controller 【发布时间】:2021-08-09 16:00:32 【问题描述】:我正在尝试在单击按钮时发送 ajax 发布请求, 我的jsp表单是
<body>
<form name="userForm" id="userForm" method="POST">
<table><tbody id="uniform">
<tr>
</tr>
<tr>
<td>Name</td>
<td><input name="name" type="text" /></td>
</tr>
<tr>
<td>Rashi</td>
<td><input name="rashi" type="text" /></td>
</tr>
<tr>
<td>Gothram</td>
<td><input name="gothram" type="text" /></td>
</tr>
<tr>
<td>Gender</td>
<td><input name="gender" type="text" /></td>
</tr>
<tr>
<td><button class="btn btn-default" onclick="addProfile()">Add</button></td>
</tr>
</tbody>
</table>
</form></body>
js中的函数,即addProfile()是,
function addProfile()
alert("inside profile");
$.ajax(
url: "saveUser",
type: "POST",
data: new FormData(this), // Data sent to server
contentType: false, // The content type used when sending data to the server.
cache: false, // To unable request pages to be cached
processData:false, // To send DOMDocument or non processed data file it is set to false
success: function(data)
alert($profile_id);
if(data=="registered")
,
error: function()
);
我的控制器代码是,
@RequestMapping(value="/saveUser", method = RequestMethod.POST)
@ResponseBody
public void insert(ModelMap model, Principal principal,HttpSession session,@ModelAttribute @Valid Profile profile,
BindingResult result) throws IOException
System.out.println(" inside insert ");
System.out.println("profilec name"+profile.getName());
System.out.println(result.getErrorCount());
int profile_id=service.Insert(profile);
model.addAttribute("profile_id",profile_id);
spring-security 文件是
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<security:global-method-security secured-annotations="enabled" />
<security:http auto-config="true" >
<security:intercept-url pattern="/index*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<security:access-denied-handler error-page="/login"/>
<security:form-login login-page="/login" default-target-url="/index"
authentication-failure-url="/fail2login"
username-parameter="username"
password-parameter="password" />
<security:logout logout-success-url="/logout" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<!-- <security:password-encoder ref="encoder" /> -->
<security:jdbc-user-service data-source-ref="dataSource"
users-by-username-query=
"select username,password, enabled from USER_MASTER where username=?"
authorities-by-username-query=
"select username,USER_ROLE from USER_ROLE where username =? " />
</security:authentication-provider>
</security:authentication-manager>
<bean id="encoder"
class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
<constructor-arg name="strength" value="10" />
</bean>
</beans>
即使我删除了 ajax 代码,我也收到了 405 错误,就像这样
function addProfile()
alert("inside profile");
我收到警报,但在收到错误代码后,
我的个人资料 bean 类是,
public class Profile
private String name;
private String rashi;
public String getName()
return name;
public void setName(String name)
this.name = name;
public String getRashi()
return rashi;
public void setRashi(String rashi)
this.rashi = rashi;
public String getGothram()
return gothram;
public void setGothram(String gothram)
this.gothram = gothram;
public String getGender()
return gender;
public void setGender(String gender)
this.gender = gender;
private String gothram;
private String gender;
不允许使用 405 方法的原因是什么?
【问题讨论】:
你的页面刷新了吗?如果是,您的表单正在提交,则不会启动 ajax 调用。 即使我删除了 ajax 代码,我也会收到 405 错误 - 那么 (显然) 而不是导致 405 的 ajax POST。看在浏览器网络选项卡中仔细查找导致 405 的是的确切原因。 【参考方案1】:在您的addProfile()
呼叫之后发布的是您的form
。
你的按钮是
<button class="btn btn-default" onclick="addProfile()">
没有type=
,默认是type=submit
,所以你的按钮会导致表单提交到表单的URL,如果没有设置,它将与页面的URL相同,它是this(页面) 给出 405 的 url。
最简单的解决方案是将按钮更改为
<button type='button' class="btn btn-default" onclick="addProfile()">
这样它就不会提交表单。
其他选项:
你可以
将 onclick 更改为onclick="addProfile();return false;"
或
onclick="return addProfile();
和 return false
来自 addProfile()(在 $.ajax();
之后)
或(首选)
使用 jquery 绑定您的事件并从提交尝试中返回 false【讨论】:
以上是关于ajax请求 spring mvc responsebody 注解的方法 为啥写不了cookie的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring MVC 中映射 Ajax 请求:不允许出现错误 405 方法