-3

Tomcat 7 でのフィルタの実装に問題がありました。ウェルカム ページがありますindex.jsp。そして、フィルターなしで問題なく動作しました。しかし、小さなフィルターを追加すると、404-Not Foundエラーが発生します。
次のように、(/WEB-INF/classes/filt/Background.java に) フィルター クラスがあります。

package filt;
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 java.io.*;
import java.util.*;
import java.net.*;

public class Background implements Filter {

    private FilterConfig filterConfig;

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
        throws IOException, ServletException {
try
{
FileWriter fstream = new FileWriter("out.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write("Hello Java");
out.close();
}
catch(Exception e)
{
System.out.println(e);
}
filterChain.doFilter(request, response);
}

public FilterConfig getFilterConfig() {
return filterConfig;
}

public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}

public void destroy() {}

}

そして私の web.xml :

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee">
  <application>insights</application>
  <version>1</version>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
    <filter-name>Backgd</filter-name>
    <filter-class>filt.Background</filter-class>
</filter>
<filter-mapping>
    <filter-name>Backgd</filter-name>
    <url-pattern>/index.jsp</url-pattern>
</filter-mapping>
</web-app>

ログからのエラー:

SEVERE: Exception starting filter Backgd
java.lang.ClassNotFoundException: filt.Background

今でも web.xml のフィルター部分を削除するとうまくいきます。問題はフィルターにあります。
エラーの原因は何ですか? フィルタの実装に間違いはありませんか?

4

2 に答える 2

1

あなたのフィルターコードは奇妙です.hello worldをファイルに書き込むだけで、リクエストをそのまま続行できます。

catalina.out で略奪して、メッセージがあるかどうかを確認してください。また、フィルターによって生成されたファイルが書き込まれていることを確認してください。

よろしく

于 2012-08-17T12:50:37.803 に答える