JAVA WEB 学习手记(一)

开始之前,先放一张百度脑图:

Java Web开发技术栈
java web

web介绍

web相关概念回顾

  1. 软件架构
    C/S:客户端端/服务器端
    B/S 浏览器/服务器端(most)
    (B/S架构零维护,开发快速)

  2. 资源分类 静态资源(所有用户访问到的结果一样html,css,js) & 动态资源(每个用户访问相同资源,得到结果不一样servlet jsp php asp)

    • 浏览器里面有静态资源的解析引擎,可以直接解析访问到的静态资源
    • 当动态资源被访问时,需要先转为静态资源 ,再返回给浏览器(重点)
    • 请求与响应模型
  3. 网络通信三要素

    • IP地址 : 省略

    • 端口 :应用程序在计算机中的唯一标识(0~65536范围)

    • 传输协议:规定数据传输的规则

      基础协议:

      1. tcp协议:三次握手,速度稍慢
      2. udp协议:不安全的广播协议,速度快

web服务器软件

web服务器软件:接收用户的请求,处理请求,做出响应

  • 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
  • web容器
  • 与java相关的web服务器软件
    1. weblogic:oracle公司,大型的javaEE服务器,支持所有的javaEE规范,收费
    2. webSphere:IBM公司, 大型的,支持所有,收费
    3. Tomcat:Apache基金组织,中小型javaEE服务器,仅支持少量,开源的,免费的
  • JavaEE:java语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范

Tomcat(web服务器软件)

Tomcat简介

  1. 下载:官网 8.5.31 core

  2. 安装:解压安装压缩包 注意,安装目录不要有中文和空格

  3. 卸载:删除目录即可

  4. 启动:双击bin目录下 startup.bat文件 Linux下是startup.sh文件

    启动后浏览器访问http://121.0.0.1:8080(默认) or http://localhost:8080 即可访问运行成功的tomcat

    • 可能遇到的问题一:命令行窗口一闪而过 原因:未正确配置JAVA_HOME环境变量

    • 启动报错:可以去logs文件去看报错信息,根据报错信息解决

      一般会将tomcat的默认端口改为80,80端口是http协议的默认端口

      可以在conf文件夹中的server.xml中修改端口号。

  5. 关闭:

    • 正常关闭:
      • bin目录下shutdown.bat
      • ctrl + c
    • 强制关闭:点击窗口上面的关闭

    后续的启动和关闭大部分其实都是在IDE中执行。

  6. 配置:

    • 部署项目的方式

      • 直接将项目文件放到webapps中

        简化部署:将项目打包成war包,再将war包放到webapps目录下,war包会自动解压缩

      • 在conf文件夹中的server.xml配置

        找到标签,在其中添加如下代码

        < Context docBase=“filepath” path = “/name” />

        docBase是指你项目文件在你电脑上路径,path是指项目的访问路径,是虚拟路径。

      • conf/server.xml是tomcat的核心配置文件,在里面配置不安全

        且修改后要重启才生效

        在 conf/catalina/localhost 目录下创建一个任意名称的xml文件

        在文件中编写

        < Context docBase=“filepath” />

        此时虚拟目录是xml文件的名称

    • 静态项目和动态项目

      • 目录结构

        • java动态项目的目录结构

          – 项目的根目录

          ​ – WEB -INF 目录

          ​ – web.xml :web的核心配置文件

          ​ – Classes目录:放置字节码文件的目录

          ​ – lib目录:放置依赖的jar包
          C:\Users\lkold\AppData\Roaming\Typora

Tomcat集成到IDEA,创建部署项目

关于这一部分网上有很多教程,建议使用IDEA或者eclipse。但现在似乎越来越多的转向了IDEA。
在这里插入图片描述
此处我用到的tomcat版本是8.5.31,Java EE 7,javaEE对应servlet3.1版本。
在这里插入图片描述
成功创建后,我们可以看到项目的目录同我们之前说过的tomcat目录是一样的。

servlet

概念及入门实践

  • 概念:运行在服务器端的小程序(server applet)

    • servlet就是一个接口,定义了java类被浏览器访问(tomcat识别)的规则
    • 将来我们定义一个类,实现servlet接口,复写方法
  • 入门实践

    1. 创建javaEE项目

    2. 定义一个类,实现Servlet接口

    3. 实现接口中的抽象方法

      代码:

      import javax.servlet.*;
      import java.io.IOException;
      
      public class servletDemo1 implements Servlet {
      	/*Servlet生命周期方法*/
          //当Servlet第一次被创建对象时执行该方法,该方法在整个生命周期中只执行一次
          public void init(ServletConfig arg0) throws ServletException {
              System.out.println("=======init=========");
          }
          //提供服务方法方法:对客户端响应的方法,该方法会被执行多次,每次请求该servlet都会执行该方法
          public void service(ServletRequest arg0, ServletResponse arg1)
                  throws ServletException, IOException {
              System.out.println("hello,servlet");
          }
          //销毁方法:当Servlet被被正常销毁时执行该方法,只执行一次
          public void destroy() {
              System.out.println("******destroy**********");
          }
          /**
          *获取ServletConfig对象
          *ServletConfig就是servlet的配置对象
          */
          public ServletConfig getServletConfig() {
              return null;
          }
      	/**
      	*获取Servlet的一些信息,版本,作者等
      	*/
          public String getServletInfo() {
              return null;
          }
      }
      

    配置Servlet

