tags: 移动商城项目
移动商城第十三篇【用户拦截器】
当用户点击“我的商城”的时候,该用户是需要登陆后才能进入该页面的。
并且,“我的商城”中的数据也是需要用户登陆后才能进入的。因此我们需要配置拦截器。
修改“我的商城”超链接,和提供对应的controller方法
<p class="l"><a href="#" title="商城首页">商城首页</a><samp>|</samp><a href="${path}/user/login/index.do" title="我的商城">我的商城</a></p>
复制代码
提供对应的controller方法
/**
* 跳转到我的商城页面
* @return
*/
@RequestMapping("/login/toPersonal.do")
public String toPersonal() {
return "person/index";
}
复制代码
上面的那些超链接都是需要用户登陆了才能访问的。
编写拦截器
package com.rl.ecps.interceptor;
import com.rl.ecps.model.TsPtlUser;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Created by ozc on 2017/10/10.
*/
public class LoginInteceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//得到session
HttpSession session = request.getSession();
TsPtlUser user = (TsPtlUser) session.getAttribute("user");
/**
* 如果没有登陆,就跳转到登陆页面,登陆了就放行。
*/
if (user == null) {
response.sendRedirect(request.getContextPath() + "/user/toLogin.do");
return false;
} else {
return true;
}
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
复制代码
注册拦截器
<!--注册拦截器,只要是/login下路径的,我都要拦截!-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/user/login/**"/>
<bean class="com.rl.ecps.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
复制代码
总结
- 定义一个拦截器对特定的资源进行拦截。只要是/login的资源都要被拦截。
- 在拦截器时看看有没有登陆,只要登陆了就放行!
如果您觉得这篇文章帮助到了您,可以给作者一点鼓励