I have one index.jsp file, one connect.java servlet and one Server.java file which creates a chat server. 
index.jsp
<form action="connect">
    <textarea name="chat-window" ></textarea>
    <input name="port-number" placeholder="enter-port"/>
    <select name="action-type">
        <option> start </option>
        <option> stop </option>
        <option> refresh </option>
    </select>
    <button name="apply-btn" type="submit"> apply </button>
</form>
connect servlet
// creates new thread(runnable) to run Server.java and 
// passes portNumber, printWriter object generated by response.getWriter() to Server.java
Server.java
// creates serverSocket on portNumber
try {
    serverSocket = new ServerSocket(portNumber); 
} catch (IOException e) {
    showException("Server.startRunning(): new ServerSocket() ", e);
}
printWriter.println("Server is online at " + portNumber + " \n");
It prints Server is online at XXXX
But, after this, i think printWriter becomes unusable, maybe entire link of index.jsp page to threaded Server.java object gets broken. Because, form action="connect" is completely performed and server is started and it doesn't wait for clients to get connected.
now, if i add following to Server.java
while(true) {
    try {
        clientSocket = serverSocket.accept();
        printWriter.println("Client Connected.");
        // JOptionPane.showMessageDialog("Client Connected.", null);
    } catch() {
        // Exception handling mechanism
    }
}
and if, now, client connects to Server, printWriter statement doesn't print anything (maybe because the actual web-page needs to be refreshed, but why? how can i make it dynamic if this is the problem? ).
I can verify that client gets connected successfully because if i uncomment the JOptionPane statement, it shows when a client gets connected. So, no issues on client-side.
How can i make the printWriter statement work? Somehow, keep the connection between JSP and Server.java alive. Make the Servlet/JSP continuously listen to Server.java
- I didn't have a perfect title for this question.
- If this is impossible, kindly write an alternative.


 
     
    