SSM-ajax&json&controller整合
一、页面跳转
1、直接跳转
(1)视图解析器(springMVC.xml中)
<!--视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
(2)js代码
document.getElementById("ajax2").onclick = function () {
location.href="${pageContext.request.contextPath}/demo/ajax3"
};
(3)controller
- String
@RequestMapping("/ajax3")
public String testDemo3(){
return "success";
}
- ModelAndView
@RequestMapping("/ajax4")
public ModelAndView testDemo4(){
ModelAndView modelAndView=new ModelAndView();
//基本数据类型
modelAndView.addObject("key1","value1");
//list
List list=new ArrayList();
list.add("1");
list.add("2");
modelAndView.addObject("list1",list);
//map
Map map= new HashMap();
map.put("one",1);
map.put("two",2);
modelAndView.addObject("map1",map);
//对象
Temp temp=new Temp();
temp.setA("A");
temp.setB("B");
modelAndView.addObject("obj",temp);
modelAndView.setViewName("forward:/WEB-INF/views/success.jsp");
return modelAndView;
}
ps:modelAndView存入的对象前端获取方法--------直接${key}
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>success</title>
</head>
<body>
<h>sucess</h>
<script>
alert(${key1});
</script>
${key1};
${list1};
${obj.a}
<c:forEach items="${list1}" var="list" varStatus="l">
//索引
${l.index}
//循环次数,从1开始
${l.count}
//集合的每一项
${list}
</c:forEach>
</body>
</html>
2、ajax跳转(ajax局部刷新,不能通过controller进行跳转,只能在success的函数中跳转)
(1)ajax写法
document.getElementById("ajax1").onclick = function () {
$.ajax({
type: "get",
url: "${pageContext.request.contextPath}/demo/ajax1",
data: {"data1": "data1", "data2": "data2"},
success: function (data) {
//ajax是局部刷新,不能在controller里面实现页面跳转!!!!!
window.location.href="./success.jsp";
}
});
};
(2)controller写法
@RequestMapping("/ajax1")
public void testDemo(String data1,String data2,HttpServletResponse response,HttpServletRequest request){
System.out.println("data1 = " + data1);
System.out.println("data2 = " + data2);
}
ps:返回值是void时,参数列表中必须有HttpServletRequest和HttpServletResponse,否则会报404错误。
二、controller向ajax传值
1、ajax返回值String
controller返回值为String
- ajax
$.ajax({
type: "get",
url: "${pageContext.request.contextPath}/demo/ajax5",
data: {"data1": "data1", "data2": "data2"},
success: function (data) {
var data = data;
alert(data);
}
});
- controller
@RequestMapping("/ajax5")
@ResponseBody
public String testDemo5(){
return "string-return";
}
2、ajax返回值List
- ajax
document.getElementById("ajax4").onclick = function () {
$.ajax({
type: "get",
url: "${pageContext.request.contextPath}/demo/ajax6",
data: {"data1": "data1", "data2": "data2"},
success: function (data) {
var data = data;
for (var i=0;i<=5;i++){
alert(data[i]);