`

tomcat学习一(简单web服务器示例)

 
阅读更多
Request.java
package com.chen;

import java.io.IOException;
import java.io.InputStream;

public class Request {
	private InputStream input ;
	private String uri;
	
	public Request(){}
	public Request(InputStream input){
		this.input = input;
	}
	
	public void parse(){
		byte by[] = new byte[2048];
		int len = 0 ;
		StringBuilder sb = new StringBuilder();
		try {
			//while(len!=-1){
			len =input.read(by);
			System.out.println("len="+len);
			if(len>0){
				sb.append(new String(by,0,len));
			}
			//}
		} catch (IOException e) {
			e.printStackTrace();
		}
		this.uri = parseUri(sb.toString());
	}
	
	private String parseUri(String str) {
		int index1 , index2 ;
		index1 = str.indexOf(' ');
		if(index1!=-1){
			index2 = str.indexOf(' ',index1+1);
			if(index2>index1)
				return str.substring(index1+1,index2);
		}
		return null;
	}
	public String getUri() {
		return uri;
	}
	public void setUri(String uri) {
		this.uri = uri;
	}
	
}




Response.java
package com.chen;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Response {
	private static final int BUFFER_SIZE=1024;
	private OutputStream output;
	private Request request ;
	
	public Response(){}
	
	public Response(OutputStream output){
		this.output = output;
	}

	public Request getRequest() {
		return request;
	}

	public void setRequest(Request request) {
		this.request = request;
	}
	
	public void sendStaticResource() throws IOException{
		byte[] bytes = new byte[BUFFER_SIZE];
		FileInputStream fis = null;
		try{
			System.out.println("uri:"+request.getUri());
			File file = new File(HttpServer.WEB_ROOT,request.getUri());
			if(file.exists()){
				fis = new FileInputStream(file);
				int ch = fis.read(bytes,0,BUFFER_SIZE);
				while(ch!=-1){
					output.write(bytes,0,ch);
					ch = fis.read(bytes, 0, BUFFER_SIZE);
				}
			}else{
				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){
			e.printStackTrace();
		}finally{
			if(fis!=null){
				fis.close();
			}
		}
		
	}
	
}




HttpServer.java
package com.chen;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class HttpServer {
 
	public static final String WEB_ROOT=System.getProperty("user.dir")
			+File.separator+"webroot";
	public static final String SHUTDOWN_COMMAND="/SHUTDOWN";
	
	public static void main(String[] args) {
		HttpServer server = new HttpServer();
		server.await();
	}
	private boolean shutdown = false;
	
	public void await(){
		ServerSocket serverSocket = null;
		int port = 8080;
		try{
			serverSocket = new ServerSocket(port, 1, InetAddress.getByName("127.0.0.1"));
		}catch(Exception e){
			e.printStackTrace();
			System.exit(1);
		}
		
		while(!shutdown){
			Socket socket = null;
			InputStream input = null;
			OutputStream output = null;
			try{
				socket = serverSocket.accept();
				input = socket.getInputStream();
				output = socket.getOutputStream();
				
				Request request = new Request(input);
				request.parse();
				
				Response response = new Response(output);
				response.setRequest(request);
				response.sendStaticResource();
				
				socket.close();
				
			}catch(Exception e){
				e.printStackTrace();
				System.exit(1);
			}
			
			
		}
		
	}
}

分享到:
评论

相关推荐

    tomcat 7.0.30 web服务器

    Tomcat7服务器web开发 Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。

    Tomcat服务器部署+Web项目搭建.zip

    从Tomcat服务器的介绍,到服务器的下载、安装、配置,再到Web项目的创建、打包、部署,以及常见的部署问题和解决方案,本博客为读者提供了一个清晰的学习路径。此外,还涵盖了Tomcat的高级功能,如安全性、性能监控...

    tomcat学习源码

    Tomcat是目前比较流行的Web服务器之一。作为一个开源和小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。本书从...

    深入剖析TOMCAT中文版

    Tomcat是目前比较流行的Web服务器之一。作为一个开源和小型的轻量级应用服务器,Tomcat易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。本书从最...

    Keepalived+Nginx+Tomcat 实现高可用Web集群的示例代码

    Keepalived+Nginx+Tomcat 实现高可用Web集群 一、Nginx的安装过程 1.下载Nginx安装包,安装依赖环境包 (1)安装 C++编译环境 yum -y install gcc #C++ (2)安装pcre yum -y install pcre-devel (3)安装zlib yum -y...

    tomcat组件图解 一个web服务器的架构演化史

    主要介绍了tomcat组件图解 一个web服务器的架构演化史,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    深入剖析TOMCAT

    Tomcat 是目前比较流行的Web服务器之一。作为一个开源的小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat 本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat 的核心结构。本书...

    tomcat-embed:一个简单的示例代码,用于使用 tomcat-embed 并将 Web 服务器作为应用程序运行

    该项目将帮助您运行嵌入到代码中的 Tomcat 服务器并作为应用程序运行。 先决条件: JDK 1.6 或以上 [可选] Gradle 1.x 怎么跑? 下载这个项目 运行gradlew run (如果您的类路径中已经有 Gradle,则运行gradle run...

    实战Nginx:取代Apache的高性能Web服务器 第一章

    张宴《实战Nginx:取代Apache的高性能Web服务器》pdf电子版下载,此资料网友共享,请购买作者正版书籍. 目录介绍: 第1部分 基础篇 第1章 Nginx简介 1.1 常用的Web服务器简介 1.2 Nginx简介 1.3 选择Nginx的理由 ...

    《深入剖析Tomcat(中文版+英文版)》.rar

    Tomcat是目前比较流行的Web服务器之一。作为一个开源和小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。《深入...

    Tomcat安装与配置(详细教程).zip

    从Tomcat的基本介绍,到服务器的下载、解压、配置,再到Web应用程序的部署和管理,本博客为读者提供了一个清晰的学习路径。此外,还涵盖了Tomcat的高级配置,如虚拟主机、连接池、性能监控和安全配置,以及如何部署...

    servlet学习示例

    简单的说java的web开发都是基于Servlet的,这是最本质的意思。 所以JavaEE开发人员对Servlet要有基本的了解。 web.xml 中Servlet的配置要掌握 二、开发环境 1、jdk1.8 2、tomcat-8.0.29 3、IntelliJ IDEA

    实战Nginx.取代Apache的高性能Web服务器

    11.1 用HTTPS(SSL)构建一个安全的Nginx Web服务器 11.2 采用Nginx搭建FLV视频服务器 11.3 Nginx+PHP+MySQL在小内存VPS服务器上的优化 11.4 采用Nginx搭建正向代理服务器 第4部分 模块篇 第12章 Nginx的核心...

    【JavaWeb】tomcat服务器访问硬盘中的文件(图片示例)

    1.找到tomcat的安装路径打开server.xml文件 打开conf文件夹,再用记事本打开conf里面的server.xml文件 注意斜杠与反斜杠 docBase=” “里面的值是想访问的路径。直接去属性里面复制粘贴即可 path 里填写路径最后的...

    Nginx+Tomcat9搭建负载均衡实例,解压即可运行

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国...

    详述 tomcat 中的 server.xml 配置文件示例

     Tomcat 隶属于 Apache 基金会,是开源的轻量级 Web 应用服务器,使用非常广泛。server.xml是 Tomcat 中最重要的配置文件,server.xml的每一个元素都对应了 Tomcat 中的一个组件;通过对 XML 文件中元素的配置,...

    AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】

    AngularJS是Google工程师研发的产品,它的强大之处不是几句话就能描述的,只有真正使用过的人才能体会到,笔者准备在这篇文章中,以一个简单的登录校验的例子说明如何使用AngularJs和Web服务器进行交互。 准备工作 1...

    Visio 2007 Web控件模板

    多比图形控件是一款基于Web的矢量图形控件, 类似于网页上的Visio...1. 将本软件解压到web服务器,IIS/Tomcat/Apache等。(如果从本地打开,某些功能将不能使用)。 2. 打开index.html查看示例。 3. 本软件为试用版。

    ajax经典示例代码

    将webapp目录中的内容复制到Tomcat的webapps目录中作为一个web应用发布即可。 启动Tomcat前注意修改 ajax/WEB-INF/classes/ajax_db.properties 文件。 将其中的URL、USER和PASSWORD属性根据实际情况进行修改。 ...

    Web007_java_服务器_

    javaweb动态网页代码示例,包含my sql数据库的链接使用,环境tomcat服务器

Global site tag (gtag.js) - Google Analytics