package com.day5; import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date; public class Tomcat { /**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception { //申请注册8080套接字
ServerSocket server=new ServerSocket(8080); System.out.println("开始接受请求...");
//接受客户端请求
Socket socket = server.accept(); Response response=new Response(socket); //设置网页DOM数据
response.write("<title>Thinking in Java</title>");
response.write("<h1>liu shi hua</h1>");
response.write("<h2 style='color:red;'>771541213@qq.com</h2>"); response.pushToClient(); socket.close();
server.close(); } }
package com.day5; import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Date; /**
* 简单封装Response对象
* @author 刘诗华 liu shi hua...
*
*/
public class Response { //换行符
private final String CRLF = "\r\n";
//客户端socket对象
private Socket socket;
//缓冲字符流输出对象
private BufferedWriter bw=null;
//正文内容长度
private int len;
//响应头
private StringBuilder headerStr;
//正文内容
private StringBuilder content; public Response()
{
len=0;
this.headerStr=new StringBuilder();
this.content=new StringBuilder();
} public Response(Socket socket) throws Exception
{
this();
this.socket=socket;
//字符输出流对象
OutputStream out = this.socket.getOutputStream();
//将字节输出流转换成字符输出流
OutputStreamWriter writer = new OutputStreamWriter(out); this.bw=new BufferedWriter(writer);
} //构造响应报文
public void setHeader()
{
this.headerStr.append("HTTP/1.1 200 OK").append(CRLF);
this.headerStr.append("Server:Apache/2.4.10 (Win32) PHP/5.3.28").append(CRLF);
this.headerStr.append("Date:").append(new Date()).append(CRLF);
this.headerStr.append("Content-Type:text/html").append(CRLF);
this.headerStr.append("Content-Length: ").append(len).append(CRLF);
this.headerStr.append(CRLF);
} //设置正文内容信息
public Response write(String str)
{
//计算正文内容长度
len+=(str+CRLF).getBytes().length;
this.content.append(str).append(CRLF);
return this;
} //发送数据到客户端
public void pushToClient() throws Exception
{
//第一步,构造响应头
setHeader();
//第二步,追加正文内容
this.bw.append(this.headerStr.toString());
this.bw.append(this.content.toString()); this.bw.flush();
//关闭资源
this.bw.close();
this.socket.close();
}
}
执行结果: