commit
57093ddd8b
@ -0,0 +1,30 @@
|
||||
### IntelliJ IDEA ###
|
||||
out/
|
||||
!**/src/main/**/out/
|
||||
!**/src/test/**/out/
|
||||
.idea
|
||||
/*.iml
|
||||
### Eclipse ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
bin/
|
||||
!**/src/main/**/bin/
|
||||
!**/src/test/**/bin/
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>This is Index Page.</h1>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,40 @@
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
public class MyHttpRequest {
|
||||
private InputStream inputStream;
|
||||
private String uri;
|
||||
|
||||
public MyHttpRequest(InputStream inputStream) {
|
||||
this.inputStream = inputStream;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析流
|
||||
*/
|
||||
public void parse(){
|
||||
try {
|
||||
byte[] bytes = new byte[1024];
|
||||
inputStream.read(bytes);
|
||||
String request = new String(bytes);
|
||||
parseUri(request);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求判断
|
||||
*/
|
||||
public void parseUri(String request) {
|
||||
int index1,index2;
|
||||
index1 = request.indexOf(" ");//找空格下标
|
||||
index2 = request.indexOf(" ",index1+1);//找空格下标2
|
||||
uri = request.substring(index1+1,index2);//输出资源位置
|
||||
System.out.println(uri);
|
||||
}
|
||||
|
||||
public String getUri() {
|
||||
return this.uri;
|
||||
}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
import java.io.*;
|
||||
|
||||
public class MyHttpResponse {
|
||||
private int statusCode;
|
||||
private String statusMessage;
|
||||
|
||||
private OutputStream outputStream;
|
||||
|
||||
public MyHttpResponse(OutputStream outputStream){
|
||||
this.outputStream = outputStream;
|
||||
}
|
||||
|
||||
public void sendRedirect(String uri){
|
||||
//判断资源是否存在
|
||||
// 不存在返回404
|
||||
// 存在返回目标资源
|
||||
File file = new File(System.getProperty("user.dir")+"/WebContent" + uri);
|
||||
if (file.exists()){
|
||||
try {
|
||||
FileInputStream fileInputStream = new FileInputStream(file);
|
||||
byte[] bytes = new byte[(int)file.length()];
|
||||
fileInputStream.read(bytes);
|
||||
String result = new String(bytes);
|
||||
// System.out.println(result);
|
||||
String response = getResponseMessage("200,",result);
|
||||
this.outputStream.write(response.getBytes());
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
}else {
|
||||
try {
|
||||
String error = getResponseMessage("404","404 File Not Found!");
|
||||
this.outputStream.write(error.getBytes());
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getResponseMessage(String code, String message){
|
||||
return "HTTP/1.1 " + code + "\r\n" +
|
||||
"Content-Type: text/html\r\n" +
|
||||
"Content-Length: " + message.length() +
|
||||
"\r\n" +
|
||||
"\r\n" +
|
||||
message;
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
|
||||
public class MyHttpServer {
|
||||
private int port = 8080;
|
||||
|
||||
public void receiving()
|
||||
{
|
||||
try{
|
||||
//create socket service
|
||||
ServerSocket serverSocket = new ServerSocket(port);
|
||||
while(true){
|
||||
//获取连接对象
|
||||
Socket socket = serverSocket.accept();
|
||||
//获取链接对象输入流
|
||||
InputStream inputStream = socket.getInputStream();
|
||||
//创建request
|
||||
MyHttpRequest request = new MyHttpRequest(inputStream);
|
||||
//解析请求
|
||||
request.parse();
|
||||
//创建响应
|
||||
OutputStream outputStream = socket.getOutputStream();
|
||||
MyHttpResponse response = new MyHttpResponse(outputStream);
|
||||
//进行响应
|
||||
response.sendRedirect(request.getUri());
|
||||
|
||||
}
|
||||
//loop accept requests
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("server startup successfully");
|
||||
MyHttpServer server = new MyHttpServer();
|
||||
server.receiving();
|
||||
}
|
||||
}
|
Loading…
Reference in new issue