01【WEB开发、Servlet】

news2024/11/24 0:30:01

文章目录

  • 01【WEB开发、Servlet】
  • 一、WEB开发简介
    • 1.1 什么是WEB开发
    • 1.2 软件的架构
      • 1.2.1 BS和CS概述
      • 1.2.2 WEB资源的类别
        • 1)静态网站的特点:
        • 2)动态网站的特点:
    • 1.3 Web服务器
      • 1.3.1 什么是服务器(硬件)
      • 1.3.2 什么是Web服务器(软件)
        • 1)JavaEE的规范
        • 2)常见的Web服务器
  • 二、Tomcat的使用
    • 2.1 Tomcat的入门
      • 2.1.1 下载
      • 2.1.2 Tomcat环境变量配置
    • 2.2 Tomcat目录结构
    • 2.3 启动与关闭
    • 2.4 Tomcat项目的发布方式
      • 2.4.1 方式1:webapps
      • 2.4.2 方式2:虚拟目录
    • 2.5 修改Tomcat端口
  • 三、Servlet快速入门
    • 3.1 什么是Servlet
    • 3.2 Servlet基于xml配置
    • 3.3 在idea中运行Servlet
      • 3.3.1 idea中配置tomcat
      • 3.3.2 在idea中启动服务器
    • 3.4 Servlet基于注解配置
  • 四、Servlet的学习
    • 4.1 Servlet 生命周期
      • 4.1.1 Servlet 接口中生命周期方法
      • 4.1.2 Servlet的运行过程
      • 4.1.3 案例:
    • 4.2 Servlet的执行过程
      • 4.2.2 Servlet继承体系
      • 4.2.3 GenericServlet类的概述
      • 4.2.4 分析HttpServlet的功能

01【WEB开发、Servlet】

一、WEB开发简介

1.1 什么是WEB开发

  • WEB(World Wide Web):即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。我们通过浏览器访问的网站简称为Web网站;

很多的编程语言都可以开发Web网站,而JavaWeb就是采用Java技术栈来开发的Web网站,而我们接下来的时间都是学习JavaWeb中的技术栈;

1.2 软件的架构

1.2.1 BS和CS概述

  • BS:Browser Server 浏览器-服务器模式。客户端使用浏览器来访问服务器。
  • CS:Client Server 客户端-服务器模式。用户需要在本地电脑上安装客户端软件,再来访问服务器。

在这里插入图片描述

CS的特点:

  1. 必须在本地电脑安装客户端软件

  2. 如果服务器升级,客户端一般来说要伴随着要升级。客户端还会经常进行升级并且安装。

BS的特点:

  1. 客户端使用的是浏览器,只要有浏览器就可以执行我们程序。
  2. 服务器升级,客户端可以无缝升级,就可以直接使用最新的功能。

在这里插入图片描述

1.2.2 WEB资源的类别

分类:静态资源(网站)和动态资源(网站)

1)静态网站的特点:

静态网页是相对于动态网页而言,是指没有后台数据库、不含程序和一些不可交互的网页。你编的是什么它显示的就是什么、不会有任何改变。

使用的技术有:HTML,CSS,JS等

2)动态网站的特点:

  1. 动态网页以数据库技术为基础,可以大大减少降低网站维护的工作量;

  2. 采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、用户管理、订单管理等等;

  3. 动态网页实际上并不是独立存在于服务器上的网页文件,只有当用户请求时服务器才返回一个完整的网页;(网页是程序在运行过程中动态生成的)

使用的技术:JSP、Servlet,C#,PHP,Python

如果要学习动态网页的技术首先要用静态网页的基础

1.3 Web服务器

当我们在浏览器(客户端)通过互联网访问到一个Web网站时,那么Web网站将会把我们需要的资源响应给我们。所以这些Web网站需要提前将程序运行起来,而且由于用户访问时间的不确定性,因此Web网站一般不会关闭(永久运行下去);

我们使用JavaWeb技术栈编写好的程序(能够处理来自浏览器的访问的程序)需要部署到服务器上才能运行;

服务器一般指两个层面,一个是硬件层面,另一个是软件层面;

1.3.1 什么是服务器(硬件)

一般来说,我们平常所说的服务器其实就是一台计算机,只不过由于服务器需要处理大量的客户端请求,因此一般服务器的配置都比较好,性能高;

