通过拦截器来完成一个用户登录权限验证,只有成功登录的用户才能访问系统的主页面main.jsp,如果没有登录成功而直接访问主页面,则拦截器将拦截请求,并转到登录页面login.jsp,当成功登录的用户在系统主页面中单击“退出”链接时,回到登录页面。
时间: 2023-11-26 16:06:03 浏览: 99
首先,需要创建一个拦截器类,实现HandlerInterceptor接口,并在该类中编写拦截逻辑。
例如:
```java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 判断用户是否登录,可以通过session或cookie来实现
if (request.getSession().getAttribute("user") == null) {
// 未登录,重定向到登录页面
response.sendRedirect(request.getContextPath() + "/login.jsp");
return false;
}
// 已登录,放行
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) throws Exception {
// TODO Auto-generated method stub
}
}
```
然后,在Spring MVC配置文件中注册该拦截器:
```xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/main.jsp"/>
<bean class="com.example.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
```
这里指定了拦截路径为/main.jsp,并将LoginInterceptor类作为拦截器。
最后,在登录成功时,将用户信息保存到session中:
```java
@RequestMapping("/login")
public String login(String username, String password, HttpSession session) {
// 验证用户名和密码
// ...
// 登录成功,保存用户信息到session中
session.setAttribute("user", username);
return "redirect:/main.jsp";
}
```
在系统主页面中,可以添加一个“退出”链接,点击该链接时,清除session并返回登录页面:
```java
@RequestMapping("/logout")
public String logout(HttpSession session) {
// 清除session
session.invalidate();
return "redirect:/login.jsp";
}
```