对于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