使用 spring MVC 结合ajax的时候,返回ModelAndView 是 页面无法接受返回值
代码如下:
控制器UserAction.java:
package com.user.web;import java.util.Date;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import com.jdbc.bean.User;
import com.user.service.ITUserSV;
import com.zhuangyuan.util.action.BasicAction;@Controller
@RequestMapping("/User")
public class UserAction extends BasicAction{
@RequestMapping("/Register")
public ModelAndView registerUser(HttpServletRequest request,ModelMap mm){
String userName = request.getParameter("userName");
String password = request.getParameter("passWord");
String lastIp = request.getHeader("x-forwarded-for");
Date date = new Date();
User user = new User();
user.setLastIp(lastIp);
user.setUserName(userName);
user.setPassword(password);
user.setLastTime(date);
user.setUserId(9L);
ModelAndView modelAndView=new ModelAndView("userRegister");
String msg="";
//注册
ITUserSV tUserSV = (ITUserSV)this.getService("tuserSVImpl");
try {
tUserSV.insertUser(user);
} catch (Exception e) {
msg=e.toString();
}
msg="注册成功!状元网欢迎你!";
mm.addAttribute("msg", msg);
return modelAndView;
}}
jsp页面:userRegister.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ include file="../util/head.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<script type='text/javascript' src='<%=request.getContextPath() %>/util/jquery/jquery.js'></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>状元网----用户注册</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<script type="text/javascript">
$(function(){
$('#commit').click(function(){
commit();
});
$('#reset').click(function(){
reset();
});
$('#rePassWord').blur(function(){
if($('#rePassWord').val()!=$('#passWord').val()){
alert("输入的两次密码不一致!");
$('#rePassWord').focus();
return;
}
});
});
function commit(){
var userName = $('#userName').val();
var passWord = $('#passWord').val();
if(userName==null||userName==""){
alert("请填写用户名!");
$('#userName').focus();
return;
}
if(passWord==null||passWord==""){
alert("请输入密码!");
$('#passWord').focus();
return;
}
$.ajax({
type:"POST",
dataType:'json',
//contentType:"application/json",
cache:false,
data:"userName="+userName+"&passWord="+passWord,
url:"<%=request.getContextPath() %>/User/Register.do?formart=json",
success:function(data){
aler(data.msg);
},
error:function(data){
alert("注册失败,系统错误:"+data);
}
});
}
function reset(){
$('#userName').val("");
$('#passWord').val("");
$('#rePassWord').val("");
}
</script>
<body>
<center>
<table>
<tr>
<td>用 户 名:</td>
<td><input id="userName"/></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="password" id="passWord"/></td>
</tr>
<tr>
<td>再次确定密码:</td>
<td><input type="password" id="rePassWord"/></td>
</tr>
<tr>
<td><a id="commit">提交</a></td>
<td><a id="reset"/>取消</a></td>
</tr>
</table>
</center>
</body>
</html>
servlet配置文件
zhuangyuan-servlet.xml:
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:component-scan base-package="com.user.web"></context:component-scan>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
p:defaultContentType="text/html"
p:favorPathExtension="false"
p:favorParameter="true"
p:ignoreAcceptHeader="true"
>
<property name="mediaTypes">
<map>
<entry key="html" value="text/html"/>
<entry key="xml" value="application/xml" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"></bean>
<!-- <bean class="org.springframework.web.servlet.view.xml.MarshallingView" p:modelKey="msg" p:marshaller-ref="xmlMarshaller"></bean> -->
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:order="10"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/user/"
p:suffix=".jsp"
>
</bean>
</beans>
当点击提交按钮的时候 ,数据库中可以新增一条记录,但是在返回的时候,执行的却是 ajax中的 error 函数!!!ajaxspring mvcservletjavaModelAndView
代码如下:
控制器UserAction.java:
package com.user.web;import java.util.Date;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import com.jdbc.bean.User;
import com.user.service.ITUserSV;
import com.zhuangyuan.util.action.BasicAction;@Controller
@RequestMapping("/User")
public class UserAction extends BasicAction{
@RequestMapping("/Register")
public ModelAndView registerUser(HttpServletRequest request,ModelMap mm){
String userName = request.getParameter("userName");
String password = request.getParameter("passWord");
String lastIp = request.getHeader("x-forwarded-for");
Date date = new Date();
User user = new User();
user.setLastIp(lastIp);
user.setUserName(userName);
user.setPassword(password);
user.setLastTime(date);
user.setUserId(9L);
ModelAndView modelAndView=new ModelAndView("userRegister");
String msg="";
//注册
ITUserSV tUserSV = (ITUserSV)this.getService("tuserSVImpl");
try {
tUserSV.insertUser(user);
} catch (Exception e) {
msg=e.toString();
}
msg="注册成功!状元网欢迎你!";
mm.addAttribute("msg", msg);
return modelAndView;
}}
jsp页面:userRegister.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ include file="../util/head.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<script type='text/javascript' src='<%=request.getContextPath() %>/util/jquery/jquery.js'></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>状元网----用户注册</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<script type="text/javascript">
$(function(){
$('#commit').click(function(){
commit();
});
$('#reset').click(function(){
reset();
});
$('#rePassWord').blur(function(){
if($('#rePassWord').val()!=$('#passWord').val()){
alert("输入的两次密码不一致!");
$('#rePassWord').focus();
return;
}
});
});
function commit(){
var userName = $('#userName').val();
var passWord = $('#passWord').val();
if(userName==null||userName==""){
alert("请填写用户名!");
$('#userName').focus();
return;
}
if(passWord==null||passWord==""){
alert("请输入密码!");
$('#passWord').focus();
return;
}
$.ajax({
type:"POST",
dataType:'json',
//contentType:"application/json",
cache:false,
data:"userName="+userName+"&passWord="+passWord,
url:"<%=request.getContextPath() %>/User/Register.do?formart=json",
success:function(data){
aler(data.msg);
},
error:function(data){
alert("注册失败,系统错误:"+data);
}
});
}
function reset(){
$('#userName').val("");
$('#passWord').val("");
$('#rePassWord').val("");
}
</script>
<body>
<center>
<table>
<tr>
<td>用 户 名:</td>
<td><input id="userName"/></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="password" id="passWord"/></td>
</tr>
<tr>
<td>再次确定密码:</td>
<td><input type="password" id="rePassWord"/></td>
</tr>
<tr>
<td><a id="commit">提交</a></td>
<td><a id="reset"/>取消</a></td>
</tr>
</table>
</center>
</body>
</html>
servlet配置文件
zhuangyuan-servlet.xml:
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:component-scan base-package="com.user.web"></context:component-scan>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
p:defaultContentType="text/html"
p:favorPathExtension="false"
p:favorParameter="true"
p:ignoreAcceptHeader="true"
>
<property name="mediaTypes">
<map>
<entry key="html" value="text/html"/>
<entry key="xml" value="application/xml" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"></bean>
<!-- <bean class="org.springframework.web.servlet.view.xml.MarshallingView" p:modelKey="msg" p:marshaller-ref="xmlMarshaller"></bean> -->
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:order="10"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/user/"
p:suffix=".jsp"
>
</bean>
</beans>
当点击提交按钮的时候 ,数据库中可以新增一条记录,但是在返回的时候,执行的却是 ajax中的 error 函数!!!ajaxspring mvcservletjavaModelAndView
解决方案 »
- 创建一个类,在另一个类中调用其方法
- java获取当前时间的后一天
- java web聊天程序
- 求助 java文档管理系统
- 问下根据vipid修改用户信息,采用struts2+hibernate3
- 请教一个HSSF的问题,如何让execel表格自适应宽度?
- Applet高手请进,Applet不能修改配置文件
- 谁能谈谈ejb、jdo和Hibernate各有什么优劣,该如何选择
- 菜鸟问题一个,请线上的大虾赐教,希望有耐心!
- jbuilder7+weblogic7,在调试jbuilder7带的例子时候,如何配置datasource?
- mysql 用java调用可以批量执行 存储过程吗?
- 项目中什么情况下用到Solr?
aler(data.msg);
}
public ModelAndView registerUser(HttpServletRequest request,ModelMap mm){
String userName = request.getParameter("userName");
String password = request.getParameter("passWord");
String lastIp = request.getHeader("x-forwarded-for");
Date date = new Date();
User user = new User();
user.setLastIp(lastIp);
user.setUserName(userName);
user.setPassword(password);
user.setLastTime(date);
user.setUserId(9L);
ModelAndView modelAndView=new ModelAndView("userRegister");
String msg="";
//注册
ITUserSV tUserSV = (ITUserSV)this.getService("tuserSVImpl");
try {
tUserSV.insertUser(user);
} catch (Exception e) {
msg=e.toString();
}
msg="注册成功!状元网欢迎你!";
mm.addAttribute("msg", msg);
return modelAndView;
}
这个要改成response方式的吧...