服务器上装的软件都是可以处理客户端请求的一些服务器软件,也叫Web服务器、Web容器;

在这里插入图片描述

1.3.2 什么是Web服务器(软件)

有了硬件层面的服务器,只是能确保这台电脑在互联网中能被其他的设备访问到(前提是大家都连接了互联网);

例如在浏览器的地址栏输入:http://12.19.128.177:881

上述的一个地址,可以使一台设备在互联网中通过IP寻找到这台服务器,并且通过881端口找到这台服务器上对应的应用程序。

但是,如何解析浏览器携带过来的数据呢?应用程序该如何响应数据到对方呢?数据格式应该为什么样子才能被浏览器所解析呢?这一系列的问题都比较麻烦;

在这里插入图片描述

因此,我们将上述这些不属于业务核心的功能交给其他工具做,这个工具就是Web服务器(软件层面),也叫Web容器;也就是说我们以后使用JavaWeb编写好的软件,需要部署到Web服务器中;

我们程序员写的Java程序运行在Web容器中,也称为Web服务器。JavaEE中Web容器也是用Java语言写的,由第三方厂商来写,Web容器运行Java虚拟机上。

在这里插入图片描述

1)JavaEE的规范

在Java中所有的服务器要实现一组Oracle公司规定的接口,这些接口称为JavaEE规范。不同厂商的JavaWeb服务器都实现了这些接口。在JavaEE中一共有13种规范。

常见的JavaEE规范有: JSP、Servlet、JDBC、XML、EJB、JMS、JTA、JavaMail、JNDI等

2)常见的Web服务器

1)WebLogic:WebLogic是Oracle公司的产品,收费;是目前应用最广泛的Web服务器,支持J2EE规范。WebLogic最早由WebLogic Inc. 开发,后并入BEA 公司,最终BEA公司又并入 Oracle公司。BEA WebLogic是用于开发、集成、集群、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。

在这里插入图片描述

2)WebSphere:

在这里插入图片描述

另一个常用的Web服务器是IBM公司的WebSphere,支持JavaEE规范。

3)其它:

名称种类公司是否开源
Glass Fish中型服务器Oracle开源
JBoss中型服务器JBoss开源
Resin小型服务器Caucho公司开源
Jetty内置式服务器Jetty/eclipse开源

4)Tomcat服务器

在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器:Tomcat

在这里插入图片描述

支持的规范:该服务器支持全部JSP以及Servlet规范

二、Tomcat的使用

2.1 Tomcat的入门

2.1.1 下载

  • apache官网:www.apache.org

  • tomcat的产品页面: http://tomcat.apache.org/

在这里插入图片描述

2.1.2 Tomcat环境变量配置

  1. 设置环境变量

新建CATALINA_HOME

在这里插入图片描述

  1. 设置访问路径,可以在命令行的任何一个目录下访问bin目录下的可执行文件。

在这里插入图片描述

Tips:一定要配置JAVA_HOME环境变量

2.2 Tomcat目录结构

目录名作用
bin启动和关闭tomcat可执行文件
conf配置文件夹,有些重要配置文件在这下面。如:server.xml, web.xml等 不建议乱修改,可能导致tomcat不能启动
libtomcat使用时依赖的一些第三方jar包
logs日志记录文件,记录服务器运行过程中一些事件。包括运行过程中出现异常
temp临时文件夹,保存服务器运行过程中生成的一些垃圾文件
webapps我们做好的项目发布的目录,可以通过浏览器来直接访问
ROOT目录:在浏览器上看到的欢迎页面,在这个目录下
worktomcat工作目录,所有已经发布项目,在这里生成中间文件执行

2.3 启动与关闭

在这里插入图片描述

在浏览器上访问:http://localhost:8080

在这里插入图片描述

2.4 Tomcat项目的发布方式

2.4.1 方式1:webapps

在webapps目录下创建一个文件夹demo,在文本夹下面有一个hello.html

在这里插入图片描述

重启服务器

访问:http://localhost:8080/demo/hello.html

在这里插入图片描述

2.4.2 方式2:虚拟目录

在conf/server.xml文件的host元素中配置Context(上下文)标签
path属性虚拟访问目录的名称
docBase属性Web应用所在目录

好处:项目不需要发布在webapps下,因为webapps项目越多,导致tomcat启动越慢。

案例:发布项目到d:/000目录下

