这是控制台打印的错误信息严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.filter_005fchinise_jsp._jspInit(filter_005fchinise_jsp.java:23)
at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:164)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:338)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.myfilter.Filter_log.doFilter(Filter_log.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.myfilter.ChiniseFilter.doFilter(ChiniseFilter.java:23)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)这是Filter类的源文件:
Filter_log.java
public class Filter_log implements Filter{
//声明一个log对象
private Log log=LogFactory.getLog(this.getClass());
//声明一个filterName变量,用来表示当前Filter名称
private String filterName;
public void init(FilterConfig config) throws ServletException {
//获取Filter名称,赋值给filterName变量
filterName=config.getFilterName();
//设置启动时记录日志
log.info("启动Filter:"+filterName);
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)req;
HttpServletResponse response=(HttpServletResponse)res;
//获取执行前的时间
long startTime=System.currentTimeMillis();
//获取访问的URI
String requestURI=request.getRequestURI();
//获取request请求中的所有地址栏参数
requestURI=request.getQueryString()==null?requestURI : (requestURI+"?"+request.getQueryString());
//调用doFilter方法,执行下一个Filter或Servlet
chain.doFilter(request, response);[/color[color=#FF0000]]//执行到这行发生了错误
//获取执行后的时间
long endTime=System.currentTimeMillis();
//获取消耗的总时间
log.info(request.getRemoteAddr()+"访问了"+requestURI+",总时间"+(endTime-startTime)+"毫秒。");
}
public void destroy() {
//销毁时记录日志
log.info("关闭Filter"+filterName);
}
}
java.lang.NullPointerException
at org.apache.jsp.filter_005fchinise_jsp._jspInit(filter_005fchinise_jsp.java:23)
at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:164)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:338)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.myfilter.Filter_log.doFilter(Filter_log.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.myfilter.ChiniseFilter.doFilter(ChiniseFilter.java:23)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)这是Filter类的源文件:
Filter_log.java
public class Filter_log implements Filter{
//声明一个log对象
private Log log=LogFactory.getLog(this.getClass());
//声明一个filterName变量,用来表示当前Filter名称
private String filterName;
public void init(FilterConfig config) throws ServletException {
//获取Filter名称,赋值给filterName变量
filterName=config.getFilterName();
//设置启动时记录日志
log.info("启动Filter:"+filterName);
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)req;
HttpServletResponse response=(HttpServletResponse)res;
//获取执行前的时间
long startTime=System.currentTimeMillis();
//获取访问的URI
String requestURI=request.getRequestURI();
//获取request请求中的所有地址栏参数
requestURI=request.getQueryString()==null?requestURI : (requestURI+"?"+request.getQueryString());
//调用doFilter方法,执行下一个Filter或Servlet
chain.doFilter(request, response);[/color[color=#FF0000]]//执行到这行发生了错误
//获取执行后的时间
long endTime=System.currentTimeMillis();
//获取消耗的总时间
log.info(request.getRemoteAddr()+"访问了"+requestURI+",总时间"+(endTime-startTime)+"毫秒。");
}
public void destroy() {
//销毁时记录日志
log.info("关闭Filter"+filterName);
}
}
<body>
<%
String username="无极";
String sex="男";
String addr="地球";
request.setAttribute("username",username);
request.setAttribute("sex",sex);
request.setAttribute("addr",addr);
request.getRequestDispatcher("filter_chinise_get.jsp").forward(request,response);
%>
</body>filter_chinise_get.jsp
<body>
username的值:<%=request.getAttribute("username") %> <br />
sex的值:<%=request.getAttribute("sex") %> <br />
addr的值:<%=request.getAttribute("addr") %>
</body>web.xml
<filter>
<filter-name>ChiniseFilter</filter-name>
<filter-class>com.myfilter.ChiniseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ChiniseFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>