实现HttpServletResponse的BaseResponse,因为篇幅原因,HttpServletResponse很多接口实现没写,只需要导入空方法即可
package com.zibra.base;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
public class BaseResponse implements HttpServletResponse {
private PrintWriter printWriter;
public BaseResponse(OutputStream outputStream) {
printWriter = new PrintWriter(outputStream, true);
}
@Override
public PrintWriter getWriter() throws IOException {
return printWriter;
}
}
实现HttpServletRequest的BaseRequest,因为篇幅原因,HttpServletRequest很多接口实现没写,只需要导入空方法即可
package com.zibra.base;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
public class BaseResponse implements HttpServletResponse {
private PrintWriter printWriter;
public BaseResponse(OutputStream outputStream) {
printWriter = new PrintWriter(outputStream, true);
}
@Override
public PrintWriter getWriter() throws IOException {
return printWriter;
}
}
添加测试用servlet输出类
package com.zibra.server.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setHeader("Pragma", "No-cache");
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println("<head><title>Test servlet</title></head>");
out.println("<body>");
out.println("<h1>Test servlet</h1>");
out.println("</body></html>");
out.flush();
}
}
修改线程实现类调用servlet
package com.zibra.server.thread;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.servlet.Servlet;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import com.zibra.base.BaseRequest;
import com.zibra.base.BaseResponse;
import com.zibra.server.servlet.TestServlet;
public class SocketThread implements Runnable {
// 线程参数
private Socket socket;
public SocketThread(Socket socket) {
this.socket = socket;
}
public void run() {
try {
System.out.println("New connection accepted " + socket.getInetAddress() + ":" + socket.getPort());
ServletRequest request = new BaseRequest(socket.getInputStream());
ServletResponse response = new BaseResponse(socket.getOutputStream());
Servlet servlet = new TestServlet();
servlet.service(request, response);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 断开连接
if (socket != null) {
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}