1.首先编写一个简单的登录界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="/springmvc/Authlogin" method="post">
用户名:
<input type="text" name="username">
密码:
<input type="text" name="password">
<input type="submit" value="Submit">
</form>
</body>
</html>
表单中填写的内容将发送给Authlogin这个地址
2.编写一个user类,存放登录时提交的数据
public class UserInfo {
private String username;
private String password;
public void setUsername(String username){
this.username=username;
}
public void setPassword(String password){
this.password=password;
}
public String getUsername(){
return username;
}
public String getPassword(){
return password;
}
}
3.Authlogin负责对提交的信息进行判断,如果账号密码正确则将user对象存入Session并跳转至success页面,不正确则返回登录界面。
@RequestMapping("/Authlogin")
public ModelAndView Authlogin(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException {
request.setCharacterEncoding("utf-8");
ModelAndView mv = new ModelAndView();
String username = request.getParameter("username");//取得表单中传递过来的用户名和密码
System.out.println("username="+username);
String password = request.getParameter("password");
System.out.println("password="+password);
if(username.equals("Admin") && password.equals("123456")){
UserInfo user=new UserInfo();
user.setUsername(username);
user.setPassword(password);
HttpSession session=request.getSession();
session.setAttribute("user",user);
return new ModelAndView("redirect:/success.jsp");
}else{
mv.setViewName("login");
return mv;
}
}
因为是简单的功能实现,所以正确的账号密码直接写死在代码中,实际业务可以把账号信息存到数据库里,需要的时候再取出来进行比对。
4.编写登录拦截器
用户访问web项目中的任何一个服务时(除了Authlogin),请求都会被拦截,并进行判断。
如果session中存在user信息,说明用户已登录,访问请求将被放行。如果为空,则返回登录界面
public class PrivilegeInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session=request.getSession();
UserInfo user=(UserInfo) session.getAttribute("user");
if (user==null){
System.out.println("已拦截");
response.sendRedirect(request.getContextPath()+"/login.jsp");
return false;
}
return true;
}
}
5.编写拦截器配置文件
拦截除Authlogin以外的所有请求
<!--配置拦截器-->
<mvc:interceptors>
<!--配置拦截器,多个拦截器时,顺序执行-->
<mvc:interceptor>
<!--要拦截的具体的方法-->
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/**/Authlogin"/>
<!--配置拦截器对象-->
<bean class="interceptor.PrivilegeInterceptor" />
</mvc:interceptor>
</mvc:interceptors>