900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > spring mvc 拦截器怎么拦截jsp页面

spring mvc 拦截器怎么拦截jsp页面

时间:2023-03-23 00:42:30

相关推荐

spring mvc 拦截器怎么拦截jsp页面

spring mvc 拦截器怎么拦截jsp页面

你这个 是拦截带 /jsp 的 .do请求

解决方案

用spring 的拦截器 去拦截 所有的 .do 请求,

然后写一个 过滤器去拦截 所有的.jsp 的请求

这样才能防止循环过滤

这种会把所有jsp请求过滤不推荐。

<filter>

<filter-name>loginFilter</filter-name>

<filter-class>

net.techfinger.yoyoapp.interceptor.CheckLoginFilter

</filter-class>

</filter>

<filter-mapping>

<filter-name>loginFilter</filter-name>

<url-pattern>*.jsp</url-pattern>

</filter-mapping>

<servlet-mapping>

<servlet-name>Spring-Servlet</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

publicclassCheckLoginFilter implementsFilter{

@Override

publicvoid destroy(){

//TODO Auto-generated method stub

}

@Override

publicvoid doFilter(ServletRequest servletRequest,

ServletResponse servletResponse,FilterChain filterChain)

throws IOException,ServletException{

//TODO Auto-generated method stub

HttpServletRequest request=(HttpServletRequest)servletRequest;

HttpServletResponse response=(HttpServletResponse)servletResponse;

HttpSession session=request.getSession();

//获得用户请求的URI

Stringpath=request.getRequestURI();

StringcontextPath=request.getContextPath();

Stringurl=path.substring(contextPath.length());

Person person=SessionUtils.getPerson(request);

if(person==null){

response.sendRedirect(contextPath+"/person.do?method=tologin");

return;

}

if(person.getId()!=null&&person.getPassword()!=null){

filterChain.doFilter(servletRequest,servletResponse);

return;

}

}

@Override

publicvoid init(FilterConfig filterConfig)throws ServletException{

}

}

publicclassAuthInterceptor extends HandlerInterceptorAdapter{

privatefinal static Loggerlog=Logger.getLogger(AuthInterceptor.class);

@Override

publicboolean preHandle(HttpServletRequest request,

HttpServletResponse response,Object handler)throws Exception{

HandlerMethod method=(HandlerMethod)handler;

Auth auth=method.getMethod().getAnnotation(Auth.class);

////验证登陆超时问题 auth=null,默认验证

if(auth==null||auth.verifyLogin()){

StringbaseUri=request.getContextPath();

Stringpath=request.getServletPath();

Person person=SessionUtils.getPerson(request);

if(person==null){

if(path.endsWith(".jsp")){

response.setStatus(response.SC_GATEWAY_TIMEOUT);

response.sendRedirect(baseUri+"/person.do?method=tologin");

returnfalse;

}else{

response.setStatus(response.SC_GATEWAY_TIMEOUT);

Map<String,Object>result=new HashMap<String,Object>();

/*result.put("success",false);

result.put("logoutFlag",true);//登录标记true退出

result.put("msg","登录超时.");

XmlUtil.sendMsg(response,result);*/

response.sendRedirect(baseUri+"/person.do?method=tologin");

returnfalse;

}

}

}

//验证URL权限

if(auth==null||auth.verifyURL()){/*

//判断请求的url,是否包含在该角色的url里

StringmethodName=request.getParameter("method");

StringmenuUrl=StringUtils.remove(request.getRequestURI(),request.getContextPath())+"?method="+methodName;

System.out.println(menuUrl);

if(!SessionUtils.isAccessUrl(request,StringUtils.trim(menuUrl))){

//日志记录

StringuserMail=SessionUtils.getPerson(request).getLoginName();

Stringmsg="URL权限验证不通过:[url="+menuUrl+"][email ="+userMail+"]";

log.error(msg);

response.setStatus(response.SC_FORBIDDEN);

Map<String,Object>result=new HashMap<String,Object>();

result.put("success",false);

result.put("msg","没有权限访问,请联系管理员.");

XmlUtil.sendMsg(response,result);

returnfalse;

}

*/}

return super.preHandle(request,response,handler);

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。