这是错误报告:java.lang.NullPointerException: charsetName at java.lang.String.<init>(Unknown Source) at java.lang.String.<init>(Unknown Source) at org.apache.catalina.connector.Request.setCharacterEncoding(Request.java:1434) at org.apache.catalina.connector.RequestFacade.setCharacterEncoding(RequestFacade.java:305) at com.crinode.mbank.pmgt.basedata.ReqFilter.doFilter(ReqFilter.java:64) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Unknown Source) 这是我的监听器:
Long submid = new Long(-1);//-1表示列表菜单 Long mid = new Long(-1); MenuUri tmpUri = null; Menu tmpMenu = null;
HttpSession session = ((HttpServletRequest)request).getSession(); String name = request.getParameter("name"); User user = (User)session.getAttribute("user"); OpLog log = new OpLog();
at java.lang.String.<init>(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at org.apache.catalina.connector.Request.setCharacterEncoding(Request.java:1434)
at org.apache.catalina.connector.RequestFacade.setCharacterEncoding(RequestFacade.java:305)
at com.crinode.mbank.pmgt.basedata.ReqFilter.doFilter(ReqFilter.java:64)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)
这是我的监听器:
private String menuServiceName;
private String menuUriServiceName;
private String oplogServiceName;
private String extension;
private String rolePowerServiceName;
private String invalidUri;
private String login;
private String logout;
private String encoding;
private MenuserviceImpl menuserviceimpl;
private MenuUriserviceImpl menuUriserviceimpl;
private OpLogserviceImpl oplogserviceimpl;
private RolePowerserviceImpl rolePowerserviceimpl;
private FilterConfig filterConfig;
private HashMap userMap;
//Handle the passed-in FilterConfig
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("CharacterEncoding");
this.extension = filterConfig.getInitParameter("extension");
this.invalidUri = filterConfig.getInitParameter("invalidUri");
this.menuServiceName = filterConfig.getInitParameter("menuServiceName");
this.menuUriServiceName = filterConfig.getInitParameter("menuUriServiceName");
this.oplogServiceName = filterConfig.getInitParameter("oplogServiceName");
this.rolePowerServiceName = filterConfig.getInitParameter("rolePowerServiceName");
this.login = filterConfig.getInitParameter("login");
this.logout = filterConfig.getInitParameter("logout");
}
//Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {
request.setCharacterEncoding(this.encoding);
if (userMap==null)
{//初始化服务
ServletContext sc = ((HttpServletRequest)request).getSession().getServletContext();
WebApplicationContext wc = WebApplicationContextUtils.getWebApplicationContext(sc);
this.menuserviceimpl = (MenuserviceImpl)wc.getBean(this.menuServiceName);
this.menuUriserviceimpl = (MenuUriserviceImpl)wc.getBean(this.menuUriServiceName);
this.rolePowerserviceimpl = (RolePowerserviceImpl)wc.getBean(this.rolePowerServiceName);
this.oplogserviceimpl = (OpLogserviceImpl)wc.getBean(this.oplogServiceName);
}
String uri = ((HttpServletRequest)request).getRequestURI();
String path = ((HttpServletRequest)request).getRequestURI();
String visitPath = null;
if(uri!=null && uri.indexOf(extension)!=-1)
{
visitPath = path.substring(path.lastIndexOf("/")+1);
}
//如果有参数,则过滤掉参数
if (visitPath!=null && visitPath.indexOf("?")!=-1)
visitPath = visitPath.substring(0,visitPath.indexOf("?"));
System.out.println(new Timestamp(System.currentTimeMillis()).toString()+":-------------visistPath:"+visitPath);
//过滤action
boolean isLogin = false;
boolean isLogout = false;
if(uri!=null && uri.indexOf(this.login)!=-1 )
isLogin = true;
if(uri!=null && uri.indexOf(this.logout)!=-1)
isLogout = true;
Long submid = new Long(-1);//-1表示列表菜单
Long mid = new Long(-1);
MenuUri tmpUri = null;
Menu tmpMenu = null;
HttpSession session = ((HttpServletRequest)request).getSession();
String name = request.getParameter("name");
User user = (User)session.getAttribute("user");
OpLog log = new OpLog();
boolean haveLogin = false;
List userlist = LoginUseres.getInstance().getUsers();
if(user==null && name!=null)
{
for(int i=0;i<userlist.size();i++)
{
User tmpUser = (User)userlist.get(i);
System.out.println("============ user:"+tmpUser.getName());
System.out.println("============ user:"+name);
if(tmpUser.getName().equals(name))
haveLogin = true;
}
}
if (!isLogin && uri!=null && uri.indexOf(extension)!=-1)
}
{//用户登录成功,记录日志
String userAction = "登出";
tmpUri = (MenuUri)this.menuUriserviceimpl.findByUri(visitPath,ConstDef.STATUS_VALID);
tmpMenu = (Menu)this.menuserviceimpl.findByUri(visitPath,ConstDef.STATUS_VALID);
submid = new Long(-1);
if(tmpUri!=null)
{
userAction = tmpUri.getName();
submid = tmpUri.getId();
mid = tmpUri.getMid();
}
else if(tmpMenu!=null)
{
userAction = tmpMenu.getName();
mid = tmpMenu.getId();
}
log.setAction(userAction);
log.setContent("");
log.setContentid(user.getContentid());
log.setCustomer("");
log.setCustomerid(user.getCustomerid());
log.setProduct("");
log.setProductid(user.getProductid());
log.setTransfee("");
log.setTransfeeid(user.getTransfeeid());
log.setTranslog("");
log.setTranslogid(user.getTranslogid());
log.setVerinstruct("");
log.setVerinstructid(user.getVerinstructid());
log.setMenu(userAction);
log.setOptime(new java.sql.Timestamp(System.currentTimeMillis()));
log.setOrg(user.getOrg().getName());
log.setOrgid(user.getOrgid());
log.setUserid(user.getId());
log.setUsername(user.getName());
log.setRole(user.getRole().getName());
log.setHost(request.getRemoteHost());
log.setRoleid(user.getRoleid());
List powerList = this.rolePowerserviceimpl.findByRidSubmid(user.getRoleid(), mid, submid);
if(powerList!=null && powerList.size()>0 || isLogout)
log.setResp("ok");
else
log.setResp("X");
this.oplogserviceimpl.save(log);
if ("X".equals(log.getResp()))
((HttpServletResponse)response).sendRedirect(this.invalidUri);
}
}else if (isLogin && haveLogin)
{
log = new OpLog();
String userAction = "登陆";
if(tmpUri!=null)
userAction = tmpUri.getName();
else if(tmpMenu!=null)
userAction = tmpMenu.getName();
log.setAction(userAction);
log.setContent("");
log.setContentid(new Long(0));
log.setCustomer("");
log.setCustomerid(new Long(0));
log.setProduct("");
log.setProductid(new Long(0));
log.setTransfee("");
log.setTransfeeid(new Long(0));
log.setTranslog("");
log.setTranslogid(new Long(0));
log.setVerinstruct("");
log.setVerinstructid(new Long(0));
log.setMenu(userAction);
log.setOptime(new java.sql.Timestamp(System.currentTimeMillis()));
log.setOrg("");
log.setOrgid(new Long(0));
log.setUserid(new Long(0));
log.setUsername(name);
log.setRole("");
log.setRoleid(new Long(0));
log.setHost(request.getRemoteHost());
log.setResp("X");
this.oplogserviceimpl.save(log);
} filterChain.doFilter(request, response);
if (isLogin)
{
session = ((HttpServletRequest)request).getSession();
user = (User)session.getAttribute("user");
if (user!=null)
{//用户登录成功,记录日志
String userAction = "登陆";
if(tmpUri!=null)
userAction = tmpUri.getName();
else if(tmpMenu!=null)
userAction = tmpMenu.getName();
log.setAction(userAction);
log.setContent("");
log.setContentid(user.getContentid());
log.setCustomer("");
log.setCustomerid(user.getCustomerid());
log.setProduct("");
log.setProductid(user.getProductid());
log.setTransfee("");
log.setTransfeeid(user.getTransfeeid());
log.setTranslog("");
log.setTranslogid(user.getTranslogid());
log.setVerinstruct("");
log.setVerinstructid(user.getVerinstructid());
log.setMenu(userAction);
log.setOptime(new java.sql.Timestamp(System.currentTimeMillis()));
log.setOrg(user.getOrg().getName());
log.setOrgid(user.getOrgid());
log.setUserid(user.getId());
log.setUsername(user.getName());
log.setRole(user.getRole().getName());
log.setRoleid(user.getRoleid());
log.setHost(request.getRemoteHost());
log.setResp("ok");
this.oplogserviceimpl.save(log);
}
RolePower power = null;
}
} catch (ServletException sx) {
sx.printStackTrace();
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
} catch (Exception ex) {
ex.printStackTrace();
}
}
//Clean up resources
public void destroy() {
}
}