关于Jquery版本的Ajax和SpringMVC拦截器(Interceptor)

来源:互联网 发布:freemind软件 编辑:程序博客网 时间:2024/06/02 06:53

直接贴出代码

Aajx页面部分
首先要导入jquery标签 在这里就不写了

<script type="text/javascript">        //入口函数        $(function name() {            //通过id获得username  失去焦点事件            $("#username").blur(function() {                var name = $("#username").val();                $("span").empty();                if(name==""){                   var span = $("<span>请输入用户名!</sapan>");                    $("#username").after(span);                    $("#sum").attr("disabled", "disabled");                   return false;                }                $.ajax({                    type : "GET",                    url : "userAction/userExist.action",                    data : {                        username : $("#username").val()                    },                    dataType : "json",                    success : function(data) {                        $("span").empty();                        if (data == "1") {                            var span = $("<span>用户名已存在!</sapan>");                            $("#username").after(span);                            $("#sum").attr("disabled", "disabled");                        } else {                            var span = $("<span>用户名可以使用.</sapan>");                            $("#sum").removeAttr("disabled");                            $("#username").after(span);                        }                    }                });            });        });    </script>

表单页面

<form action="userAction/addUser.action" method="post" onsubmit="return chchch()">          <table align="center">            <tr>                <td>用户名</td>                <td><input name="username" id="username"></td>            </tr>            <tr>                <td>密码</td>                <td><input name="password" type="password" id="password"></td>            </tr>            <tr>                <td><input type="submit" value="注册"                    class="btn btn-default" id="sum"></td>            </tr>        </table>    </form>

后台代码

//判断用户名是否存在    @RequestMapping("/userExist")    public void userExist(User user, HttpServletResponse httpServletResponse)            throws Exception {        System.out.println(user.getUsername());        User u = userService.userExist(user);        if (u != null) {            httpServletResponse.getWriter().write("1");        }else{            httpServletResponse.getWriter().write("2");        }    }

这个Ajax运行原理就是前台输入姓名 失去焦点后 jquery获取姓名的属性 Ajax异步请求到后台 进行查询 如果查询到这条数据 代表这条数据存在(也就是说姓名已存在 不能使用 否则则可以使用.)
(ps:本demo中运用了一点bootstrap代码)

下边来看效果

这里写图片描述

下面是SpringMVC拦截器部分:
首先先在配置文件添加以下代码

<mvc:interceptors>              <mvc:interceptor>                  <!-- 这句话意思是拦截所有请求 -->                  <mvc:mapping path="/**"/>                  <!-- 这一部分是配置哪些请求不进行拦截 -->                <bean class="com.ssm.Interceptor.LoginInterceptor"></bean>              </mvc:interceptor>          </mvc:interceptors> 

下面就是配置拦截器的java文件

package com.ssm.Interceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;/** * @Date:2017年7月9日下午7:54:20 * @author :MrWang * @desc: */public class LoginInterceptor implements HandlerInterceptor{    @Override    public void afterCompletion(HttpServletRequest arg0,            HttpServletResponse arg1, Object arg2, Exception arg3)            throws Exception {        // TODO Auto-generated method stub    }    @Override    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,            Object arg2, ModelAndView arg3) throws Exception {        // TODO Auto-generated method stub    }    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,            Object object) throws Exception {        //获取请求的url        String url = request.getRequestURI();        //这是不拦截的url地址        if(url.indexOf("userAction/login.action")>=0){            return true;        }        //这个也是不拦截的url地址        if(url.indexOf("userAction/addUser.action")>=0){            return true;        }        //这是ajaxurl地址 也是不进行拦截        if(url.indexOf("userAction/userExist.action")>=0){            return true;        }        //获取session 如果浏览器有用户信息 不进行拦截        HttpSession session = request.getSession();        String username = (String) session.getAttribute("username");        if(username!=null){            return true;        }         //不符合条件的,跳转到登录界面          request.getRequestDispatcher("/denglu.jsp").forward(request, response);         return false;    }}

这样就配好了springmvc拦截器

当然 如果配置的session查询用户信息 那就必须现在controller层在session里添加用户信息
如下:
这里写图片描述