学习内容》:

    //========学习内容=========
    JS的剩下dom操作和鼠标单机事件
    请求与响应(1)

    《代码内容》:

    /
    对于之前的学习我们经常用到MVC的架构模式
    M模型层 V视图层 C控制层
    *V我们现在可以用Html来开发B/S模式——>学习 请求与响应 过程
    /
    //===================================================================================//
    模拟浏览器发出请求,服务器接收————>请求响应的初步封装

    浏览器代码———-> 其中用到了字符串解析 创建Socket和流的处理
    //===================================================================================//

    1. package brower;
    2. import java.io.IOException;
    3. import java.io.PrintWriter;
    4. import java.net.Socket;
    5. import java.util.Scanner;
    6. public class Brower {
    7. private Scanner scanner = new Scanner(System.in);
    8. //设计一个方法 来模拟输入浏览器中的URL
    9. public void openBrower(){
    10. System.out.println("请输入url地址");
    11. String url = scanner.nextLine();
    12. //将输入的url地址进行解析 拆分开 ip prot 用来创建socket对象
    13. //资源名用来发出请求资源
    14. this.parseUrl(url);
    15. }
    16. //设计一个方法 用来解析拆分Url
    17. //localhost:9999/index.jsp
    18. public void parseUrl(String url){
    19. String ip = url.substring(0,url.indexOf(":"));
    20. System.out.println(ip);
    21. String port = url.substring(ip.length()+1,url.indexOf("/"));
    22. System.out.println(port);
    23. String contentAndParam = url.substring(ip.length()+1 + port.length()+1);
    24. System.out.println(contentAndParam);
    25. //用当前截取到的信息创建socket并发出请求
    26. this.createSocketAndRequest(ip,port,contentAndParam);
    27. }
    28. //设计一个方法 用来创建Socket并发出请求
    29. public void createSocketAndRequest(String ip,String port,String contentAndParam){
    30. try {
    31. Socket socket = new Socket(ip, Integer.parseInt(port));
    32. PrintWriter writer = new PrintWriter(socket.getOutputStream());
    33. writer.println(contentAndParam);
    34. writer.flush();
    35. } catch (IOException e) {
    36. e.printStackTrace();
    37. }
    38. }
    39. //测试浏览器
    40. public static void main(String[] args) {
    41. Brower brower = new Brower();
    42. brower.openBrower();
    43. }
    44. }

    服务器代码—->提前用自己的思路读取了发送过来的请求名

    1. package server;
    2. import java.io.*;
    3. import java.net.ServerSocket;
    4. import java.net.Socket;
    5. public class Server {
    6. //测试服务器
    7. public static void main(String[] args) {
    8. Server server = new Server();
    9. server.connectionSocket();
    10. }
    11. //设计一个方法 用来连接socket和接收浏览器发出的请求
    12. public void connectionSocket(){
    13. try {
    14. System.out.println("服务器启动中...");
    15. ServerSocket serverSocket = new ServerSocket(9999);
    16. Socket socket = serverSocket.accept();
    17. System.out.println("成功接收到浏览器请求");
    18. BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    19. String contentAndParam = bufferedReader.readLine();
    20. System.out.println(contentAndParam);
    21. } catch (IOException e) {
    22. e.printStackTrace();
    23. }
    24. }
    25. }

    成功运行截图—->浏览器发出请求 服务器读取请求信息

    //浏览器运行

    image.png

    //服务器运行
    image.png
    //===================================================================================//
    学习总结:
    学懂的:
    感觉封装中最用的舒服的就是字符串的截取,通过自己的思路去截取字符串
    服务端用BufferReader去读取发送过来的信息
    Socket的操作
    在公益群帮一个学生解决的排序问题详解,自己画了图,感觉挺好的,保存一下
    排序.png
    有问题的地方:**
    js的Dom操作有点听的不太舒服,跳着和拖着视频大概过了一下,会通过属性和标签名去拿到标签
    操作他,并没有细致了解,事件之前学过,忘记很多了,但是我选择直接跳过再学事件了,目前最熟的
    是鼠标单击事件,凑活目前先用着,其他的基本都差不多,后面学习到再跟着老师复习着用,感觉够用。