关于tomcat 报错原因

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.ClassCastException: com.sany.web.session.WebSession cannot be cast to java.lang.String
com.sany.web.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:34)》<!--->

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.

/**

  • */ package com.sany.web.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import com.sany.util.log.ILogger;

public class SetCharacterEncodingFilter implements Filter {
private static final ILogger logger = ILogger.getInstance().getILogger(SetCharacterEncodingFilter.class);
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub

}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain fileter) throws IOException, ServletException {
    // TODO Auto-generated method stub
    request.setCharacterEncoding("GBK");
    HttpServletRequest req = (HttpServletRequest) request;

// response.setCharacterEncoding("GBK");
try{
fileter.doFilter(request, response);

}
catch(Exception e){
logger.error((String)req.getSession().getAttribute("user"),"doFilter(ServletRequest request=" + request
+ ", ServletResponse response=" + response
+ ") - [方法错误]", e);

        e.printStackTrace();
    }
}
public void destroy() {
    // TODO Auto-generated method stub

}

}

2个回答

com.sany.web.session.WebSession cannot be cast to java.lang.String
类型转换错误 应该用WebSession接的你用的是String
错误在etCharacterEncodingFilter.java:34

csuuniversity
Aioi 非常感动~~~ 感谢!!!
接近 5 年之前 回复
csuuniversity
Aioi 回复逝_去_的_光_阴: 主要奇怪的是 SVN导出的 本地调试不会出错 但是部署到服务器放入Tomcat就会出此错误 或者本地也会有此错误
接近 5 年之前 回复
u011376884
逝_去_的_光_阴 回复csuuniversity: 重写WebSession类的toString()方法 或者先用WebSession对象接一下req.getSession().getAttribute("user") 取出你需要的值 再写入logger
接近 5 年之前 回复
csuuniversity
Aioi 谢谢 不过req.getSession().getAttribute("user").toString() 后加载不会报错 但会是空白
接近 5 年之前 回复
u011376884
逝_去_的_光_阴 回复u011376884: 最好是能重写那个类的toString()方法
接近 5 年之前 回复
u011376884
逝_去_的_光_阴 回复csuuniversity: 我不知道你需要那个类里的什么属性,我建议改成req.getSession().getAttribute("user").toString()
接近 5 年之前 回复
csuuniversity
Aioi 回复逝_去_的_光_阴: 请问该如何改呢?
接近 5 年之前 回复
u011376884
逝_去_的_光_阴 回复csuuniversity: (String)req.getSession().getAttribute("user") 可能是这里吧 user获取的是WebSession类?
接近 5 年之前 回复
csuuniversity
Aioi 回复逝_去_的_光_阴: logger.error((String)req.getSession().getAttribute("user"),"doFilter(ServletRequest request=" + request
接近 5 年之前 回复
u011376884
逝_去_的_光_阴 回复csuuniversity: SetCharacterEncodingFilter类 34行代码是什么?
接近 5 年之前 回复
csuuniversity
Aioi 回复逝_去_的_光_阴: 你好 愚笨 还是没看明白 这是以前人写的 请问该如何修改纠正呢
接近 5 年之前 回复
u011376884
逝_去_的_光_阴 回复csuuniversity: SetCharacterEncodingFilter.java:34 前面是类 后面是行号
接近 5 年之前 回复
csuuniversity
Aioi 你好 知道是类型转换错误 可是具体是哪儿类型 转换错误? 很奇怪!
接近 5 年之前 回复
 (String)(req.getSession().getAttribute("user"))
csuuniversity
Aioi 谢谢! 不过还是报同样错误
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问