在这里插入图片描述

找到server.xml文件中143行,host元素,写下面的代码:

<Context path="abc" docBase="d:/000"/>

如图所示:

在这里插入图片描述

在浏览器上测试:

在这里插入图片描述

2.5 修改Tomcat端口

默认情况下,Tomcat端口为8080,如果想要修改Tomcat的访问端口,可以打开Tomcat的配置文件:conf/server.xml

如图所示:

在这里插入图片描述

打开浏览器,访问:http://localhost:9090/abc/hello.html

在这里插入图片描述

三、Servlet快速入门

3.1 什么是Servlet

是一个Java写的小应用程序,运行在Web容器中,用于处理用户的请求,并且做出响应。

  • Servlet与普通的Java程序的区别:
    • 1)普通的Java程序由main函数调用,而Servlet由Web容器,Tomcat来调用。
    • 2)Servlet是运行在Web容器中
    • 3)对浏览器发送过来的请求做出响应

3.2 Servlet基于xml配置

  • 1)创建web工程/模块

在这里插入图片描述

  • 2)创建好的Web结构如下:

在这里插入图片描述

  • 3)为项目添加tomcat库

在这里插入图片描述

查看模块依赖:

在这里插入图片描述

  • 4)创建一个类HelloServlet继承于HttpServlet类,并重写doGet()方法。在浏览器上使用打印流输出Hello Servlet!
package com.dfbz.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 编写一个类继承HttpServlet
 */
public class HelloServlet extends HttpServlet {

    /**
     * 重写service方法
     *
     * @param request:  对请求数据进行封装
     * @param response: 对响应数据进行封装
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        //得到一个打印流对象
        PrintWriter out = response.getWriter();
        //打印到浏览器上
        out.print("<h1>Hello Tomcat</h1>");
    }
}
  • 5)编辑web.xml中配置servlet,设置访问地址为/hello
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--servlet基本配置-->
    <servlet>
        <!--servlet名字(随意)-->
        <servlet-name>helloServlet</servlet-name>
        <!--Java类全名-->
        <servlet-class>com.dfbz.servlet.HelloServlet</servlet-class>
    </servlet>
    <!--访问地址配置-->
    <servlet-mapping>
        <!--servlet的名字,与上面的名字相同-->
        <servlet-name>helloServlet</servlet-name>
        <!--浏览器访问地址,要以/开头 -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

</web-app>

3.3 在idea中运行Servlet

3.3.1 idea中配置tomcat

我们要将idea和tomcat集成到一起,可以通过idea就控制tomcat的启动和关闭:

  • 1)编辑运行配置

在这里插入图片描述

  • 2)添加Tomcat的配置服务器信息

在这里插入图片描述

  • 3)配置服务器的详细信息

在这里插入图片描述

  • 4)发布项目

在这里插入图片描述

3.3.2 在idea中启动服务器

点右上角的启动图标,启动Tomcat服务器

在这里插入图片描述

开发时发布的工程在这个目录

在这里插入图片描述

浏览器测试访问:http://localhost:8080//hello

在这里插入图片描述

3.4 Servlet基于注解配置

使用注解@WebServlet,指定name和urlPatterns属性

@WebServlet注解属性说明
name = “HelloServlet”Servlet名字,类似于<servlet-name>one</servlet-name>
urlPatterns = “/hello”访问地址,可以指定多个地址<url-pattern>/hello</url-pattern>
value=“/hello”如果其它属性都不写,可以省略urlPatterns,只写访问地址即可。不能与urlPatterns同时指定
  • 注解开发servlet代码,继承于HttpServlet,重写service方法:
package com.dfbz.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * @author lscl
 * @version 1.0
 * @intro:
 */
@WebServlet(name = "hello02Servlet",urlPatterns = "/hello")
public class Hello02Servlet extends HttpServlet {

