private Charset charset=Charset.forName("GBK");
public String decode(ByteBuffer buffer){ … } //解码
public ByteBuffer encode(String str){ … } //编码
} //#Handler内部类
}//#SimpleHttpServer类
运行“java SimpleHttpServer”命令,就启动了HTTP服务器,然后打开一个IE浏览器,按照如下步骤访问HTTP服务器。根据服务器端控制台的打印结果,可以了解IE浏览器发送给服务器的HTTP请求信息。
在IE浏览器中输入URL:http://localhost:80/login.htm或者http://localhost/login.htm。默认情况下,IE浏览器总是与远程HTTP服务器的80端口建立连接,因此在URL中可以不指定80端口。图2显示了IE浏览器接收到的网页,以及服务器接收到的HTTP请求。

图2 浏览器按照GET方式访问login.htm
从服务器端的打印结果可以看出,IE浏览器发送的HTTP请求采用GET方式,请求的URI为login.htm。服务器把login.htm文件发送给IE浏览器,IE浏览器将它呈现给用户。login.htm文件中的内容如下:
<html>
<head>
<title>helloapp</title>
</head>
<body >
<form name="loginForm" method="post" action="hello.htm">
<table>
<tr><td><div align="right">用户名:</div></td>
<td><input type="text" name="username"></td>
</tr>
<tr><td><div align="right">口令:</div></td>
<td><input type="password" name="password"></td>
</tr>
<tr><td></td>
<td><input type="submit" name="submit" value="submit"></td>
</tr>
</table>
</form>
</body>
</html>
在login.htm文件中定义了一个HTML表单,它有两个输入框,分别用于输入用户名和口令。以上<form>元素的action属性指定当用户提交表单时所请求访问的网页,此处为hello.htm;method属性用于指定请求方式,此处为POST。
|