- 浏览: 138107 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (137)
- java (138)
- c# winform (笨方法)根据不同的样式配置 设置窗体相关控件的背景 以改变窗体风格 (1)
- Android平台下实现一个进程管理器 (1)
- 装饰模式 (1)
- 【转】介绍线性代数 (1)
- fqueue初步分析 (1)
- 千万级sql优化 (1)
- 开源项目 (1)
- js弹出遮罩层【并弹出提示信息】 (1)
- 代码高亮、源码格式、iteye代码格式的种种方法 (1)
- Drupal学习笔记(四)warning: array_key_exists(): The first argument should be either a string or an integer (1)
- 2011年Java EE生产力报告 (1)
- java(j2se)学习笔记----类注释文档编写方法? (1)
- ubuntu 添加应用程序 到快速启动 (1)
- JPA注解配置实例 (1)
- C++著名内裤 (1)
- Android笔试或者面试的几个题目 (1)
- Ajax&&GWT (1)
- IHS静默安装(转) (1)
- WIN98下运行DOTNET程序的一些问题 (1)
- 开启新的项目——基于电子邮件的知识管理系统 (1)
- 这里的BLOG服务器也太不稳定了 (1)
- MapXtreme2004代码 读取TAB表中的元素 (1)
- 终于把我的大部分BLOG复制到这里来了 (1)
- 2011NOKIA笔试题目 (1)
- Ajax实现省市二级联动(源代码) (1)
- mxgraph之保存图片 (1)
- sso单点登录 (1)
- Android开发之SurfaceView (1)
- Android开发之ListView (1)
- SQL SERVER 2008 中分页方法集锦 (1)
- 2011-12-2 (1)
- 分页组件 (1)
- Myeclipse自动加入struts 2 Core Libraries导致antlr错误 (1)
- jbpm4在tomcat6中EL错误 (1)
- c++中有关数组和指针的若干问题 (1)
- rails 上传文件和删除文件 (1)
最新评论
-
mazongfei:
就是有点乱,不过还是不错的
sso单点登录 -
xiaokang1582830:
写得这么乱,地球人是无法看得懂的...
sso单点登录 -
shenyu:
大侠,下回分解在哪里啊?
mxgraph之保存图片 -
GZQ0821:
为啥不编译后贴出来呢!
SQL SERVER 2008 中分页方法集锦 -
evil9999:
http://belives2012.blog.163.com ...
千万级sql优化
httpserver原理:服务器端 打开一个socket,一直处在监听tomcat指定的 ip 的指定端口,一旦有访问的,就开启一个线程去处理,代码如下:
-------------------------------server:
package com.kaobian;<br><br>import java.io.ioexception;<br>import java.net.serversocket;<br>import java.net.socket;<br>import com.session.httpsession;<br><br>public class httpserver {<br> public static void main(string[] args) {<br> try {<br> serversocket server = new serversocket(8888);<br> while (true) {<br> socket socket = server.accept();<br> httpsession session = new httpsession(socket);<br> new thread(session).start();<br> }<br> } catch (ioexception e) {<br> e.printstacktrace();<br> }<br> }<br>}<br>---------------------------------处理线程
package com.session;<br><br>import java.io.bufferedreader;<br>import java.io.file;<br>import java.io.fileinputstream;<br>import java.io.filenotfoundexception;<br>import java.io.ioexception;<br>import java.io.inputstream;<br>import java.io.inputstreamreader;<br>import java.io.outputstream;<br>import java.net.socket;<br><br>import com.config.config;<br><br>public class httpsession implements runnable {<br> private string path = config.getconfig().getpath();<br> private socket socket ;<br><br> public httpsession(socket socket){<br> super();<br> this.socket = socket;<br> }<br><br> public void run() {<br> try {<br> bufferedreader br = new bufferedreader(new inputstreamreader(this.socket.getinputstream()));<br> outputstream out = this.socket.getoutputstream();<br> string command = null;<br> while((command = br.readline()) != null){<br> system.out.println("浏览器的指令:"+command);<br> if(command.length() <3){<br> break;<br> }<br> string result = command.substring(0,3);<br> if(result.equalsignorecase("get")){<br> int begin = command.indexof("/")+1;<br> int end = command.lastindexof(" ");<br> string filename = command.substring(begin,end);<br> doget(filename,out);<br> }<br> <br> }<br> out.close();<br> br.close();<br> } catch (ioexception e) {<br> e.printstacktrace();<br> }<br> }<br><br> private void doget(string filename, outputstream out) {<br> file file = new file(path+filename);<br> if(!file.isdirectory()){<br> if(!file.exists()){<br> file = new file(path + config.getconfig().getdefaultpage()); <br> }<br> }else {<br> file = new file(path + config.getconfig().getdefaultpage());<br> }<br> inputstream is = null;<br> try {<br> is = new fileinputstream(file);<br> byte[] data =new byte[1024];<br> int len = 0;<br> while((len = is.read(data)) != -1){<br> out.write(data,0,len);<br> }<br> } catch (filenotfoundexception e) {<br> e.printstacktrace();<br> } catch (ioexception e) {<br> e.printstacktrace();<br> }finally {<br> if(is != null){<br> try {<br> is.close();<br> } catch (ioexception e) {<br> e.printstacktrace();<br> }finally{<br> is = null;<br> }<br> }<br> }<br> <br> }<br><br>}<br>---------------------------读取配置文件
package com.config;<br><br>import java.io.file;<br>import java.io.fileinputstream;<br>import java.io.ioexception;<br>import java.io.inputstream;<br>import java.util.properties;<br><br>public class config {<br> <br> private string path ;<br> private string defaultpage;<br> private static config config ;<br> <br> public static config getconfig(){<br> if(config == null){<br> config = new config();<br> config.init();<br> }<br> return config;<br> }<br> <br> private void init(){<br> properties properties = new properties();<br> try {<br> inputstream reader = new fileinputstream(new file("config.properties"));<br> properties.load(reader);<br> this.path = properties.getproperty("path");<br> this.defaultpage = properties.getproperty("defaultindex");<br> reader.close();<br> } catch (ioexception e) {<br> e.printstacktrace();<br> }<br> }<br> <br> private config(){<br> }<br> <br> public string getpath() {<br> return path;<br> }<br> public void setpath(string path) {<br> this.path = path;<br> }<br> public string getdefaultpage() {<br> return defaultpage;<br> }<br> public void setdefaultpage(string defaultpage) {<br> this.defaultpage = defaultpage;<br> }<br> <br>}<br>
------------------配置文件要放到工程的根目录下,要不然自行修改属性文件的位置
path=c://<br>defaultindex=div.html<br>
-------------------------------server:
package com.kaobian;<br><br>import java.io.ioexception;<br>import java.net.serversocket;<br>import java.net.socket;<br>import com.session.httpsession;<br><br>public class httpserver {<br> public static void main(string[] args) {<br> try {<br> serversocket server = new serversocket(8888);<br> while (true) {<br> socket socket = server.accept();<br> httpsession session = new httpsession(socket);<br> new thread(session).start();<br> }<br> } catch (ioexception e) {<br> e.printstacktrace();<br> }<br> }<br>}<br>---------------------------------处理线程
package com.session;<br><br>import java.io.bufferedreader;<br>import java.io.file;<br>import java.io.fileinputstream;<br>import java.io.filenotfoundexception;<br>import java.io.ioexception;<br>import java.io.inputstream;<br>import java.io.inputstreamreader;<br>import java.io.outputstream;<br>import java.net.socket;<br><br>import com.config.config;<br><br>public class httpsession implements runnable {<br> private string path = config.getconfig().getpath();<br> private socket socket ;<br><br> public httpsession(socket socket){<br> super();<br> this.socket = socket;<br> }<br><br> public void run() {<br> try {<br> bufferedreader br = new bufferedreader(new inputstreamreader(this.socket.getinputstream()));<br> outputstream out = this.socket.getoutputstream();<br> string command = null;<br> while((command = br.readline()) != null){<br> system.out.println("浏览器的指令:"+command);<br> if(command.length() <3){<br> break;<br> }<br> string result = command.substring(0,3);<br> if(result.equalsignorecase("get")){<br> int begin = command.indexof("/")+1;<br> int end = command.lastindexof(" ");<br> string filename = command.substring(begin,end);<br> doget(filename,out);<br> }<br> <br> }<br> out.close();<br> br.close();<br> } catch (ioexception e) {<br> e.printstacktrace();<br> }<br> }<br><br> private void doget(string filename, outputstream out) {<br> file file = new file(path+filename);<br> if(!file.isdirectory()){<br> if(!file.exists()){<br> file = new file(path + config.getconfig().getdefaultpage()); <br> }<br> }else {<br> file = new file(path + config.getconfig().getdefaultpage());<br> }<br> inputstream is = null;<br> try {<br> is = new fileinputstream(file);<br> byte[] data =new byte[1024];<br> int len = 0;<br> while((len = is.read(data)) != -1){<br> out.write(data,0,len);<br> }<br> } catch (filenotfoundexception e) {<br> e.printstacktrace();<br> } catch (ioexception e) {<br> e.printstacktrace();<br> }finally {<br> if(is != null){<br> try {<br> is.close();<br> } catch (ioexception e) {<br> e.printstacktrace();<br> }finally{<br> is = null;<br> }<br> }<br> }<br> <br> }<br><br>}<br>---------------------------读取配置文件
package com.config;<br><br>import java.io.file;<br>import java.io.fileinputstream;<br>import java.io.ioexception;<br>import java.io.inputstream;<br>import java.util.properties;<br><br>public class config {<br> <br> private string path ;<br> private string defaultpage;<br> private static config config ;<br> <br> public static config getconfig(){<br> if(config == null){<br> config = new config();<br> config.init();<br> }<br> return config;<br> }<br> <br> private void init(){<br> properties properties = new properties();<br> try {<br> inputstream reader = new fileinputstream(new file("config.properties"));<br> properties.load(reader);<br> this.path = properties.getproperty("path");<br> this.defaultpage = properties.getproperty("defaultindex");<br> reader.close();<br> } catch (ioexception e) {<br> e.printstacktrace();<br> }<br> }<br> <br> private config(){<br> }<br> <br> public string getpath() {<br> return path;<br> }<br> public void setpath(string path) {<br> this.path = path;<br> }<br> public string getdefaultpage() {<br> return defaultpage;<br> }<br> public void setdefaultpage(string defaultpage) {<br> this.defaultpage = defaultpage;<br> }<br> <br>}<br>
------------------配置文件要放到工程的根目录下,要不然自行修改属性文件的位置
path=c://<br>defaultindex=div.html<br>
发表评论
-
rails 上传文件和删除文件
2012-02-07 14:33 1121文件上传,页面代码: <%form_tag '/ ... -
c++中有关数组和指针的若干问题
2012-02-07 14:13 822<pre class="reply-t ... -
jbpm4在tomcat6中EL错误
2012-02-04 14:03 1089? jbpm4 在tomcat6 下面ssh2 这个错 ... -
Myeclipse自动加入struts 2 Core Libraries导致antlr错误
2012-02-04 13:29 995解决方法: 选择windows---preferenc ... -
分页组件
2012-02-03 12:23 927撒地方阿斯顿的撒啊受到爱上 ... -
2011-12-2
2012-02-02 15:34 752ubuntu系统root默认密码,每次开机会随机产生默 ... -
SQL SERVER 2008 中分页方法集锦
2012-02-01 09:34 1406<span style="font-s ... -
Android开发之ListView
2012-01-31 13:53 1271<p><br></p&g ... -
Android开发之SurfaceView
2012-01-11 15:34 1262<h1>Android开发 ... -
sso单点登录
2012-01-11 12:44 3961SSO单点登录 目 ... -
mxgraph之保存图片
2011-12-28 18:38 24501、写在前端:任何情况下,保存图片不可能只通过前台代码 ... -
Ajax实现省市二级联动(源代码)
2011-12-28 16:23 5021<span style="font-f ... -
2011NOKIA笔试题目
2011-12-21 09:29 1078今天去NOKIA机试,纯粹打酱油,没什么准备,题目貌似 ... -
终于把我的大部分BLOG复制到这里来了
2011-12-16 16:22 1041本来我的BLOG都在博客中国的<img src= ... -
MapXtreme2004代码 读取TAB表中的元素
2011-12-15 12:14 957<?xml:namespace prefix = ... -
这里的BLOG服务器也太不稳定了
2011-12-14 20:53 699<p class="MsoPlainT ... -
开启新的项目——基于电子邮件的知识管理系统
2011-12-14 19:59 944</span></font>& ... -
WIN98下运行DOTNET程序的一些问题
2011-12-14 17:24 814</span></font>& ... -
IHS静默安装(转)
2011-12-13 11:59 1336<span style="col ... -
Ajax&&GWT
2011-12-13 10:14 680工作的久了,一直忙于公司相关的技术和业务上,对于如今流 ...
相关推荐
**模拟Tomcat工作原理** Tomcat是一款开源的Java Servlet容器,它是Apache软件基金会下的Jakarta项目的一部分,主要用于运行Java Web应用程序。在这个模拟过程中,我们将深入理解Tomcat如何处理HTTP请求,以及它在...
【TOMCAT工作原理详解】 ...通过模拟TOMCAT工作过程,可以更深入地理解这些概念,为实际开发打下坚实基础。在`mvcdemo`这样的实践中,你可以亲自体验和学习如何在TOMCAT上部署和运行一个简单的MVC应用。
首先,我们需要了解Tomcat的工作原理。Tomcat是基于Apache软件基金会的Jakarta项目,它接收HTTP请求,并将这些请求分发给Java应用程序,通常是Servlets。Servlets是Java编写的服务器端程序,可以处理动态内容。JSP则...
在IT行业中,构建一个模拟Tomcat或Servlet服务器是一项高级...通过以上知识点的学习和实践,你将能够构建一个基本的模拟Tomcat和Servlet服务器,这将帮助你深入理解Web服务器的工作原理,提升你的Java网络编程技能。
本篇文章将深入探讨如何用Java语言来模拟Tomcat的核心功能,以理解其工作原理。 首先,我们需要了解Java服务器的工作基础。在Java中,HTTP请求的处理是通过实现Servlet接口的类完成的。Servlet是Java中用于处理HTTP...
标题中的“j2se模拟tomcat”意味着我们将探讨如何使用Java标准版(J2SE)的编程技术来创建一个简单的Web服务器,模仿Tomcat的工作原理。Tomcat是一款流行的开源应用服务器,主要用于运行Java Servlet和JavaServer ...
本篇文章将深入解析“简单的tomcat实现1”,帮助读者理解Tomcat的核心概念、工作原理以及如何手写Tomcat的基本组件。 首先,我们要了解Tomcat的两大核心组成部分:连接器(Connector)和容器(Container)。连接器...
模拟Tomcat应用服务器的工作原理,有利于理解服务器的工作的模式。简单模拟,不考虑并发性等等因素。
关于标签中的“源码”和“工具”,这里可能是指在处理Tomcat进程时,有时需要查看Tomcat的源代码,了解其内部工作原理,或者使用一些辅助工具来帮助管理和监控Tomcat。例如,`jps`(Java Virtual Machine Process ...
【标题】"Tomcat源码分析" ...通过对Tomcat源码的分析,开发者可以更好地理解其工作原理,从而优化性能、解决运行问题,或者开发出符合特定需求的扩展功能。同时,这也是提升Java Web开发技能的重要途径。
在这个文件中,会定义工作线程(workers)和它们与Tomcat实例的关系,以便正确地分发请求。 **uriworkermap.properties**:这个文件定义了URI到worker的映射,决定了哪些URL请求会被发送到哪个Tomcat实例处理。 **...
通过深入研究Tomcat7.0的源码,我们可以更好地理解HTTP服务器、Servlet容器的工作原理,提升Web应用的开发和优化能力。本文将探讨如何将Tomcat7.0源码导入Eclipse,并进行本地运行,以实现高效的学习和调试。 首先...
如果你需要深入理解Tomcat连接器的工作原理,或者想要对其进行定制,你可以编译这个源代码。这通常涉及到下载源码,配置构建环境(如Apache Maven或Ant),然后执行构建命令来生成可部署的二进制文件。 了解Tomcat ...
Http请求模拟报文返回工具的核心原理是基于HTTP协议的工作机制,它可以创建并配置自定义的HTTP响应报文。当用户通过HTTP客户端(如浏览器或HTTP库)发起请求时,该工具会捕获这些请求,并按照预设的规则返回预先配置...
### Tomcat 远程命令攻击漏洞 CVE-2017-12615 的深入解析及...通过本实验的学习,我们不仅了解了CVE-2017-12615漏洞的基本原理,还掌握了如何模拟和防御这种类型的攻击。这对于提高个人和组织的安全意识具有重要意义。
Tomcat作为开源的Servlet容器,其源码提供了深入理解其工作原理的机会。主要组件包括Catalina(核心引擎)、 Coyote(处理HTTP协议)、Apr(与操作系统交互的本地库)等。源码分析可以帮助我们理解请求处理流程、...
GZIP压缩的工作原理是在客户端请求网页后,由服务器端将网页文件压缩后再发送给客户端,客户端接收到压缩后的文件后,由浏览器进行解压并显示页面内容。这种方式不仅可以减少传输的数据量,而且还能对动态生成的内容...