2009-03-27 26 views
0

今は私がdoFilter()で開いたソケットを持っているソケットを持っていて、サーバアプリケーションでは動作しません私は選択肢がありませんが、それを最初に入れてください。サーブレットフィルタ:ソケットをdoFilter()で参照する必要があります

私はoutSide.println( "test")を参照できるようにする必要があります。 doFilter()の中でif文が実行されるたびにサーバーアプリケーションに送ることができます。

HERESに私のコードは:

import java.net.*; 
import java.io.*; 
import java.util.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public final class IEFilter implements Filter 
{ 
    public void doFilter(ServletRequest request, ServletResponse response, 
    FilterChain chain) 

    throws IOException, ServletException 
    { 

    String browser = ""; 


     String blockInfo; 

     String address = request.getRemoteAddr(); 

    if(((HttpServletRequest)request).getHeader ("User-Agent").indexOf("MSIE") >= 0) 
     { 
      browser = "Internet Explorer"; 
     } 

    if(browser.equals("Internet Explorer")) { 

     BufferedWriter fW = new BufferedWriter(new FileWriter("C://logs//IElog.rtf")); 


     blockInfo = "Blocked IE user from:" + address; 

     response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 
     out.println("<HTML>"); 
     out.println("<HEAD>"); 
     out.println("<TITLE>"); 
     out.println("This page is not available - JNetProtect"); 
     out.println("</TITLE>"); 
     out.println("</HEAD>"); 
     out.println("<BODY>"); 
     out.println("<center><H1>Error 403</H1>"); 
     out.println("<br>"); 
     out.println("<br>"); 
     out.println("<H1>Access Denied</H1>"); 
     out.println("<br>"); 
     out.println("Sorry, that resource may not be accessed now."); 
     out.println("<br>"); 
     out.println("<br>"); 
     out.println("<hr />"); 
     out.println("<i>Page Filtered By JNetProtect</i>"); 
     out.println("</BODY>"); 
     out.println("</HTML>"); 

     //init.outSide.println("Blocked and Internet Explorer user"); 



      fW.write(blockInfo); 

      fW.newLine(); 

      fW.close(); 

    } else { 

     chain.doFilter(request, response); 


    } 
    } 

    public void destroy() 
    { 
     outsocket.close(); 
     outSide.close(); 
    } 

    public void init(FilterConfig filterConfig) 
    { 

    try 
    { 
    ServerSocket fs; 
    Socket outsocket; 
    PrintWriter outSide ; 

    outsocket = new Socket("Localhost", 1337); 
    outSide = new PrintWriter(outsocket.getOutputStream(), true); 

    }catch (Exception e){ System.out.println("error with this connection"); e.printStackTrace();} 

    } 
} 

答えて

0

別の可能性は、log4jのを使用することであろうと、それはソケットの取り扱いを処理しています。 log4jは、このフィルタからのログメッセージを他のログとは別のファイルに保存するように設定できます。 これは、コード内のソケットの必要性を完全に排除します。

関連する問題