NO.1.5 JAVA网络编程之B/S浏览器服务器模型的访问路径问题

问题

在NO.1中,已经解决了由于写错文件位置而导致浏览器无法获取html页面的问题

但是,还剩下一个问题就是,浏览器必须输入绝对路径,然后发送给客户端,客户端再一一分割,形成合适的路径,然后找到html文件,再返回给浏览器解析。

这样的用户体验无疑是很差的,因此要做到,用户只需要在浏览器输入简单的URL就能访问到html页面。


解决思路:

1:使用  if 语句

在NO.1中,浏览器输入的是http://127.0.0.1:8989/WEBjava/B_S_webMod/web/index.html  这样的绝对路径

现在只需要改成,http://127.0.0.1:8989/abc  即可

然后当服务器端接收到  浏览器发过来的 请求是 GET /abc HTTP/1.1 的时候

使用一下语句  if ( line.euqals( "GET /abc HTTP/1.1" ) {            //注意这里是字符串(引用类型)之间的比较,要用                                                              ..........                                          //                        A . equals ( B )                                                                                                        }                                            // 这里的line表示浏览器发过来的请求信息

尝试:

import java.io.*;

import java.net.*;

public class test {

        public static void main(String[] args) throws Exception {

                                    ServerSocket server = new ServerSocket(8989);

                                    Socket whichSocket = server.accept();

                                    InputStream ipts = whichSocket.getInputStream();

                                    BufferedReader br = new BufferedReader (new InputStreamReader(ipts)) ;

                                     String line = br.readLine();

                                      System.out.println(line);   //浏览器发过来的请求信息

                                    if  (   line.equals("GET /abc HTTP/1.1")   )  //如果信息对应则执行下面代码

                            {

                                    FileInputStream fipts = new  FileInputStream("C:/Users/Administrator/Desktop/html/5.html");      这里直接把页面文件的绝对路径写上,无论是java目录下的,还是原本html文件的绝对路径,只要找得到都行,注意一点,URL地址的分隔线要用   /   这样的划线

                                    OutputStream otps = whichSocket.getOutputStream();


                                    otps.write("HTTP/1.1 200 OK\r\n".getBytes());

                                    otps.write("Content-Type:text/html\r\n".getBytes());

                                    otps.write("\r\n".getBytes());


                                    int len = 0;

                                    byte[] bytes = new byte[1024];

                                    while ((len = fipts.read(bytes)) != -1 ){

                                                    otps.write(bytes,0,len);

                                        }

                                        fipts.close();

                       }

                                         ipts.close();

                                          whichSocket.close();

                                             server.close();

    } 

}

结果:

浏览器成功访问到html页面,但图片啥的没有显示,不过没关系,这次主要解决使用简便URL访问的问题 

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。