    /**
     * 重写service方法
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置响应类型
        response.setContentType("text/html;charset=utf-8");
        //得到打印流
        PrintWriter out = response.getWriter();
        //在浏览器打印输出
        out.print("<h2>Hello02Servlet</h2>");
    }
}

重启Tomcat,访问浏览器:http://localhost:8080/hello02

在这里插入图片描述

四、Servlet的学习

4.1 Servlet 生命周期

4.1.1 Servlet 接口中生命周期方法

什么时候创建:默认第一次请求创建

什么时候销毁:服务器关闭销毁

方法作用运行次数
构造方法在对象实例化的时候执行1次
void init(ServletConfig config)在初始化的时候执行1次
void service(ServletRequest req, ServletResponse res)每次请求都会执行n次
void destroy()在服务器关闭的时候1次

4.1.2 Servlet的运行过程

在这里插入图片描述

4.1.3 案例:

package com.dfbz.servlet;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

/**
 * 实现Servlet接口
 */
@WebServlet("/demo01")
public class Demo01Servlet implements Servlet {

    //构造方法
    public Demo01Servlet() {
        System.out.println("Demo01被实例化");
    }

    //初始化的方法
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init方法被执行");
    }

    //得到一个配置对象,不属于生命周期的方法
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    //请求处理方法,每次请求都会调用
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service方法被调用");
    }

    //不属于生命周期的方法,得到一个字符串
    @Override
    public String getServletInfo() {
        return null;
    }

    //销毁方法:服务器关闭时候执行一次
    @Override
    public void destroy() {
        System.out.println("destroy方法被执行");
    }
}
  • 问:一个Servlet在Tomcat中会生成几个对象?

一个Servlet类在Tomcat中只会生成一个对象,不同的浏览器是不同的用户,每个用户是一个线程。

  • 问:在service方法中输出request和response对象,这两个对象从哪里来的?

这两个对象是tomcat创建,并且通过service方法传递进来,我们可以直接使用这两个对象。

4.2 Servlet的执行过程

在这里插入图片描述

  1. 浏览器发送请求,tomcat接收到请求的地址。通过请求地址找到访问哪个项目,通过最后/hello,找项目中所有的Servlet

  2. 通过反射读取每个Servlet中的注解值,匹配到/hello,找到了需要访问的servlet。

  3. 通过反射实例化这个Servlet对象

  4. 创建request和response对象

  5. 并且调用service方法,将request和response对象传递进来。

  6. 执行servlet中的代码

  7. 将响应的信息封装成response对象返回到浏览器,在浏览器上显示出来。

4.2.2 Servlet继承体系

  1. Servlet对象由Tomcat通过反射创建
  2. request与response对象由tomcat创建,并且传递给servlet中service方法。
  3. request对象封装所有浏览器发送的对象
  4. response对象封装所有的服务器响应返回给浏览器
  5. Servlet的实现类

Servlet继承结构:

在这里插入图片描述

4.2.3 GenericServlet类的概述

在这里插入图片描述

默认实现了Servlet和ServletConfig这两个接口,并且有默认的实现,它的子类是HttpServlet,为了简化HttpServlet编写。如果我们写的Servlet使用的是Http协议,建议继承于HttpServlet。现在所有的浏览器都是使用http协议,所以我们以后都是继承于HttpServelt类就可以了。

  • 源代码:
package com.dfbz.servlet;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 通过继承于GenericServlet来写一个Servlet
 */
@WebServlet("/demo4")
public class Demo4Servlet extends GenericServlet {
    //只需要重写service方法即可
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        //设置响应的类型:为html,编码:utf-8
        response.setContentType("text/html;charset=utf-8");
        //得到打印流
        PrintWriter out = response.getWriter();
        out.print("我是GenericServlet的子类");
    }
}

4.2.4 分析HttpServlet的功能

  • 查看HttpServlet类的部分源码:
public abstract class HttpServlet extends GenericServlet {
    //定义了一些常量
    private static final String METHOD_GET = "GET";
    private static final String METHOD_POST = "POST";

    public HttpServlet() {
    }

	//自己的doGet方法
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }

	//自己的doPost方法
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }

	//自己的service方法
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	    //得到请求的方法:返回GET或POST
        String method = req.getMethod();
		//如果是GET请求,调用doGet
        if (method.equals("GET")) {
              this.doGet(req, resp);
	    //如果是POST请求,调用POST方法
        } else if (method.equals("POST")) {
            this.doPost(req, resp);
        } else {
		    //如果所有的都不匹配,发送一个错误
            resp.sendError(501, errMsg);   //发送一个错误信息
        }
    }

	//Servlet接口中定义的方法
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        HttpServletRequest request;   //请求子接口
        HttpServletResponse response;   //响应子接口
        try {
            request = (HttpServletRequest)req;
            response = (HttpServletResponse)res;
        } catch (ClassCastException var6) {
            throw new ServletException("non-HTTP request or response");
        }
		//调用自己的service
        this.service(request, response);
    }
}

