SSM框架-企业门户网站-5-登陆拦截器

在完成该项目的登陆模块的时候,有这样一个问题,就是后台的管理页面是不允许所有人访问的,只有登陆过的人才能进行相关操作,所以设计敏感操作的链接被放在了拦截器里,其实就是当你访问某类链接时,会校验一个方法,如果校验通过,页面跳转只正确页面,如果校验不通过,则返回登陆页。

拦截器的引入

<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参数,输出标签完成页面跳转

猜你喜欢

转载自blog.csdn.net/Caeser110/article/details/88092498