Listing 2.2. HttpServer1 類的 await 方法
public void await() {
ServerSocket serverSocket = null;
int port = 8080;
try {
serverSocket = new ServerSocket(port, 1,
InetAddress.getByName("127.0.0.1"));
}
catch (IOException e) {
e.printStackTrace();
System.exit(1);
}
// 循環,等待一個請求
while (!shutdown) {
Socket socket = null;
InputStream input = null;
OutputStream output = null;
try {
socket = serverSocket.accept();
input = socket.getInputStream();
output = socket.getOutputStream();
// 創建請求對象并解析
Request request = new Request(input);
request.parse();
// 創建回應對象
Response response = new Response(output);
response.setRequest(request);
//檢測是否是 servlet 或靜態資源的請求
//servlet 請求以 "/servlet/" 開始
if (request.getUri().startsWith("/servlet/")) {
ServletProcessor1 processor = new ServletProcessor1();
processor.process(request, response);
}
else {
StaticResourceProcessor processor =
new StaticResourceProcessor();
processor.process(request, response);
}
// 關閉socket
socket.close();
//檢測是否前面的 URI 是一個 shutdown 命令
shutdown = request.getUri().equals(SHUTDOWN_COMMAND);
}
catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
public Object getAttribute(String attribute) {
return null;
}
public Enumeration getAttributeNames() {
return null;
}
public String getRealPath(String path) {
return null;
}public PrintWriter getWriter() {
// autoflush is true, println() will flush,
// but print() will not.
writer = new PrintWriter(output, true);
return writer;
}Listing 2.3.StaticResourceProcessor 類的 process方法。
public void process(Request request, Response response) {
try {
response.sendStaticResource();
}
catch (IOException e) {
e.printStackTrace();
}
}
petrel ,java 愛好者,在深圳從事 java 和數據庫的開發工作,喜愛各項運動!可以通過petrel.zhang@ccjk.com 與她聯系.也可以點擊http://www.matrix.org.cn/user_view.asp?username=petrel查看她的信息.進入討論組討論。
(出處:http://m.survivalescaperooms.com)
新聞熱點
疑難解答