<script>
function createAjaxObj(){
var req;
if(window.XMLHttpRequest){
req = new XMLHttpRequest();
}else{
req = new ActiveXObject("Msxml2.XMLHTTP"); //ie
}
return req;
}
function sendAjaxReq(){
var req = createAjaxObj();
req.open("get","myajax.do method=test2&uname=张三");
req.setRequestHeader("accept","application/json");
req.onreadystatechange =function(){
eva l("var result="+req.responseText);
document.getElementById("div1").innerHTML=result[0].uname;
}
req.send(null);
}
4. 服务器端代码如下:
| package com.sxt.web;
import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List;
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody;
import com.sxt.po.User;
@Controller @RequestMapping("myajax.do") public class MyAjaxController {
@RequestMapping(params="method=test1",method=RequestMethod.GET) public @ResponseBody List
String uname2 = new String(uname.getBytes("iso8859-1"),"gbk"); System.out.println(uname2); System.out.println("MyAjaxController.test1()"); List
list.add(new User("高淇","123")); list.add(new User("马士兵","456"));
return list; }
} |
5. 测试。
a) 启动服务器。输入:http://localhost:8080/springmvc03/a.jsp
Spring中的拦截器
定义spring拦截器两种基本方式
1. 实现接口:org.springframework.web.servlet.HandlerInterceptor。
接口中有如下方法需要重写:
注意:参数中的Object handler是下一个拦截器。
a) publicboolean preHandle
(HttpServletRequest request,HttpServletResponse response,
Object handler) throws Exception
该方法在action执行前执行,可以实现对数据的预处理,比如:编码、安全控制等。
如果方法返回true,则继续执行action。
b) publicvoid postHandle
(HttpServletRequest request,HttpServletResponse response,
Object handler, ModelAndView modelAndView) throws Exception
该方法在action执行后,生成视图前执行。在这里,我们有机会修改视图层数据。
c) publicvoid afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) throws Exception
最后执行,通常用于释放资源,处理异常。我们可以根据ex是否为空,来进行相关的异常处理。因为我们在平时处理异常时,都是从底层向上抛出异常,最后到了spring框架从而到了这个方法中。
2. 继承适配器:
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
这个适配器实现了HandlerInterceptor接口。提供了这个接口中所有方法的空实现。
如下我们写出两个拦截器的示例代码,仅供大家参考:
| package com.sxt.interceptor;
importjavax.interceptor.Interceptors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;
publicclass MyInterceptorimplements HandlerInterceptor {
@Override publicvoid afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("最后执行!!!一般用于释放资源!!");
}
@Override publicvoid postHandle(HttpServletRequest reque |