版权声明:本文为博主原创文章,未经博主允许不得转载。 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 查看本文章