package com.socket.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MyHttpServer3 {
public static void main(String[] args) {
try{
ServerSocket serverSocket=new ServerSocket(8880);
while(true){
Socket clientSocket=serverSocket.accept();
InputStream inStream=clientSocket.getInputStream();
InputStreamReader inReader=new InputStreamReader(inStream);
BufferedReader buffReader=new BufferedReader(inReader);
String line=buffReader.readLine();
if(line==null){
buffReader.close();
inReader.close();
inStream.close();
continue;
}
System.out.println("客户端请求:"+line);
String filename=line.split(" ")[1];
System.out.println("读取"+filename);
OutputStream outStream=clientSocket.getOutputStream();
OutputStreamWriter outWriter=new OutputStreamWriter(outStream);
outWriter.write("HTTP/1.1 200 OK\r\n");
outWriter.write("\r\n");
outWriter.flush();
if(filename.contains("?")){
if(filename.startsWith("/add?")){
Pattern pattern=Pattern.compile("i=(\\d+)&j=(\\d+)");
Matcher matcher=pattern.matcher(line);
if (matcher.find()) {
int i=Integer.parseInt(matcher.group(1));
int j=Integer.parseInt(matcher.group(2));
int r=i+j;
outWriter.write("<html><head></head><body>");
outWriter.write(i+"+"+j+"="+r);
outWriter.write("</body>");
}
}
else if(filename.startsWith("/login?")){
Pattern pattern = Pattern.compile("username=(.+?)&password=(.+?) HTTP/1.1");
Matcher matcher = pattern.matcher(line);//GET /login?username=admin&password=123 HTTP/1.1
if(matcher.find()){
String username = matcher.group(1);
String password = matcher.group(2);
outWriter.write("<html><head></head><body>");
if(username.equals("admin")&&password.equals("admin")){
outWriter.write("登录成功");
}
else{
outWriter.write("登录失败");
}
outWriter.write("</body></html");
}
}
else if(filename.startsWith("/showUsers")){
outWriter.write("<html><head></head><body>");
outWriter.write("<table><thead><tr><td>Id</td><td>UserName</td><td>Password</td></tr></thead>\r\n");
outWriter.write("<tbody>\r\n");
try{
ResultSet rs=JdbcUtils.executeQuery("select * from T_Users");
while(rs.next()){
int id=rs.getInt("Id");
String username=rs.getString("UserName");
String password=rs.getString("Password");
outWriter.write("<tr><td>"+id+"</td><td>"+username+"</td><td>"+password+"</td></tr>\r\n");
}
}catch(SQLException e){
e.printStackTrace();
}
outWriter.write("</tbody></table>\r\n");
outWriter.write("</body></html");
}
}
else{
File file=new File("F:\\JavaWorkspace\\MyWeb", filename);
if(file.exists()&&file.isFile()){
FileInputStream fileInputStream=new FileInputStream(file);
copy(fileInputStream,outStream);
fileInputStream.close();
}
else{
outWriter.append("没有找到");
}
}
outWriter.close();
outStream.close();
clientSocket.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
public static void copy(InputStream inStream,OutputStream outStream) throws IOException{
byte[] bytes=new byte[1024];
int len;
while((len=inStream.read(bytes))>0){
outStream.write(bytes, 0, len);
}
}
}
转载请注明原文地址: https://ju.6miu.com/read-2651.html