2015-07-19 5 views
2

Так что я пытаюсь общаться с использованием сокетов TCP, создавая клиент на странице JSP, проблема заключается в том, что каждый раз, когда я отправляю форму на своей странице, она обновляет страницу и создает новый сокет клиента, стирающий информацию, которую я имел ранее (nomeUtilizador). Я искал способы отправки формы без обновления, и попробовал ее (AJAX), но она никогда не была разработана ...JSP-сокет без обновления страницы

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

<%    private void ClienteTCP(String host, int port) { 

       try { 
         s = new Socket(host, port); 
         System.err.println("Ligacao estabelecida"); 
         in = new ObjectInputStream(s.getInputStream()); 
         out = new ObjectOutputStream(s.getOutputStream()); 
         System.err.println("Streams criadas"); 
       } catch (UnknownHostException uhEx) { 
         System.err.println("UnknownHostException"); 
       } catch (IOException ioEx) { 

       } catch (Exception e) { 

       } 
     } 
       ClienteTCP("localhost", 6000); 
       String nomeUtilizador = (String) session.getAttribute("nomeUtilizador"); 
       String xmlUtilizador = "C:/Users/leonel/workspace/ParqueEstacionamento/WebContent/xml_clientes/" 
           + nomeUtilizador.replaceAll("\\s+", "") + ".xml"; 
       criarDocument(xmlUtilizador); 
       ArrayList<String> listaParques = getParques(); 
     %><form name="botoes" id="botoes" method="post" 
       action="parqueOnline.jsp" onsubmit="submitForm()"> 
       <input TYPE="HIDDEN" NAME="buttonName"> <input type="button" 
         name="botao" value="Estacionar" onclick="showDiv();"> <input 
         type="submit" name="botao" value="Pagar" onclick="pagar();"> 
       <input type="submit" name="botao" value="Sair" onclick="sair();"> 
       <br /> 
       <div id="escolherParque" style="display: none;" class="escolherParque"> 
         <label>Parques</label> <select name="parque"> 
           <option value=""></option> 
           <% 
             for (int i = 0; i < listaParques.size(); i++) { 
           %> 
           <option value=<%=listaParques.get(i)%>><%=listaParques.get(i)%></option> 
           <% 
             } 
           %> 
         </select> <input type="submit" name="estacionar" 
           value="Escolha o Parque onde quer estacionar.." 
           onclick="escolherParque();"> 
       </div> 
     </form> 

     <% 
       String botao = request.getParameter("buttonName"); 
       if (botao != null) { 
         //do more stuff %> 
+0

Что вы пытаетесь заархивировать? Как я знаю, код в JSP работает на стороне сервера. Поэтому, когда вы создаете сокет с помощью кода, который вы опубликовали, сокет фактически создан на вашем сервере приложений, а не на стороне клиента. Чтобы создать сокет на стороне клиента с помощью java, вы должны использовать апплет. Если вам нужна связь в реальном времени между вашим браузером и сервером, вы можете использовать [веб-сокет] (http://www.html5rocks.com/en/tutorials/websockets/basics/) или [веб-рабочий] (http: // www.w3schools.com/html/html5_webworkers.asp) –

+0

Спасибо за совет. – user3185775

ответ

0

Используя код, который вы представили, если переменная является переменной сеанса она будет по-прежнему доступны для следующего обновления. Единственная проблема заключается в том, что если сервер, отправляющий TCP-сообщения, знал эту переменную по общению, он больше не узнает об этом, потому что вы создали нового клиента. (учитывая, что вы используете параллельный сервер)

Решение снова отправляет эту переменную и программирует сервер для его получения.

Смежные вопросы