Spring MVC 第四讲: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 代码)

 public class Interceptor_exam implements HandlerInterceptor {
        public void afterCompletion(HttpServletRequest arg0,
                HttpServletResponse arg1, Object arg2, Exception arg3)
                throws Exception {
            System.out.println("3-------------我是最终拦截器");
        }
        public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
                Object arg2, ModelAndView arg3) throws Exception {
            System.out.println("2-------------我只后置拦截器");
        }
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                Object arg2) throws Exception {
            System.out.println("1-------------我是前置拦截器------begin");
            String session = (String) request.getSession().getAttribute("userName");//获得保存在session的userName的值
            if(session == null){
                System.out.println("---用户没有登录---");
                response.sendRedirect("http://localhost:8080/SpringMVC_02/failure.jsp");//重定向到指定的错误界面
                return false;
            }
            System.out.println("1-------------我是前置拦截器------end");
            return true;
        }
 }

    (配置文件)

 <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**" /><!--拦截所有的请求-->
            <bean class="com.liu.interceptor.Interceptor_exam"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

2、SpringMVC和Ajax的使用

    代码示例(java 代码):

@Controller
    @RequestMapping("/part5")
    public class Controller_Ajax {
        //使用ajax只是获得数据,并不需要跳转,刷新界面,所以返回界面是void
        @RequestMapping("/showUserList.do")
        public void showUserList(String name,PrintWriter out) throws Exception{
            System.out.println("接收到的值="+name);
            String result = name + ",ajax";
            out.write(result);
        }
        //负责跳转界面
        @RequestMapping("/toAjaxList.do")
        public String toAjaxList(){
            return "showUserList";
        }
        //将客户端传过来的数据,变化形式,在控制台输出
        @RequestMapping("/showNumberList.do")
        public void showNumberList(String number,HttpServletResponse response) throws Exception{
            response.setCharacterEncoding("UTF-8");//防止乱码问题
            String[] s_number = "零,壹,贰,叁,肆,伍,陆,柒,捌,玖".split(",");//字符串数组
            for (int i = 0; i < number.length(); i++) {
                int n = Integer.parseInt(""+number.charAt(i));
                System.out.print(s_number[n]+",");
                response.getWriter().write(s_number[n]);
            }
            System.out.println();
        }
        @RequestMapping("/showNumberAjax.do")
        public String showNumberAjax(){
            return "showNumberList";
        }
}

    (jsp代码):

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
      <head>
        <title>我是首页</title>
        <script type="text/javascript" src="js/jquery-1.6.2.js"></script>
        <script type="text/javascript">
            $(function(){
                $("#number").keyup(function(){
                    $.ajax({
                        url:"part5/showNumberList.do",
                        type:"post",
                        dataType:"text",
                        data:{
                            number:$("#number").val()
                        },
                        success:function(responseText){
                            $("#showNumber").html(responseText);
                        }
                    });
                });
            })
        </script>
      </head>
      <body>
            <input type="text" id="number" name="number"/>
            <div id="showNumber"></div>
      </body>
    </html>

    (结果显示)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值