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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013600907/article/details/74905700

直接贴出代码

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里添加用户信息
如下:
这里写图片描述

扫描二维码关注公众号,回复: 3250337 查看本文章

猜你喜欢

转载自blog.csdn.net/u013600907/article/details/74905700