时间:2015-04-03 来源:

java实现一个简单的Web服务器 【Web前端】

Web服务器也称为超文本传输协议服务器网页外包接活,使用http与其客户端进行通信,网页外包接活基于java的web服务器会使用两个重要的类,网页切图价格

应用程序的入口在HttpServer类中,div+css制作main()方法创建一个HttpServer实例,div+css报价然后调用其await()方法,兼职手机网页制作顾名思义,html静态页面制作await()方法会在指定端口

*Response

做太多的工作,web切图报价parseUri()方法将URI存储在变量uri中,psd转html调用公共方法getUri()会返回请求的uri.

java.net.Socket类和java.net.ServerSocket类,html切图制作并基于发送http消息进行通信.

现在启动该WEB服务器网页外包接活,并请求index.html静态页面.

的原始数据.

HttpServer:

任何头信息到浏览器,网页外包接活如日期或者cookies等.

该应用程序仅发送位于指定目录的静态资源的请求web前端制作,如html文件和图像,web前端制作它也可以将传入到的http请求字节流显示到控制台承接网页制作,但是,div前端切图它并不发送

现在在webroot中创建一个html页面web切图报价,源码如下:

方法用于发送一个静态资源到浏览器符合w3c标准,index2; index1=requestString.indexOf(" "); if(index1!=-1){ index2=requestString.indexOf(" ",index2); } } return null; } public String getUri(){ return this.uri; } } Request类表示一个HTTP请求web前端制作,可以传递InputStream对象来创建Request对象,web前端制作可以调用InputStream对象中的read()方法来读取HTTP请求

这个简单的Web服务器会有以下三个类:

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>Hello World!</h1> </body> </html>

Response类有两个公共方法:setRequest()和sendStaticResource(),setRequest()方法会接收一个Request对象为参数,兼职手机网页制作sendStaticResource()

*Request

<span style="font-size:10px;">package cn.com.server; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; /** * HTTP Response = Status-Line * *(( general-header | response-header | entity-header ) CRLF) * CRLF * [message-body] * Status-Line=Http-Version SP Status-Code SP Reason-Phrase CRLF * */ public class Response { private static final int BUFFER_SIZE=1024; Request request; OutputStream output; public Response(OutputStream output){ this.output=output; } public void setRequest(Request request){ this.request=request; } public void sendStaticResource()throws IOException{ byte[] bytes=new byte[BUFFER_SIZE]; FileInputStream fis=null; try { File file=new File(HttpServer.WEB_ROOT,0, 0, 0, BUFFER_SIZE); } }else{ //file not found String errorMessage="HTTP/1.1 404 File Not Found\r\n"+ "Content-Type:text/html\r\n"+ "Content-Length:23\r\n"+ "\r\n"+ "<h1>File Not Found</h1>"; output.write(errorMessage.getBytes()); } } catch (Exception e) { System.out.println(e.toString()); }finally{ if(fis!=null){ fis.close(); } } } }</span><span style="font-size:24px;"> </span> Response对象在HttpServer类的await()方法中通过传入套接字中获取的OutputStream来创建.

下面为这几个类的源码:

上述源码中的parse()方法用于解析Http请求的原始数据,div+css制作parse()方法会调用私有方法parseUrI()来解析HTTP请求的URI,除此之外,兼职手机网页制作并没有

所对应的控制台的输出:

Request:

*HttpServer

Response:

如此web切图报价,WEB_ROOT is the "webroot" directory under the * working directory. * the working directory is the location in the file system * from where the java command was invoke. */ public static final String WEB_ROOT=System.getProperty("user.dir")+File.separator+"webroot"; private static final String SHUTDOWN_COMMAND="/SHUTDOWN"; private boolean shutdown=false; public static void main(String[] args) { HttpServer server=new HttpServer(); server.await(); } public void await(){ ServerSocket serverSocket=null; int port=8080; try { serverSocket=new ServerSocket(port,InetAddress.getByName("127.0.0.1")); } catch (Exception e) { e.printStackTrace(); System.exit(0); } while(!shutdown){ Socket socket=null; InputStream input=null; OutputStream output=null; try { socket=serverSocket.accept(); input=socket.getInputStream(); output=socket.getOutputStream(); //create Request object and parse Request request=new Request(input); request.parse(); //create Response object Response response=new Response(output); response.setRequest(request); response.sendStaticResource(); } catch (Exception e) { e.printStackTrace(); continue; } } } } 这个类表示一个Web服务器网页外包接活,这个Web服务器可以处理对指定目录的静态资源的请求,网页外包接活该目录包括由公有静态变量final WEB_ROOT指明的目录及其所有子目录.

上等待HTTP请求web前端制作,对其进行处理,web前端制作然后发送响应信息回客户端承接网页制作,在接收到关闭命令前,div前端切图它会保持等待状态.

点击次数:5397
作者:
web前端行业资讯
Web new NewsList
Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日继“Angel”开源后,腾讯又开放TDinsight机器学习平台 ,,2017年12月21日SEOer必备的SEO条件及心态2014年01月28日【NOI2015】【程序自动分析】【并查集+离散化】【移动开发】2015年08月14日简单说一下上线前apk加密的问题 【架构设计】2015年08月29日android环境下摄像头数据采集及显示【移动开发】2015年05月07日FCKeditorsmarty编辑器的应用PHP2014年01月29日固定顶部导航栏和左侧边栏滚动条为右下方的一类布局分析 【研发管理】2015年08月17日元宵和汤圆的区别2014年01月29日无约束最优化方法——牛顿法、拟牛顿法、BFGS、LBFGS 【研发管理】2015年05月27日android项目目录介绍之二 【数据库】2015年05月19日C语言学习总结(1)-递归函数的理解2016年11月08日利用.htaccess的Rewrite规则实现Discuz论坛的伪静态链接2014年01月30日POJ2079Triangle(凸包_旋转卡壳之最大三角形面积) 【编程语言】2015年03月26日Windows文件命名 【互联网】2015年03月17日linux(CentOS)下目录档案管理以及档案文件系统打包压缩【综合】2015年01月04日开始菜单2014年01月28日python数据库编程 【移动开发】2015年06月12日哈理工校园编程练习赛杭电acm4438D.Hunters 【编程语言】2015年03月17日谷歌发布Android8.1首个开发者预览版:内存效率暴增 ,,2017年10月26日【机房重构】一步一步往上爬——验收给了我什么 【互联网】2015年03月09日php对数组排序的简单实例2014年01月29日MySQL分组排序 【编程语言】2015年07月27日Linux程序设计的一些小工具使用 【编程语言】2015年07月21日jQueryDialog弹出层对话框插件2014年01月29日关于实现一个软件看门狗的计划【编程语言】2014年11月04日YT14-HDU-James跳桥 【数据库】2015年02月09日ubuntu与centos中更换ip的shell代码2014年01月29日基于vim搭建Go开发环境 【编程语言】2014年11月04日分数统计【综合】2015年04月28日关于android的最近学习总结【Web前端】2015年03月03日特殊数据的js四舍五入问题2014年01月29日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)