在Servlet规范中,只有有请求达到了Servlet,那么必将执行Servlet的service方法,而在HttpServlet的service方法中做了如下功能:

  • 1)对原有的ServletRequest、ServletResponse进行了增强,替换为了HttpServletRequest、HttpServletRequest
  • 2)调用了HttpServlet自己的service方法(重载),并且能够根据前端的提交方式不同来选择执行不同的方法
    • 如前端提交方式为get,那么则执行doGet方法,如提交方式为post,则执行doPost方法

在这里插入图片描述

需要注意的是:如果表单form method="post"提交使用的是post方法,我们servlet中就要重写doPost方法,除此之外全部使用doGet方法。

我们在前端提交时经常会发现如下提交类型:

  • Query String Parameters:当发起一次GET请求时,参数会以url string的形式进行传递。即?后的字符串则为其请求参数,并以&作为分隔符。
  • Form Data:当发起一次POST请求时,若未指定content-type,则默认content-type为application/x-www-form-urlencoded。即参数会以Form Data的形式进行传递,不会显式出现在请求url中。
  • Request Payload:当发起一次POST请求时,若content-type为application/json,则参数会以Request Payload的形式进行传递(显然的,数据格式为JSON),不会显式出现在请求url中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

再也不愁渲染素材了?AI 生成3D纹理 #Polycam3D 推出新功能

最近有不少群友运用 AIGC 工具来提升工作效率&#xff0c;我听说连 3D 数字资产的渲染贴图素材都能生成了。Mixlab小杜3D 内容制作工具也是我非常感兴趣的领域&#xff0c;Polycam3D 本是一款扫描建模工具&#xff0c;近期也推出了AI生成3D纹理的功能&#xff0c;推荐大家去尝试…

启封化工行业ERP方案 ---危险化学品的备案管理

目录 危险化学品的备案管理制度 易制毒制爆危险化学品采购流程 Sage X3 ERP 危化品备案管理方案 危险化学品的备案管理制度 不少化工企业在日常的生产经营过程中&#xff0c;都有可能会涉及到易制毒、易制爆相关的危险化学品的购买和使用&#xff0c;由于易制爆、易制毒危险…

Vue组件、组件通信、路由、axios、$event、$refs、跨域代理、element-ui

文章目录{ { } }插值表达式$eventv-for删除、新增axios方法优化启动 Vue项目Vue项目的运行流程组件的三个结构组件的使用组件之间的通信父子 组件通信兄弟组件通信操作DOM插槽 slot移除node_modules路由安装、入门嵌套路由获取路由参数跨域代理element-ui表单验证Message 消息提…

基于Java+SQL Server开发(PC)学生管理系统【100010054】

题目学生管理系统 一、摘要 在当今互联网行业&#xff0c;Java 的使用及热度在各大排行榜中始终位于前列&#xff0c;通过本次课程设计&#xff0c;巩固所学 Java 知识&#xff0c;了解 Java 项目的开发流程。本程序是使用 Java 开发的一款学生管理系统&#xff0c;设计中使用…

微信开放小程序SDK,几款SDK产品对比分析

前言 这几天看到微信团队推出了一个名为 Donut 的小程序原生语法开发移动应用框架&#xff0c;通俗的讲就是将微信小程序的能力开放给其他的企业&#xff0c;第三方的 App 也能像微信一样运行小程序了。 其实不止微信&#xff0c;面对广阔的B端市场&#xff0c;阿里也早已开放…

kafka学习笔记

1. 官网 ​​​​​​​​​​​​​​​​​​​​​​​​​Apache Kafka 2. akf X轴拆分: 水平复制&#xff0c;就是讲单体系统多运行几个实例&#xff0c;做集群加负载均衡的模式,主主、主备、主从。解决单点&#xff0c;高可用问题 Y轴拆分: 基于不同的业务拆分 Z轴拆…

年底了,千万不要跳槽。

最近不少人在私信问我&#xff1a;做了几年 Java 工程师&#xff0c;现在很迷茫&#xff0c;想跳槽但是感觉底气不足&#xff0c;不知道如何是好。 作为一个资历不浅的 Java 开发&#xff0c;这几年我面试过不少人。发现大多数面试者&#xff0c;虽然看起来工作努力&#xff0…

