(1)在springmvc.xml中配置映射器和适配器
<!-- 映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<list>
<bean class="com.csdn.core.web.SpringmvcInterceptor"></bean>
</list>
</property>
</bean>
<!-- 适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
(2)实现类SpringmvcInterceptor
public class SpringmvcInterceptor implements HandlerInterceptor {
@Autowired
private SessionProvider sessionProvider;
//方法前
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object arg2) throws Exception {
User user = (User) sessionProvider.getAttribute(request,Constans.USER_SESSION);
boolean flag = false;
if(user != null){
flag = true;
}
request.setAttribute("flag", flag);
return true;
}
//方法后
public void postHandle(HttpServletRequest request, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
// TODO Auto-generated method stub
}
//页面渲染后
public void afterCompletion(HttpServletRequest request,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
}
(3)jsp页面
<c:if test="${!flag }">
<a href="${pageContext.request.contextPath}/user/toLogin.do" target="_top">登录</a>
<a href="${pageContext.request.contextPath}/user/toRegister.do" target="_top"">注册</a>
</c:if>
<c:if test="${flag }">
<a href="${pageContext.request.contextPath}/user/toLogout.do" target="_top"">退出</a>
<a href="${pageContext.request.contextPath}/manage/toZhanghaoManage.do" target="_top"">账号</a>
</c:if>
(4)springmvc拦截器无效
项目中需要加springMVC拦截器,但加上了不起作用,原来是因为在springmvc.xml文件中配置的这个<mvc:annotation-driven/>
配置文件导致的拦截器失效,把这个注释掉,改成原始的包扫描的方式获取controller,就起作用了.