`

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);
			}
			
			
		}
		
	}
}

分享到:
评论

相关推荐

    web服务器tomcat6.0

    Tomcat 6.0是一款广泛使用的开源Web服务器和Servlet容器,它由Apache软件基金会的Jakarta项目开发。作为Java平台企业版(Java EE)的一部分,Tomcat主要负责执行Java Servlets和展示JavaServer Pages(JSP)。对于...

    tomcat5.5 java 开发 web 服务器

    标签再次强调了这个压缩包与Tomcat5.5、Java开发以及Web服务器相关,暗示了它可能包含的文件类型和用途,比如安装程序、配置文档、示例代码或者教程。 压缩包中的唯一文件“apache-tomcat-5.5.27.exe”是Apache ...

    使用Tomcat或Nginx搭建视频服务器

    Apache Tomcat是一个开源的Web服务器和Servlet容器,主要用来运行Java Servlet和JavaServer Pages (JSP)。而Nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP服务器。 在描述中,提到了在...

    tomcat 7.0.30 web服务器

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

    如何在Tomcat 7.0服务器中添加Web应用及注意事项

    ### 如何在Tomcat 7.0服务器中添加Web应用及注意事项 #### 一、引言 Apache Tomcat 是一个免费开源的轻量级Servlet容器,用于开发和部署基于Java的Web应用程序。Tomcat 支持最新的Java EE标准,如Servlet、JSP等。...

    经典项目示例及Tomcat

    【标题】"经典项目示例及Tomcat"涵盖了两个核心概念:项目实例和Tomcat服务器。这是一份针对IT从业者的重要资源,旨在提供实际工作中的参考案例,帮助开发者理解和掌握项目开发流程,同时包含了免安装版的Tomcat6,...

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

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

    tomcat学习源码

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

    Tomcat与Java.Web开发技术详解

    最后,“tomcatjava.webkfjs_600it”很可能是一份完整的Tomcat与Java.Web开发的电子书,包含了详细的理论知识、实践示例和问题解决方案。 学习这些内容可以帮助开发者建立扎实的Java Web开发基础,理解Web应用的...

    Tomcat与Java Web

    它是一个开源的、轻量级的Web应用服务器,主要用于运行基于Java Servlet和JavaServer Pages(JSP)的应用程序。Tomcat是Apache软件基金会的Jakarta项目下的一个子项目,其设计目标是提供一个符合Java EE标准的...

    Tomcat与Java.Web开发技术详解+源代码

    《Tomcat与Java.Web开发技术详解》是一本深入解析Tomcat服务器和Java Web开发的教程,结合源代码和丰富的学习资源,旨在帮助开发者全面理解并掌握相关技术。书中的标签"Tomcat与Web"明确了主要讨论的内容是围绕...

    Tomcat与Java Web开发技术详解源代码.rar

    它以其小巧、高效、易用的特点,成为了许多初学者和小型企业首选的Java Web服务器。Tomcat的配置和管理相对简单,适合快速搭建和测试Java Web应用。 在Java Web开发中,Servlet是Java EE平台的核心组件之一,它是...

    webservices示例代码

    4. 部署服务:将服务部署到Web服务器,如Tomcat或Jetty。 五、调用Web服务 调用Web服务通常有两种方式:SOAP客户端和RESTful客户端。对于SOAP,可以使用JAX-WS或者Apache Axis2等库来生成客户端代码。对于RESTful...

    tomcat和java web源码

    孙老师的Java Web教程源码很可能是包含了一个完整的Web应用示例,可能涵盖以下内容: 1. **Servlet基础**:包括Servlet的生命周期、初始化、服务、销毁方法,以及如何通过`@WebServlet`注解或`web.xml`文件来注册...

    Tomcat与Java.Web开发技术详解源代码

    在IT行业中,Tomcat是一款广泛使用的开源Web应用服务器,它主要负责运行基于Java Servlet和JavaServer Pages(JSP)的应用程序。本主题“Tomcat与Java.Web开发技术详解源代码”将深入探讨Tomcat的工作原理、配置方法...

    Tomcat与Java Web开发技术详解 第二版配套光盘源码

    3. **Servlet**:Servlet是Java平台上的服务器端组件,用于扩展Web服务器的功能。通过源代码,读者可以学习到Servlet生命周期、请求处理、响应生成等核心概念,并理解如何在实际项目中编写和调用Servlet。 4. **JSP...

    Tomcat 同一服务器上 不同web项目共享session的

    总的来说,实现Tomcat服务器上不同Web项目的session共享是一个涉及多方面技术的问题,需要对Java Web开发、Tomcat服务器配置以及安全性有深入理解。根据项目的规模和复杂性,选择合适的方法可以有效地提升用户体验并...

    Java开发的简单WEB服务器源码Java实用源码整理learns

    标题中的“Java开发的简单WEB服务器源码Java实用源码整理learns”表明这是一个关于Java Web服务器开发的项目,可能是为了教学或者学习目的而编写的。这个项目可能包含了一个简单的HTTP服务器实现,允许用户理解Web...

    Tomcat与Java_Web开发技术详解4.pdf

    书中通过一系列具体的示例来展示如何利用Tomcat进行Web应用的开发和部署,这些案例涵盖了从简单的Hello World应用到复杂的多层架构应用。每个案例都详细讲解了实现步骤、配置方法及常见问题的解决策略,为读者提供了...

    《Tomcat与Java Web开发技术详解(第2版)》_(孙卫琴)_源码.zip

    《Tomcat与Java Web开发技术详解(第2版)》是孙卫琴先生撰写的一本经典教程,专注于讲解如何使用Apache Tomcat服务器进行Java Web应用的开发。这本书深入浅出地介绍了Tomcat的基础架构、配置、优化以及故障排查,同时...

Global site tag (gtag.js) - Google Analytics