`
lucene3212
  • 浏览: 138107 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

模拟tomcat工作原理

    博客分类:
  • java
阅读更多
    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>
 
0
9
分享到:
评论
1 楼 悲剧了 2011-08-09  
乱成啥了,没有好的UI,就没有好的思想

相关推荐

    模拟tomcat的工作原理

    **模拟Tomcat工作原理** Tomcat是一款开源的Java Servlet容器,它是Apache软件基金会下的Jakarta项目的一部分,主要用于运行Java Web应用程序。在这个模拟过程中,我们将深入理解Tomcat如何处理HTTP请求,以及它在...

    模拟TOMCAT工作的全部过程

    【TOMCAT工作原理详解】 ...通过模拟TOMCAT工作过程,可以更深入地理解这些概念,为实际开发打下坚实基础。在`mvcdemo`这样的实践中,你可以亲自体验和学习如何在TOMCAT上部署和运行一个简单的MVC应用。

    模拟Tomcat服务器

    首先,我们需要了解Tomcat的工作原理。Tomcat是基于Apache软件基金会的Jakarta项目,它接收HTTP请求,并将这些请求分发给Java应用程序,通常是Servlets。Servlets是Java编写的服务器端程序,可以处理动态内容。JSP则...

    模拟tomcat、servlet服务器

    在IT行业中,构建一个模拟Tomcat或Servlet服务器是一项高级...通过以上知识点的学习和实践,你将能够构建一个基本的模拟Tomcat和Servlet服务器,这将帮助你深入理解Web服务器的工作原理,提升你的Java网络编程技能。

    java模拟tomcat的web服务器源码

    本篇文章将深入探讨如何用Java语言来模拟Tomcat的核心功能,以理解其工作原理。 首先,我们需要了解Java服务器的工作基础。在Java中,HTTP请求的处理是通过实现Servlet接口的类完成的。Servlet是Java中用于处理HTTP...

    j2se模拟tomcat

    标题中的“j2se模拟tomcat”意味着我们将探讨如何使用Java标准版(J2SE)的编程技术来创建一个简单的Web服务器,模仿Tomcat的工作原理。Tomcat是一款流行的开源应用服务器,主要用于运行Java Servlet和JavaServer ...

    简单的tomcat实现1

    本篇文章将深入解析“简单的tomcat实现1”,帮助读者理解Tomcat的核心概念、工作原理以及如何手写Tomcat的基本组件。 首先,我们要了解Tomcat的两大核心组成部分:连接器(Connector)和容器(Container)。连接器...

    Tomcat服务器模拟(TCP/IP)

    模拟Tomcat应用服务器的工作原理,有利于理解服务器的工作的模式。简单模拟,不考虑并发性等等因素。

    Shell kill tomcat process

    关于标签中的“源码”和“工具”,这里可能是指在处理Tomcat进程时,有时需要查看Tomcat的源代码,了解其内部工作原理,或者使用一些辅助工具来帮助管理和监控Tomcat。例如,`jps`(Java Virtual Machine Process ...

    Tomcat源码分析

    【标题】"Tomcat源码分析" ...通过对Tomcat源码的分析,开发者可以更好地理解其工作原理,从而优化性能、解决运行问题,或者开发出符合特定需求的扩展功能。同时,这也是提升Java Web开发技能的重要途径。

    Tomcat+IIS整合配置文件

    在这个文件中,会定义工作线程(workers)和它们与Tomcat实例的关系,以便正确地分发请求。 **uriworkermap.properties**:这个文件定义了URI到worker的映射,决定了哪些URL请求会被发送到哪个Tomcat实例处理。 **...

    Tomcat7.0源码,可直接导入eclipse

    通过深入研究Tomcat7.0的源码,我们可以更好地理解HTTP服务器、Servlet容器的工作原理,提升Web应用的开发和优化能力。本文将探讨如何将Tomcat7.0源码导入Eclipse,并进行本地运行,以实现高效的学习和调试。 首先...

    tomcat connectors

    如果你需要深入理解Tomcat连接器的工作原理,或者想要对其进行定制,你可以编译这个源代码。这通常涉及到下载源码,配置构建环境(如Apache Maven或Ant),然后执行构建命令来生成可部署的二进制文件。 了解Tomcat ...

    Http请求模拟报文返回工具

    Http请求模拟报文返回工具的核心原理是基于HTTP协议的工作机制,它可以创建并配置自定义的HTTP响应报文。当用户通过HTTP客户端(如浏览器或HTTP库)发起请求时,该工具会捕获这些请求,并按照预设的规则返回预先配置...

    tomcat远程命令攻击的漏洞与利用

    ### Tomcat 远程命令攻击漏洞 CVE-2017-12615 的深入解析及...通过本实验的学习,我们不仅了解了CVE-2017-12615漏洞的基本原理,还掌握了如何模拟和防御这种类型的攻击。这对于提高个人和组织的安全意识具有重要意义。

    黑马程序员-tomcat集群部署文档资料

    Tomcat作为开源的Servlet容器,其源码提供了深入理解其工作原理的机会。主要组件包括Catalina(核心引擎)、 Coyote(处理HTTP协议)、Apr(与操作系统交互的本地库)等。源码分析可以帮助我们理解请求处理流程、...

    开启TOMCAT6的GZIP压缩

    GZIP压缩的工作原理是在客户端请求网页后,由服务器端将网页文件压缩后再发送给客户端,客户端接收到压缩后的文件后,由浏览器进行解压并显示页面内容。这种方式不仅可以减少传输的数据量,而且还能对动态生成的内容...

Global site tag (gtag.js) - Google Analytics