Spring MVC 拦截器和Ajax使用

Spring MVC 拦截器和Ajax使用


1、拦截器说明:

    Spring MVC 中包含了拦截器,这是为了针对特殊的请求。例如,用户的权限验证。
    Interceptors类必须实现HandlerInterceptor(org.springframework.web.servlet.HandlerInterceptor)。这个接口定义了三个方法
preHandle(..) 表示在请求之前执行方法;postHandle(..) 表示在请求之后执行方法;afterCompletion(..) 表示请求完成之后执行方法。
    方法preHandle(..) 方法的返回值是boolean,你可以通过这个方法继续喝停止程序的执行。当这个方法的返回值是true,表示这个方法将会
执行下去,当返回值是false时,核心控制器DispatccherServlet就会假定拦截器自身带有危险的请求并且不会再执行下去。
    案例代码:(java 代码)
[java]  view plain  copy
 print ?
  1. public class Interceptor_exam implements HandlerInterceptor {  
  2.        public void afterCompletion(HttpServletRequest arg0,  
  3.                HttpServletResponse arg1, Object arg2, Exception arg3)  
  4.                throws Exception {  
  5.            System.out.println("3-------------我是最终拦截器");  
  6.        }  
  7.        public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,  
  8.                Object arg2, ModelAndView arg3) throws Exception {  
  9.            System.out.println("2-------------我只后置拦截器");  
  10.        }  
  11.        public boolean preHandle(HttpServletRequest request, HttpServletResponse response,  
  12.                Object arg2) throws Exception {  
  13.            System.out.println("1-------------我是前置拦截器------begin");  
  14.            String session = (String) request.getSession().getAttribute("userName");//获得保存在session的userName的值  
  15.            if(session == null){  
  16.                System.out.println("---用户没有登录---");  
  17.                response.sendRedirect("http://localhost:8080/SpringMVC_02/failure.jsp");//重定向到指定的错误界面  
  18.                return false;  
  19.            }  
  20.            System.out.println("1-------------我是前置拦截器------end");  
  21.            return true;  
  22.        }  
  23. }  
    (配置文件)
[html]  view plain  copy
 print ?
  1. <mvc:interceptors>  
  2.        <mvc:interceptor>  
  3.            <mvc:mapping path="/**" /><!--拦截所有的请求-->  
  4.            <bean class="com.liu.interceptor.Interceptor_exam"></bean>  
  5.        </mvc:interceptor>  
  6.    </mvc:interceptors>  

2、SpringMVC和Ajax的使用

    代码示例(java 代码):
[java]  view plain  copy
 print ?
  1. @Controller  
  2.     @RequestMapping("/part5")  
  3.     public class Controller_Ajax {  
  4.         //使用ajax只是获得数据,并不需要跳转,刷新界面,所以返回界面是void  
  5.         @RequestMapping("/showUserList.do")  
  6.         public void showUserList(String name,PrintWriter out) throws Exception{  
  7.             System.out.println("接收到的值="+name);  
  8.             String result = name + ",ajax";  
  9.             out.write(result);  
  10.         }  
  11.         //负责跳转界面  
  12.         @RequestMapping("/toAjaxList.do")  
  13.         public String toAjaxList(){  
  14.             return "showUserList";  
  15.         }  
  16.         //将客户端传过来的数据,变化形式,在控制台输出  
  17.         @RequestMapping("/showNumberList.do")  
  18.         public void showNumberList(String number,HttpServletResponse response) throws Exception{  
  19.             response.setCharacterEncoding("UTF-8");//防止乱码问题  
  20.             String[] s_number = "零,壹,贰,叁,肆,伍,陆,柒,捌,玖".split(",");//字符串数组  
  21.             for (int i = 0; i < number.length(); i++) {  
  22.                 int n = Integer.parseInt(""+number.charAt(i));  
  23.                 System.out.print(s_number[n]+",");  
  24.                 response.getWriter().write(s_number[n]);  
  25.             }  
  26.             System.out.println();  
  27.         }  
  28.         @RequestMapping("/showNumberAjax.do")  
  29.         public String showNumberAjax(){  
  30.             return "showNumberList";  
  31.         }  
  32. }  
    (jsp代码):
[html]  view plain  copy
 print ?
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2.    <html>  
  3.      <head>  
  4.        <title>我是首页</title>  
  5.        <script type="text/javascript" src="js/jquery-1.6.2.js"></script>  
  6.        <script type="text/javascript">  
  7.            $(function(){  
  8.                $("#number").keyup(function(){  
  9.                    $.ajax({  
  10.                        url:"part5/showNumberList.do",  
  11.                        type:"post",  
  12.                        dataType:"text",  
  13.                        data:{  
  14.                            number:$("#number").val()  
  15.                        },  
  16.                        success:function(responseText){  
  17.                            $("#showNumber").html(responseText);  
  18.                        }  
  19.                    });  
  20.                });  
  21.            })  
  22.        </script>  
  23.      </head>  
  24.      <body>  
  25.            <input type="text" id="number" name="number"/>  
  26.            <div id="showNumber"></div>  
  27.      </body>  
  28.    </html>  
来自: 我有一个小毛驴
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值