今天遇到问题当拦截器中设置了loginInterceptor就验证码显示不出来了
代码
/**
* 验证码信息
* @param response
* @param length
* @param width
* @param height
* @param request
*/
@RequestMapping(value = "/verificationCode",method = RequestMethod.GET)
public void hello(HttpServletResponse response,
@RequestParam(value = "length",defaultValue = "4",required = false) Integer length,
@RequestParam(value = "width",defaultValue = "98",required = false) Integer width,
@RequestParam(value = "height",defaultValue = "33",required = false) Integer height,
HttpServletRequest request){
//使用CpachaUtil验证码工具,设置字符数,高度,宽度
CpachaUtil cpachaUtil = new CpachaUtil(length,width,height);
//获取产生的随机字符
String generatorCode = cpachaUtil.generatorVCode();
//创建Seesion获取信息
request.getSession().setAttribute("LOGIN_VERIFICATION_CODE",generatorCode);
//创建一个验证码框,选择画图线
BufferedImage bufferedImage = cpachaUtil.generatorRotateVCodeImage(generatorCode, true);
try {
//将内容响应到固定的位置
ImageIO.write(bufferedImage,"gif",response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
----------------------------------------------------------------------
拦截器
package com.xiao.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import net.sf.json.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
/**
* @_PackageName:com.xiao.interceptor
* @_ClassName:LoginInterceptor
* @_Description:
* @_Author:笑老二
* @_data 2020/6/4 19:33
*/
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//获取url
String url = request.getRequestURI();
//判断user session是否为空
Object user = request.getSession().getAttribute("user");
if (user==null){
//表示未登录或者登录状态失效
System.out.println("未登录或登录失效,url = " + url);
//ajax请求
Map<String, String> ret = new HashMap<String, String>();
ret.put("type", "error");
ret.put("msg", "登录状态已失效,请重新去登录!");
response.getWriter().write(JSONObject.fromObject(ret).toString());
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
------------------------------------------------------------------------------
springMVC的配置
<!--配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<!--不拦截-->
<mvc:exclude-mapping path="/system/verificationCode" />
<bean class="com.xiao.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
问题的解决就是:
加上你不拦截的验证码路径就好了。