step_by_step实现简单HTTP服务器(一):HTTP服务器版helloworld

June 11, 2016 at 3:10 pm

本文打算用最少的代码来实现一个HTTP服务器最基本的功能,虽然冠上了序号,但是很难保证会有续集,目前的时间少得可怜,而我又太水。不过这一篇应该是可以独立成文的,最终要达到的目标是,通过浏览器访问服务器时,可以返回服务器上保存着的一个静态的helloworld页面。 本来是打算使用C++来写的,但由于C++标准库并没有提供socket的支持,无法很好地跨平台,而且C++中socket的接口相对繁琐,体现不出“最少”两个字,所以最终还是决定使用Java语言来写。本文一方面可以简单复习一下socket编程的知识,同时也梳理一下HTTP协议的一些基本内容。 废话不多说,下面我们一步一步实现一个HTTP服务器吧。本文的大体内容如下: 1. 实现一个TCP服务器 2. 应答HTTP请求,返回404 3. 实现简单的get请求 实现一个TCP服务器 http协议建立在tcp协议基础上。在Java中实现一个TCP服务器是相当容易的,这方面的资料网上也是非常多,但为了保证本文的完整性,这里还是都重新过一遍。我们的Server的类名为HttpServer,我们导入io和net包以进行相关的操作。为了简化代码,我们直接让main函数抛出所有异常: import java.io.*; import java.net.*; public class HttpServer{ public static […]

hibernate入门(一):编写第一个hibernate程序

June 21, 2015 at 4:35 pm

  本系列介绍hibernate使用过程中所遇到的事情之类的。虽然加上了标号,但是并不保证会有第二篇,而且很有可能会没有。第一,我不是一个java程序员,用不着整天和这些东西打交道;第二,初次体验就这么不好的东西我并不打算再用了。   hibernate是一个ORM框架,即所谓的对象关系映射,把数据库中的每一张表表现为一个类,每一条记录表现为一个对象。总而言之只是一个方便人们处理数据库的东西而已。没想到这样一个东西,要写成一个"HelloWorld"型的入门程序要写那么多的配置,对于一个未入门的渣渣码农而言,实在是有够烦。先是试图找一些简单的书籍,但是hibernate现在出到4了,我也不打算用旧版本,4对应版本的入门书籍粗粗找了下没找到,所以最终就决定以官网提供的文档(4.3.10Final)的第一章"The first Hibernate Application"为入门指南写第一个程序(链接在这)。好了废话不多说了进入正题。 这个版本的文档已经要求包括hibernate和相关的依赖包以maven的方式使用了。如果你还不知道maven,本文可能就无法进行下去了,所以还是去先学一下吧,maven我倒感觉是个好东西,虽然只是入了个门,大体就是一个方便下载jar包的程序。文档首先告诉我要使用它提供的pom.xml,我的做法是直接maven建立了一个普通项目,然后再把pom.xml的内容替换掉,反正也没差。但是作为4.3.10Final的文档,却是一点都不Final,要改的地方好多,(或许和maven版本有关也说不定,本文使用的是当前的最新版3.3.3,不过最新版的文档为什么不是用最新版的maven?至少也得顾及一下最新版用户的感受吧?)要改的地方主要是给所有依赖包提供版本,即<version>...</version>标签,另外还有个地方是它文档里说使用的数据库是一种叫hsqldb的东西,我一开始以为内置了,可是报找不到类的错,所以在maven里我还是给配上了,然后就按照编译器说的真的成功了...还一处不提也罢,总之 最后形成的pom.xml结果如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.hibernate.tutorials</groupId> <artifactId>hibernate-tutorial</artifactId> <version>1.0.0-SNAPSHOT</version> <name>First Hibernate Tutorial</name> <build> […]