Java学习不走弯路教程(15 从服务器得到html页面)

从服务器得到html页面

一. 前言
在前上一章教程中,我们整理了代码的结构。
本章将在上一章的基础上,进一步扩展程序。

注:
1.本文针对初学Java的同学训练学习思路,请不要太纠结于细节问题。
2.本文旨在达到抛砖引玉的效果,希望大家扩展本例子,以学到更多知识的精髓。

学习本章需要准备的知识:
1.读完本系列教程的前面章节。

二. 步入正题
话不多说,大家自己理解,下面步入正题:

在之前的例子,我们都是直接打开本地的html文件来完成与服务器的通讯,
本章我们把html页面放到服务器上,通过发送请求来获得此文件。

首先建立一个WebContent目录来存储html页面,
如下:

 

然后,我们对所有以.html结尾的请求,读取文件名并且在WebContent目录下找到该文件,
将文件内容发送给客户端:
请求处理部分代码修改如下:

 1     public void run() {
 2         
 3         Request request = new Request();
 4         Response response = new Response();
 5         
 6         while(true) {
 7             try {
 8                 
 9                 String message = br.readLine();
10                 System.out.println("get message:"+message);
11                 
12                 if(message == null) {
13                     break;
14                 }
15                 
16                 if(!"".equals(message)) {
17                     
18                     request.addHeader(message);
19                     
20                 }else {
21                     
22                     String requestPath = request.getPath();
23                     System.out.println("request path:"+requestPath);
24                     
25                     // 处理html文件请求
26                     if(requestPath.length() > 5 && requestPath.substring(requestPath.length()-5).equals(".html")) {
27                         
28                         String basePath = this.getClass().getResource("/").toString().replace("bin/", "WebContent/").replace("file:/", "");
29                         System.out.println(basePath);
30                         
31                         File f = new File(basePath+requestPath);
32                         
33                         FileInputStream fis = new FileInputStream(f);
34                         InputStreamReader isr = new InputStreamReader(fis);
35                         BufferedReader br = new BufferedReader(isr);
36                         
37                         String tempLine = null;
38                         while((tempLine = br.readLine()) != null) {
39                             response.print(tempLine + "\n");
40                         }
41                         
42                         br.close();
43                         isr.close();
44                         fis.close();
45                         
46                     }else if(requestPath.equals("person")) {
47                         
48                         PersonController personController = new PersonController();
49                         personController.doGet(request,response);
50                         
51                     }else if(requestPath.equals("favicon.ico")){
52                         
53                     }
54                     
55                     pw.println("HTTP/1.1 200 OK");
56                     pw.println("Content-Type: text/html");
57                     pw.println("Content-length: "+response.getData().length());
58                     pw.println();
59                     pw.println(response.getData());
60                     pw.println();
61                     break;
62                 }
63                 
64             } catch(IOException e) {
65                 e.printStackTrace();
66             } catch (Exception e) {
67                 e.printStackTrace();
68             }
69         }
70     }
71     

三. 测试

启动服务器:

 

向服务器请求person.html文件,在浏览器端输入1,点query按钮:

 

显示查询结果:

 

 

完整程序请大家从[这里]下载

 

如有问题,大家来我的网站进行提问。
https://www.java123.vip/qa

 

版权声明:本教程版权归java123.vip所有,禁止任何形式的转载与引用。

转载于:https://www.cnblogs.com/java123-vip/p/9771057.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值