servlet

  • 执行原理:

    1. 当服务器接收到客户端浏览器的请求后,会解析请求的URL路径,获取访问的Servlet的资源路径
    2. 查找 web.xml文件,是否有对应的<url - pattern> 标签体内容
    3. 如果有,则在找到对应的<sevlet - class> 全类名
    4. tomcat会将字节码文件加载进内存,并且创建其对象
    5. 调用其方法
  • 几个重要问题

    • servlet什么时候被创建

      1. 默认情况下,第一次被访问的时候,Servlet被创建

      2. 可以配置执行servlet的创建时机
        servlet

    • Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的

      当多个用户同时访问时,可能存在线程安全问题

      解决尽量不要在Servlet里面定义成员变量,即使定义了成员变量,也不要对其修改

    • init方法一般用于加载资源,destroy方法一般用于释放资源

  • Servlet3.0

    1. 优点:支持注解配置,可以不需要web.xml

    2. 步骤

      1. 创建javaEE项目,选择servlet的版本3.0以上,可以不创建web.xml

      2. 定义一个类,实现servlet的接口

      3. 重写方法

      4. 在类上使用@WebServlet注解,进行配置
        servlet
        一个servlet可以定义多个访问路径或多层路径

        @WebServlet(" .demo1", "/usr/", “/usr/demo3”)

servlet的体系结构

servlet
推荐第三种,继承HttpServlet。

HTTP

  1. 概念:Hyper Text Transfer Protocol’

    传输协议:定义了客户端和服务器端通信时发送数据的格式

  2. 特点

    1. 基于TCP/IP协议
    2. HTTP的默认端口是80
    3. 基于请求/响应模型,即一次请求对应一次响应
    4. 无状态的:每次请求之间相互独立,不能够交互数据
  3. 举例

    浏览器访问www.baidu.com,到底向百度的服务器发送了几次请求?

    答:发送了多次请求,收到了多次响应。每张图片,css文件,js文件都是一次单独的请求。 可以按F12找到Network,里面的每一项都是一次单独的请求和响应。

  4. 历史版本

    • 1.0 每一次请求响应都会建立新的连接。(建立连接 -> 发送数据 -> 断开 ->建立连接 -> 发送数据 -> 断开)
    • 1.1 (复用建立的连接) (建立连接 -> 发送数据 ->等待一会儿若还有数据发送,复用刚才连接 - >等待一会儿没有数据发送 -> 断开)

请求消息数据格式

  1. 请求行

    请求方式 请求url 请求协议/版本

    Get url HTTP/1.1

    • HTTP协议中有7钟请求方式,常用的由2
      • GET:
        1. 请求参数在请求行中,在url后
        2. 请求的url长度有限制的
        3. 不太安全
      • POST
        1. 请求的参数在请求中
        2. 请求的url长度没有限制
        3. 相对安全
  2. 请求头

    请求头名称: 请求头值(多个值用 , 分隔开)

    常见的请求头:

    • User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本

      可以在服务器端获取改头的信息,解决浏览器的兼容问题

    • Aceept:告诉服务器,浏览器可以接受你给我响应的什么样的数据格式

    • Referer:https://www.baidu.com/

      ​ 告诉服务器,当前请求从哪里来

      作用

         			1. 防盗链
         			2. 统计工作:方便统计比如一些流量的来源。
      
  3. 请求空行

    空行,用于分割POST请求头和请求体

  4. 请求体(正文) GET方式无请求体

    封装POST请求消息的请求参数的

以上信息可在浏览器的调试界面的Network看到

http

响应消息数据格式

与请求消息数据格式很类似。

  1. 响应行

    组成:协议/版本 响应状态码 状态码描述

    响应状态码是指服务器告诉客户端本次请求和响应的一个状态

    响应状态码 Value
    1xx 服务器接收客户端消息,但为接收完成,等待一段时间,发送1xx状态码
    2xx 成功. 代表状态码:200
    3xx 重定向。 代表状态码 :302(重定向) 304(访问缓存)
    4xx 客户端错误 代表:404(请求路径无对应资源) 405(请求方式无对应的doXXX方法)
    5xx 服务器错误 代表:500(服务器内部出现异常)
  2. 响应头

    组成:头名称:值

    常见响应头:

    1. Content-Type: 服务器告诉客户端本次响应体数据格式及编码格式

      Content-Type: text/html; charset=UTF-8

    2. Content-Length: 666 表示字节的个数

    3. Content-disposition:服务器告诉客户端以什么样的格式打开响应体数据

      默认值是:in-line 在当前页面内打开

      attachment:以附件形式打开响应体 (文件下载)

  3. 响应空行

  4. 响应体

    真实的传输的数据

总结

记JAVA web 第一次学习。同时为了跟上潮流,已经从eclipse转为IDEA。

有什么问题欢迎大家在下方评论或者私信或者联系邮箱[email protected]

发布了19 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44307764/article/details/103939108