• 详细javaweb基础


    目录

    🏳️‍🌈一、HTTP协议

       🍁 二、交互流程

       🍁 三、请求

         🍁四、响应

    🏳️‍🌈二:Tomcat服务器

        三、request对象

        四、response对象


    🏳️‍🌈一、HTTP协议

           1. 概念:超文本传输协议

            2. 作用:规范了客户端(浏览器)和服务器的数据交互格式

            3. 特点

                1. 简单快速:客户端向服务器请求服务时,仅通过键值对来传输请求方法和路径

                2. 灵活:允许传输任意类型的数据对象,正在传输的类型由Content-Type标记(例如图片,文本)

                3. 持续连接:处理完客户端的一个请求时候,服务器不立马关闭,而是在指定的时间之后才关闭

                4. 无状态:如果第二次请求中需要用到第一次请求的数据,那么必须在请求第一次的数据

       🍁 二、交互流程

           1. 连接:客户端和服务器端建立连接

            2. 请求:客户端发送请求数据到服务器端

            3. 响应:服务器端接收到请求后进行处理,将处理结果返回响应客户端

            4. 关闭:关闭客户端和服务器端连接(HTTP1.1版本之后不会立即关闭)

       🍁 三、请求

           1. 请求格式

                1. 请求行:请求方式、请求地址和HTTP协议版本

                2. 请求头:消息报头,附加信息,不包括核心数据

                3. 空行:请求头和请求实体之间的必须有空行

                4. 请求实体:核心数据,非必须

            2. 请求方式

                1. GET请求(没有请求实体):请求数据以?的形式拼接在请求头中,URL中有具体的请求数据,不安全,由于浏览器对URL的长度有限制,所以适合数据量小的传输           

                2. POST请求:请求数据字请求实体中发送,URL中没有具体的请求数据,安全,适合数据量大的传输

                    

         🍁四、响应

            1. 响应格式

                1. 响应行:HTTP版本、状态码和状态消息

                2. 响应头:消息报头,附加信息

                3. 空行:响应头和响应实体之间必须存在空行

                4. 响应实体:服务器返回给客户端的数据

            2. 状态码

                 1. 200:客户端请求成功

                 2. 400:客户端请求有语法错误,不能被服务器所理解

                 3. 403:服务器收到请求,但是拒绝服务

                 4. 404:请求资源不存在(URL错误)

                 5. 500:服务器发生不可预期的错误

                 6. 503:服务器不能处理当前客户端的请求,一段时间后恢复正常

    🏳️‍🌈二:Tomcat服务器

        一、概述

           1. 概念:Tomcat 服务器是一个免费的开源的轻量级Web 应用服务器(Java编写的),是开发和调试JSP 程序的首选。

            2. 作用:能够根据客户端的请求来启动并运行我们编写的数据逻辑代码。

        二、安装

           1. 下载

                1. Tomcat官网

                      

                2. 点击左侧Download下对应的版本

                      

                3. 下载压缩包(zip)

                     

                  4. 解压即可

            2. 目录介绍

                1. bin:存放tomcat的命令,以.sh结尾的(linux命令),以.bat结尾的(windows命令)

                    1. startup:启动Tomcat

                    2. shutdown:关闭Tomcat

                2. conf:存放tomcat的一些配置文件

                    1. server.xml:设置端口、域名或IP、默认加载的项目及请求编码

                    2. web.xml:文件类型设置

                    3. context.xml:配置数据源

                    4. tomcat-users.xml:管理tomcat的用户与权限

                3. lib:存放tomcat运行需要加载的jar包

                4. log:存放tomcat在运行过程中产生的日志文件

                5. webapps:存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序

                6. work:存放tomcat在运行时的编译后文件

     

        三、检测安装

           1. 双击bin目录下的startup文件,不要关闭

            2. 在浏览器URL中输入:localhost:8080

            3. 如果跳转到tomcat推荐页面则安装成功

    三:Servlet

        一、概述

           1. 概念:Servlet是指任何实现了这个Servlet接口的类,Servlet运行于支持Java的应用服务器中,Servlet只用来扩展基于HTTP协议的Web服务器。

            2. 作用 :交互式地浏览和修改数据,动态生成网页。

            2. 使用

                1. 创建普通的Java类继承HttpServlet

                2. 覆写service方法

                3. 在service方法中书写逻辑代码

                4. 在webRoot下的WEB-INF文件夹下的web.xml文件中配置servlet的别名

        二、访问流程和生命周期

           1. 访问流程

                1. 客户端输入URL(服务器地址:端口号/虚拟项目名/servlet的别名)发起请求到服务器

                2. 服务器解析请求URL地址中的URI信息(虚拟项目名/servlet的别名)

                3. 按照虚拟项目名在webapps目录下找到对应的项目文件

                4. 按照servlet的别名(url-pattern)在项目下的web.xml中检索对应的servlet

                5. 运行servlet-class中的所对应的servlet

            2. 生命周期

                1. 从第一次加载进内存(调用)到服务器关闭

                2. 在web.xml中配置了load-on-startup,生命周期为从服务器的启动到服务器的关闭

            3. doGet、doPost、service方法的区别

                1. service方法:可以处理get/post方式的请求,如果servlet中有service方法,会优先调用service方法对请求进行处理。如果service方法中调用了父类的service方法,那么在此service执行完成之后会再次执行对应请求的处理方法,如果不存在会报405错误,一般情况下不会调用。

                2. doGet方法:只能处理get方式的请求

                3. doPos方法: 只能处理post的请求方式

        三、request对象

           1. 概述

               1. 概念: 封装了所有请求信息,由服务器创建并作为实参传递给处理请求的servlet的service方法。

               2. 作用:解决了一次请求内的数据共享问题

               3. 作用域:一次请求内

           2. 获取请求行数据

               1. 获取请求方式:String method = req.getMethod();

               2. 获取请求URL:String url = req.getRequestURl();

               3. 获取请求URI: String uri = req.getRequestURI();

               4. 获取请求协议:String scheme = req.getScheme();

           3. 获取请求头数据

               1. 获取指定的请求头数据:String header = req.getHeader("键名");

               2. 获取所有请求头键的枚举

    1.                Enumeration e = req.getHeaderNames();
    2.                while(e.hasMoreElements) {
    3.                    String name = (String) e.nextElement();
    4.                    String value = req.getHeader(name);
    5.                    System.out.println(name + ":" + value);
    6.                }

           4. 获取用户数据

               1. 获取指定的用户数据:String name = req.getParameter("键名");

               2. 获取同键不同值的用户数据(多选):  String[]  values = req.getParameterValues("键名");

           5. 设置请求编码格式:req.setCharacterEncoding("")

           6. 请求转发

               1. 作用:多个servlet联动操作处理请求。

               2. 特点:一次请求(只有一个request对象),地址栏信息不改变。

               3. 使用: req.getRequestDispatcher("jsp路径").forward(req, resp);

                               return;

           7. 数据的存储和获取(存储优先于获取)

               1. 存储:req.setAttribute(Object name, Object value);

               2. 获取:req.getAttribute(Object obj);

        四、response对象

            1. 概述

                 1. 概念:封装了所有响应信息,由服务器创建并作为实参传递给要处理请求的servlet的service方法

                 2. 作用:将服务器的信息响应给浏览器

             2. 设置响应编码格式:resp.setContentType("text/html;charset=utf-8");

             3. 设置响应状态码:sendError(int sc, String msg);

             4. 设置响应头

                 1. 同键会覆盖:setHeader(“键名”, “键值”);

                 2. 同键不覆盖:addHeader(“键名”, “键值”);

             5. 设置响应实体

                 1. 响应字符串或HTML页面:resp.getWrite().write("");

                 2. 请求重定向:resp.sendRedirect("uri");

             6. 请求重定向

                 1. 作用:解决表单重复提交并将不能处理的请求交给其他servlet处理。

                 2. 特点:多次请求(多个request对象),地址栏信息改变。

                 3. 使用:resp.sendRedirect("uri");

  • 相关阅读:
    05、Python -- 爬取ts文件格式视频思路
    GIt快速入门(一文学会使用Git)
    搭建免费的ftp服务器
    swift 侧滑返回
    grpc 常用的几种通信模式
    加码云原生,斩获 19000 Star 的开源国产数据库又上新
    【看好了】如何使用fiddler实现手机抓包,Filters过滤器!
    点的螺旋距离
    ansible常用运维命令-基于centos8_ansible2.12.7_秘钥方式连接
    pnpm:高效、快速的npm
  • 原文地址:https://blog.csdn.net/m0_62336865/article/details/127456832