在完成该项目的登陆模块的时候,有这样一个问题,就是后台的管理页面是不允许所有人访问的,只有登陆过的人才能进行相关操作,所以设计敏感操作的链接被放在了拦截器里,其实就是当你访问某类链接时,会校验一个方法,如果校验通过,页面跳转只正确页面,如果校验不通过,则返回登陆页。
拦截器的引入
<mvc:interceptors>
<!-- 校验是否已登录了管理系统的拦截器 -->
<mvc:interceptor>
<mvc:mapping path="/cps/**" />
<bean id="UserLoginInterceptor"
class="com.caeser.enterpriseportal.interceptor.CpsLoginInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
在WEB-INF文件里web.xml里依次引入相关xml文件,然后就会读取到上面的拦截器,那么在Java代码里,如果登陆不成功或者成功,页面是如何跳转的呢?
package com.caeser.enterpriseportal.interceptor;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class CpsLoginInterceptor extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 从session中取出用户信息来
Object userObj = request.getSession().getAttribute("user");
if (userObj != null) {
// 若用户信息不为空则将session里的用户信息转换成PersonInfo实体类对象
String userName = (String) userObj;
// 做空值判断,确保userId不为空并且该帐号的可用状态为1,并且用户类型为店家
if (userName!=null)
// 若通过验证则返回true,拦截器返回true之后,用户接下来的操作得以正常执行
return true;
}
// 若不满足登录验证,则直接跳转到帐号登录页面
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<script>");
out.println("window.open ('" + request.getContextPath() + "/vlogin/login','_self')");
out.println("</script>");
out.println("</html>");
return false;
}
}
页面跳转的方式是在页面上输出html标签,输出方式是通过引入response参数,输出标签完成页面跳转