Сокет JSP отправляет строку только один раз - PullRequest
0 голосов
/ 27 марта 2009

Всем привет и заранее спасибо.

Это последняя попытка выяснить, в чем проблема или найти лучшее решение.

Я использую фильтр JSP для фильтрации веб-доступа к веб-серверу tomcat.

У меня есть клиент, сервер и фильтр.

Клиент и фильтр открывают сокеты, которые сервер получает.

Я слышал, что открытие сокета сервера в файлах JSP - нет-нет, но я не могу придумать лучшего способа заставить его отправить строку в серверное программное обеспечение, если вы знаете что-либо, скажите

Но проблема в том, что когда страница фильтруется, она отправляет строку только изначально, а не в любое время после этого

У меня открыт сокет в фильтре, а получатель в программе сервера находится в потоке, поэтому он должен принимать и печатать строку при получении.

Весь мой код здесь заархивирован, для запуска вам понадобится tomcat.

http://www.easy -share.com / 1904209945 / JNetProtect.zip

Мне очень жаль за длину и сложность этого вопроса, пожалуйста, если есть какой-нибудь лучший способ сделать это, говорите,

Ответы [ 2 ]

1 голос
/ 27 марта 2009

Из вашего объяснения мне кажется, что вам не хватает некоторых важных понятий. Пожалуйста, извините, если это звучит оскорбительно для вас.

Страница JSP обрабатывается на сервере, что означает, что если вы открываете сокет в своем JSP, это не означает, что клиент открывает сокет.

Однако вы не можете использовать шаблон команды, возможно, с использованием Servlet Filter, чтобы направить ваш запрос к определенному объекту Command, а затем выполнить там сокет.

0 голосов
/ 27 марта 2009

Ну, я не получил никаких исключений,

Но что бы вы посоветовали мне сделать с этим фильтром, чтобы я мог сделать outSide.println () в DoFilter ()?

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
  {
    ServerSocket fs;
    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>");

       // 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
    {

    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();
   }

  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...