给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的基于Jave的Web服务工作机制(6),过去的都会过去,迎接崭新的开始,释放更美好的自己。
【 tulaoshi.com - Web开发 】
parseUri 方法从请求行那里得到URI。Listing 1.3 展示了parseUri 方法的用途。 parseUri 减缩请求中的第一个和第二个空格来获得URI。
Listing 1.3. The Request class' parseUri method
private String parseUri(String requestString) {
int index1, index2;
index1 = requestString.indexOf(' ');
if (index1 != -1) {
index2 = requestString.indexOf(' ', index1 + 1);
if (index2 index1)
return requestString.substring(index1 + 1, index2);
}
return null;
}
Response类
Response表示一个HTTP响应。它的构造函数接受一个OutputStream对象,比如下面的:
public Response(OutputStream output) {
this.output = output;
}
Response 对象被HttpServer类的await方法构造,该方法被传递的参数是从socket那里得到的OutputStream对象。
Response类有两个公共方法: setRequest和sendStaticResource. setRequest方法传递一个Request对象给Response对象。Listing 1.4中的代码显示了这个:
Listing 1.4. The Response class' setRequest method
public void setRequest(Request request) {
this.request = request;
}
sendStaticResource 方法用来发送一个静态资源,比如HTML文件。Listing 1.5给出了它的实现过程:
Listing 1.5. The Response class' sendStaticResource method
public void sendStaticResource() throws IOException {
byte[] bytes = new byte[BUFFER_SIZE];
FileInputStream fis = null;
try {
File file = new File(HttpServer.WEB_ROOT, request.getUri());
if (file.exists()) {
fis = new FileInputStream(file);
int ch = fis.read(bytes, 0, BUFFER_SIZE);
while (ch != -1) {
output.write(bytes, 0, ch);
ch = fis.read(bytes, 0, BUFFER_SIZE);
}
}
else {
// file not found
String errorMessage = "HTTP/1.1 404 File Not Foundrn" +
"Content-Type: text/htmlrn" +
"Content-Length: 23rn" +
"rn" +
"h1File Not Found/h1";
output.write(errorMessage.getBytes());
}
}
catch (Exception e) {
// thrown if cannot instantiate a File object
System.out.println(e.toString() );
}
finally {
if (fis != null)
fis.close();
}
}
来源:http://www.tulaoshi.com/n/20160219/1605995.html
看过《基于Jave的Web服务工作机制(6)》的人还看了以下文章 更多>>