我是靠谱客的博主 虚幻云朵,最近开发中收集的这篇文章主要介绍java封装request_java webserver-封装request请求协议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

封装请求协议:获取method uri以及请求参数

public class Request {

//协议信息

private String requestInfo;

//请求方式

private String method;

//请求的uri

private String url;

//请求的参数

private String queryStr;

public Request(InputStream is)

{

byte[] datas=new byte[1024*1024];

int len = 0;

try {

len=is.read(datas);

this.requestInfo =new String(datas,0,len);

System.out.println(requestInfo);

} catch (IOException e) {

e.printStackTrace();

return;

}

//分解字符串

parseRequestInfo();

}

public Request(Socket client) throws IOException

{

this(client.getInputStream()); //构造器的相互调用,只能放在首行

}

private void parseRequestInfo()

{

System.out.println("----分解----");

//获取请求方式

System.out.println("1、获取请求方式:开头到第一个/之间");

this.method=this.requestInfo.substring(0,this.requestInfo.indexOf("/")).toLowerCase();

//获取url

System.out.println("2、获取url:第一个/到HTTP/第一个字母之间");

System.out.println("---可能包含请求参数?前面的为url");

//url:获取第一个/的位置

int startIdx1=this.requestInfo.indexOf("/")+1; //要/之后的内容

//url:获取HTTP/的第一个字母的位置

int endIdx2=this.requestInfo.indexOf("HTTP/"); //返回第一个字母的位置

//url:分割字符串

this.url=this.requestInfo.substring(startIdx1,endIdx2);

//获取?的位置

int queryIdx=this.url.indexOf("?"); //大于零表示存在

if(queryIdx>0)

{

String[] urlArray=this.url.split("\?");//必须转义

this.url=urlArray[0];

queryStr=urlArray[1]; //请求参数

}

System.out.println(this.url);

}

}

Server:

public class Server04 {

private ServerSocket serverSocket ;

public static void main(String[] args) {

Server04 server = new Server04();

server.start();

}

//启动服务

public void start() {

try {

serverSocket = new ServerSocket(8888);

receive();

} catch (IOException e) {

e.printStackTrace();

System.out.println("服务器启动失败....");

}

}

//接受连接处理

public void receive() {

try {

Socket client = serverSocket.accept();

System.out.println("一个客户端建立了连接....");

//获取请求协议

Request request=new Request(client);

//关注了内容

Response response=new Response(client); //创建好了输出流

response.print(""); //通过输出流输出

response.print("

");

response.print("

");

response.print("服务器响应成功");

response.print("

");

response.print("");

response.print("

");

response.print("shsxt server终于回来了。。。。");

response.print("");

response.print("");

//关注了状态码

response.pushToBrowser(200);

} catch (IOException e) {

e.printStackTrace();

System.out.println("客户端错误");

}

}

//停止服务

public void stop() {

}

}

最后

以上就是虚幻云朵为你收集整理的java封装request_java webserver-封装request请求协议的全部内容,希望文章能够帮你解决java封装request_java webserver-封装request请求协议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部