没有刷新页面的JSP套接字

时间:2015-07-19 11:59:16

标签: java jsp sockets

所以我尝试使用TCP套接字在JSP页面上创建客户端进行通信,我遇到的问题是,每次我在页面中提交表单时,它都会刷新页面并创建一个新的客户端套接字,删除我以前的信息(nomeUtilizador)。我搜索了提交表单的方法而没有刷新,并尝试了它(AJAX)但它实际上从未实现过......

也许还有其他方法可以解决这个问题,比如让它只创建一次套接字......或者变量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 %>

1 个答案:

答案 0 :(得分:0)

如果变量是会话变量,则使用您提交的代码,它仍然可用于下一次刷新。唯一的问题是,如果您发送TCP消息的服务器通过通信知道该变量,它将不再知道它,因为您创建了一个新客户端。 (考虑到您正在使用并发服务器)

解决方案是再次发送该变量,并对服务器进行编程以接收它。