您的位置:首页 > 编程语言 > Java开发

JAVA_OA(六):SpringMVC拦截器

2016-06-18 13:32 471 查看

说明

到这篇文章前,我们们所有的网页都是在可以直接在浏览器中输入XXX.do来直接访问

,甚至在得到jsp页面后,可以直接通过请求看到数据库的表格!

而这肯定是开发所不允许的.故而,是时候让拦截器登场了,而他也正是一个基本的登录实例所必须的组件.

a 创建拦截器组件,实现HandlerInterceptor接口

public class LoginInteceptor implements HandlerInterceptor{

//  其中要实现三个方法
//afterCompletion,postHandle,preHandle

//preHandle在处理器执行前被调用这个方法,如果返回的结果为true ,那么继续执行后续的操作,如果为false,后面的程序将不再执行
/**
* 拦截器 拦截请求完事调用
*/
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("afterCompletion");
}

/**
* 拦截器 拦截请求之后调用
*/

public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
System.out.println("postHandle");
}

/**
* 拦截器 拦截请求之前调用
*/

public boolean preHandle(HttpServletRequest req, HttpServletResponse res,

System.out.println("preHandle");

//以下是具体代码
HttpSession session=req.getSession();
String str=(String) session.getAttribute("login");
if(null==str||"".equals(str)){

// getContextPath而非直接写路径->防止硬编码->避免项目改名时,修改大量代码.

res.sendRedirect(req.getContextPath()+"/login.jsp");
return false;
}
if(str.equals("true")){
return true;
}else{
res.sendRedirect(req.getContextPath()+"/login.jsp");
return false;

}
//以上是具体代码

}

/**
* 如果返回的是 false 此请求 就此拦截
* 如果返回的是true  继续走你下面的程序
*/

}

...

}


b 注册拦截器组件

<!-- 配置我们的拦截器   -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<!--对所有访问进行拦截-->
<!-- 对/user/login.do进行拦截处理-->
<mvc:exclude-mapping path="/user/login.do"/>
<bean id="loginInterceptor" class="com.throne.util.UserInteceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java spring mvc oa 拦截器