Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在我的Tomcat Servlet中实现WebSocket?_Java_Tomcat_Servlets_Websocket - Fatal编程技术网

Java 在我的Tomcat Servlet中实现WebSocket?

Java 在我的Tomcat Servlet中实现WebSocket?,java,tomcat,servlets,websocket,Java,Tomcat,Servlets,Websocket,我试图在我已经在工作的servlet中使用WebSocket。我的问题是,我使用“writer”类将HTML发布到broswer上,但我找不到类似的WebSocket类 我的servlet如下所示: @WebServlet("/TestServlet") public class TestServlet extends HttpServlet { private List<ISort> sortierListe = new ArrayList<ISort>(); pri

我试图在我已经在工作的servlet中使用WebSocket。我的问题是,我使用“writer”类将HTML发布到broswer上,但我找不到类似的WebSocket类

我的servlet如下所示:

@WebServlet("/TestServlet")

public class TestServlet extends HttpServlet {
private List<ISort> sortierListe = new ArrayList<ISort>();
private File file1;
private PrintWriter writer2;
private boolean sortFinished;
boolean bSubmitForFilenamePressedCopy;
BufferedReader in;
// private String sEingabe;
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public TestServlet() {
    super();    
    this.initSortierverfahren();
}

private void initSortierverfahren() {
    sortierListe.add(new BubbleSort());
    sortierListe.add(new QuickSort());
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {

[...]

PrintWriter writer = response.getWriter();
    writer2 = writer;
    writer.println("<html>");
    writer.println("<head><title>Text Sortieren!</title>");
    writer.println("</head>");

    writer.println("<body marginwidth='40' leftmargin='40' bgcolor='#E5E5E5'>");

    writer.println("<table bgcolor='#FFFFFF' height='100%' width='57%' border='0' cellpadding=10>");
    writer.println("<tr height='10%'>");
    writer.println("
[...]
@WebServlet(“/TestServlet”)
公共类TestServlet扩展了HttpServlet{
private List sortierListe=new ArrayList();
私有文件文件1;
私人印刷撰稿人2;
私有布尔排序完成;
布尔值b submitforfilenamepressedcopy;
缓冲读取器;
//私人弦长;
私有静态最终长serialVersionUID=1L;
/**
*@参见HttpServlet#HttpServlet()
*/
公共TestServlet(){
超级();
this.initSortierFahren();
}
私有void initSortierFahren(){
添加(新的BubbleSort());
添加(新的快速排序());
}
/**
*@参见HttpServlet#doGet(HttpServletRequest请求,HttpServletResponse
*(答复)
*/
受保护的无效数据集(HttpServletRequest请求,
HttpServletResponse响应)引发ServletException,IOException{
[...]
PrintWriter=response.getWriter();
writer2=编写器;
writer.println(“”);
writer.println(“Text Sortieren!”);
writer.println(“”);
writer.println(“”);
writer.println(“”);
writer.println(“”);
writer.println(“
[...]
代码太长,无法发布所有内容,但Servlet基本上创建了一个表单,我可以在其中输入.txt文件的路径。然后,txt文件将按bubblesort或quicksort进行排序


我的问题是:如何在WebSocket中使用这段代码而不必用javascript重写所有内容?我认为,只要一些基本的入门帮助就会对我有很大帮助。提前谢谢。

首先,如果你想使用tomcat的WebSocket,你应该扩展相应的基类WebSocketServlet

第二,我不认为在你的情况下使用websocket是值得的。websocket适用于需要实时交互的应用程序。你的显然不需要它

如果您仍然想这样做,只需创建一些简单的javascript,将您的html写入正文中

websocket = new WebSocket(wsUri); 
websocket.onmessage = function(evt) { 
  document.body.innerHtml += evt.data
};

但正如我所说的,我认为这样的代码没有任何用处。

在您从普通servlet迁移到websocket之前,请记住一些事情

  • 使用最新的ApacheTomcat版本。Plder版本不支持WebSocket。(我使用的是7.0.42版本)
  • 您不能简单地用WebSocket替换您的Servlet。两者的用途完全不同。有关详细信息,请用谷歌搜索它

  • 提供服务器端和客户端示例代码。您应该参考它开始使用。

    感谢asnwer。我需要使用WebSocket,因为我必须将它作为一项任务来了解更多有关它们的信息。(最后,我希望在排序过程中使用加载微调器)现在我收到了您发布的JavaScritp,但如何将HTML数据从服务器发送到页面?在我的servlet中,我使用了writer.println,但这不再有效。而使用outbound.writeTextData,我只能发送字符数据?顺便说一句,我对java非常陌生,很抱歉有这么多问题。@user1677568您应该将HTML作为字符数据发送,即转换为字符串到CharBuffer。您可以在此处找到一个示例: