servlet中加入socket

本文介绍了一个简单的Servlet与Socket通信的实例。通过创建一个Servlet,它不仅能够接收来自客户端的Socket消息,还能每秒刷新页面显示当前时间。该示例包括了完整的Java代码和web.xml配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于web是一个白痴级的人,现在用到了前端的知识,只能边学边用,做做笔记。


现在需要在servlet中写一个socket与其他程序通信。一个非常简单的demo:控制台输出客户端发来的信息,这个servlet还每秒刷新一次网页,输出时间。

如下是servlet的源码HelloWorld.java:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.net.*;

class SocketServer extends Thread
{
	private Socket socket;
	public SocketServer(Socket socket)
	{
		this.socket = socket;
	}

	public void run()
	{
		String output = "";
		try
		{
			BufferedReader bfr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			PrintWriter pw = new PrintWriter(socket.getOutputStream());
			String line = null;
			line = bfr.readLine();
			output = "server send====================";
			pw.println(output);
			pw.flush();
			bfr.close();
			pw.close();
			socket.close();
		}
		catch (IOException ioex)
		{
			ioex.printStackTrace();
		}
	}
}

public class HelloWorld extends HttpServlet {
	private String message;

	public void init() throws ServletException
	{
		System.out.println("=================hello world=================");
		new Thread() {
			public void run()
			{
				try
				{
					ServerSocket server = new ServerSocket(30000);
					Socket socket = null;
					while (true)
					{
						socket = server.accept();
						SocketServer ss = new SocketServer(socket);
						ss.start();
					}
				}
				catch (IOException ex)
				{
					System.out.println(ex.getMessage());
				}
			}
		}.start();
		System.out.println("_______________________hello world___________________________");
  }
  
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      response.setIntHeader("Refresh", 1);
      response.setContentType("text/html");
	  response.setHeader("content-type","text/html;charset=gb2312");

      Calendar calendar = new GregorianCalendar();
      String am_pm;
      int hour = calendar.get(Calendar.HOUR);
      int minute = calendar.get(Calendar.MINUTE);
      int second = calendar.get(Calendar.SECOND);
      if(calendar.get(Calendar.AM_PM) == 0)
        am_pm = "AM";
      else
        am_pm = "PM";
 
      String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
    
      PrintWriter out = response.getWriter();
      String title = "使用 Servlet 自动刷新页面";
      String docType =
      "<!doctype html public \"-//w3c//dtd html 4.0 " +
      "transitional//en\">\n";
      out.println(docType +
        "<html>\n" +
        "<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/> <title>" + title + "</title></head>\n"+
        "<body bgcolor=\"#f0f0f0\">\n" +
        "<h1 align=\"center\">" + title + "</h1>\n" +
        "<p>当前时间是:" + CT + "</p>\n");
  }
  
  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
      throws ServletException, IOException {
     doGet(request, response);
  }

  
  public void destroy()
  {
  }
}
web.xml配置:

<servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
		<load-on-startup>0</load-on-startup> 
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>

这样,通过socket,这个servlet可以接收到其他程序第一次发来的socket消息了。


参考:http://blog.youkuaiyun.com/veverrr/article/details/7085636

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值