FPGA 点亮LED灯

设计流程 首先对项目要有一个全局的考虑&#xff0c;分析项目需要几个模块构成&#xff0c;确定各个子模块的关系和信号之间 的相互关系&#xff0c;然后确定模块的端口信号有哪些&#xff1b;根据每个模块的功能并结合芯片、接口的时序手册画 出该模块能正常工作的时序波形图…

CSS3【垂直对齐方式、光标类型、 边框圆角 、overflow溢出部分显示效果 、元素本身隐藏】

文章目录二、装饰2.1 认识基线&#xff08;了解&#xff09;2.2 文字对齐问题2.3 垂直对齐方式2.4 小结2.5&#xff08;拓展&#xff09;项目中 vertical-align 可以解决的问题2.6 光标类型2.7 边框圆角2.8 边框圆角的常见应用2.9 小结2.10 溢出部分显示效果2.11 小结2.12 元素…

智慧医院信息化建设解决方案

【版权声明】本资料来源网络&#xff0c;仅用于行业知识分享&#xff0c;供个人学习参考&#xff0c;请勿商用。 【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间进行删除&#xff01; 完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 远程会诊 云…

Java的设计模式

本文档是学习后的个人总结&#xff0c;用于备查&#xff0c;如果有冒犯&#xff0c;请联系我删除。 参考文档&#xff1a; 1、简单工厂模式&#xff0c;工厂方法模式&#xff0c;抽象工厂模式 2、Java中常用的设计模式 上面这个链接写的特别清楚&#xff0c;也有代码示例&#…

记一次云服务器EIP出现异常对外攻击的问题

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 首先祝大家圣诞快乐&#xff0c;Merry Christma&#xff01; 中毒了 今天云主机运维人员告诉我说&#x…

【Flask框架】——26 ORM关联关系

1、表的外键关联 使用SQLAlchemy创建外键非常简单。在从表中增加一个字段&#xff0c;指定这个字段外键的是哪个表的哪个字段就可以了。从表中外键的字段&#xff0c;必须和主表的主键字段类型保持一致。 这种关联只关注数据表之间的外键关联&#xff0c;不考虑Python对象之间…

ORB-SLAM3代码和算法学习—双目和单目初始化

0总述 ORB-SLAM3算法中视觉的初始化依旧放在tracking线程中&#xff0c;因此在tracking中没有为imu模式设置单独的初始化函数&#xff0c;而IMU的初始化是在localMapping中实现的。 很有用的参考链接&#xff1a;https://cloud.tencent.com/developer/article/1761043 1双目…

【高阶数据结构】搜索二叉树

&#x1f308;欢迎来到数据结构专栏~~搜索二叉树 (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&#xff01;送给自己的一句…

Word控件Spire.Doc 【评论】教程(2):在 C#、VB.NET 中删除和替换 Word 文档中的注释

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

130页5万字某市档案馆数字档案馆建设方案

【版权声明】本资料来源网络&#xff0c;仅用于行业知识分享&#xff0c;供个人学习参考&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间进行删除&#xff01; 完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 国家档案局证…

MySQL主从搭建

MySQL主从搭建一 主从配置原理二 搭建步骤&#xff08;基于两个docker容器&#xff09;三 django实现读写分离3.1 配置数据库3.2 models中创建表3.3 数据库迁移3.4 指定要使用的数据库四 Pycharm远程连接服务器进行代码的运行与调试五 Pycharm远程链接docker开发5.1 操作 docke…

SSM图书管理系统(增强版,附源码)

前篇引入&#xff08;新人必看&#xff09;&#xff1a;SSM图书管理系统&#xff08;原版&#xff09; 之前给大家分享过SSM图书管理系统项目的源码&#xff0c;热度较高&#xff0c;但我也发现功能并不是很全面&#xff0c;所以这次对系统进行了功能增强&#xff0c;以下是系…

新手入门搭建一个spring boot项目

1. 打开Idea,新建一个maven项目&#xff0c;详细情况见下图&#xff0c;&#xff08;idea版本2021.1.2&#xff09; 2.查看新建项目的maven包是否存在&#xff0c; 注意&#xff1a;maven包需要自己去下载&#xff0c;注意要下载与版本对应匹配的包 3.导入spring boot 相关的依…