JavaWeb

JavaWeb

  • [一、JavaWeb 是什么?](#一、JavaWeb 是什么?)
  • [二、JavaWeb 发展阶段](#二、JavaWeb 发展阶段)
  • [三、JavaWeb 常用架构](#三、JavaWeb 常用架构)
  • [四、JavaWeb 项目结构(带web.xml的)](#四、JavaWeb 项目结构(带web.xml的))
  • 五、如何打包
  • 六、war包部署
    • [1. Tomcat 介绍](#1. Tomcat 介绍)
    • [2. Tomcat目录结构](#2. Tomcat目录结构)
    • [3. 开始部署项目](#3. 开始部署项目)
  • [七、jar 包部署](#七、jar 包部署)
  • 扩展:全局配置文件优先级

一、JavaWeb 是什么?

JavaWeb是指用Java技术来解决Web互联网领域的技术栈。基于B/S架构

知识小贴士:

Java 是什么?

Java不仅是一门编程语言,还是一个完整的技术体系。它包括了Java SE(标准版)、Java EE(企业版)和Java ME(微型版)等多个版本,以及Java虚拟机(JVM)、Java类库、Java开发工具等组成部分。此外,Java还拥有庞大的开源社区和丰富的第三方库和框架,为开发者提供了强大的支持和帮助。
Web 是什么?

  • Web(万维网):是一个庞大的、分布式的信息系统,它使用超文本传输协议(HTTP)等协议在互联网上传输超文本标记语言(HTML)文档和其他类型的数据。

  • Web由许多不同的组件和技术构成,包括Web服务器、Web客户端(如浏览器)、Web编程语言(如HTML、CSS、JavaScript)、Web框架(如React、Vue)、数据库等。
    B/S架构 是什么?

  • B/S架构:浏览器/服务器,我们上网时候所访问的网站基本上全是该模式的项目,用户不需要下载任何东西,只需要浏览器就可以访问到这个项目。

  • C/S架构:客户端/服务器,比如QQ或者一些大型游戏,用户需要先下载软件的客户端,然后才能使用
    Web客户端 是什么?

Web客户端是用户与Web应用进行交互的界面,它可以是浏览器、移动应用或其他类型的客户端软件。

在JavaWeb开发中,Web客户端主要涉及的技术包括:

  1. HTML/CSS/JavaScript:这是构建网页的基础技术。HTML用于定义网页的结构和内容,CSS用于美化网页的外观和布局,而JavaScript则用于实现网页的交互功能。
  2. 前端框架:如React、Vue等,这些框架提供了更高效的开发方式,允许开发者创建动态、响应式的用户界面。
  3. 浏览器:作为Web客户端的主要表现形式,浏览器负责解析和渲染HTML、CSS和JavaScript,呈现给用户一个可视化的界面。
    Web服务端 是什么?

Web服务端是处理用户请求、执行业务逻辑并返回响应的后台系统。

在JavaWeb开发中,Web服务端主要涉及的技术包括:

  1. Java ServletServletJava EE标准的一部分,用于处理HTTP请求和响应。它是Web服务端的核心组件之一。
  2. JSP(JavaServer Pages):JSP是一种用于生成动态网页内容的技术。它允许开发者在HTML页面中嵌入Java代码,从而动态地生成网页内容。
  3. Spring框架:Spring是一个轻量级的框架,广泛应用于企业级应用开发。它提供了依赖注入、面向切面编程等功能,并支持构建Web应用程序。
  4. 数据库:Web服务端通常需要与数据库进行交互,以存储和检索数据。常用的数据库包括MySQL、PostgreSQL、Oracle等。
  5. ORM(对象关系映射):如Hibernate、JPA、MyBatis等,ORM技术允许开发者使用面向对象的方式来操作数据库,简化了数据库操作的过程。
  6. Web服务器:如Tomcat、Jetty、Nginx等,Web服务器用于部署和运行Java Web应用程序,并处理来自客户端的请求。
  7. ...

二、JavaWeb 发展阶段

JavaWeb的发展阶段可以划分为以下几个主要时期:

一、静态网页时代

  • 特点:网站主要由静态的HTML页面组成,这些页面可能使用Dreamweaver等工具进行编写。静态页面无法满足动态内容的需求,因此很快迎来了动态网页的时代。

二、Servlet和JSP的兴起(1997年~2002年)

  • Servlet:Servlet是一种在服务器端运行的Java应用程序,用于处理HTTP请求和响应。它提供了一种动态生成Web页面的方式。
  • JSP(JavaServer Pages):JSP是Servlet技术的一个扩展,允许开发者将Java代码嵌入到HTML页面中,从而制作出动态网页。JSP的引入使得前端程序员能够更方便地修改代码,迎合了前后端专业分工的大趋势。

三、Java EE的建立与成熟(2002年~2013年)

  • Java EE(Java 2 Platform, Enterprise Edition,后更名为Java Enterprise Edition):Java EE提供了一整套规范和技术,包括Servlet、JSP、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JTA(Java Transaction API)等,用于构建复杂的企业级应用程序。
  • 发展阶段:Java EE的各个版本相继推出,引入了许多新的功能和技术,如JPA(Java Persistence API)、JSF(JavaServer Faces)、CDI(Contexts and Dependency Injection)等,使得Java Web开发更加高效和便捷。

四、MVC模式与框架阶段(2000年代中后期~至今)

  • MVC模式:在Servlet + JSP模式的基础上,Java阵营进一步发展出了一种适合JavaWeb应用的设计模式,即MVC(Model-View-Controller)设计模式。它将程序分为显示层(Viewer)、控制层(Controller)和模型层(Model),提高了代码的可维护性和可重用性。
  • Struts框架:Struts是JavaWeb时代早期的一个流行的MVC框架。它通过一个中央的servlet(ActionServlet)来协调不同的页面请求,并将这些请求映射到相应的业务逻辑处理单元上。然而,Struts的配置相对繁琐,随着应用规模的增长,配置管理变得越来越复杂。
  • Spring框架:Spring Framework是一个开源的轻量级应用框架,通过依赖注入(IoC)和面向切面编程(AOP)等特性简化了Java应用程序的开发。Spring MVC是Spring框架的一个模块,它实现了Web MVC设计模式,为开发者提供了一种轻量级的方式来构建动态Web应用程序。Spring框架的出现极大地改变了Java Web开发的格局。

五、微服务架构的兴起(2010年至今)

  • 微服务架构:随着云计算和分布式系统的发展,微服务架构逐渐成为了一种流行的架构风格。在微服务架构中,应用程序被拆分为一组小型、独立的服务,每个服务都运行在自己的进程中,并通过HTTP或消息队列等方式进行通信。
  • Java在微服务架构中的应用:Java语言和技术在微服务架构中具有很好的适用性。Spring Cloud等技术成为了开发和部署Java微服务应用的主流选择。

六、Java EE向Jakarta EE过渡(2017年至今)

  • 背景:随着Java EE的发展和Oracle对其的管理策略变化,Java社区决定将Java EE项目转交给Eclipse基金会,并更名为Jakarta EE。
  • 目标:Jakarta EE旨在保持对Java企业级开发的继续支持,并积极推动云原生应用程序的开发和部署。这一变化为Java Web开发带来了新的发展机遇和挑战。

三、JavaWeb 常用架构

Servlet + JSP 架构

Servlet是由Java提供用于开发web服务器应用程序的一个组件,运行在服务端,由servlet容器管理,用来生成动态内容。一个Servlet实例是实现了特殊接口Servlet的Java类,所有自定义的servlet均必须实现Servlet接口。

JSP 本质上就是Servlet,它是Servlet的一种特殊新式(由SUN公司推出),每个jsp页面都是一个servlet实例。

区别:

  • Servlet是HTML代码和Java代码分离,侧重逻辑控制
  • jsp是HTML页面中内嵌的Java代码,侧重页面显示

SSH 架构

SSH是Struts、Spring和Hibernate的集成框架。这三个框架各自承担不同的职责:

  1. Struts:作为系统的整体基础架构,负责MVC(Model-View-Controller)的分离。在Struts框架的模型部分,控制业务跳转。
  2. Spring:做管理,管理struts和hibernate。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,提供了业务对象管理等功能。
  3. Hibernate:负责持久化层。通过持久化数据对象,进行对象关系的映射,并以对象的角度来访问数据库。Hibernate封装了JDBC,使得开发人员可以以面向对象编程的思想来操控数据库。

SSM 架构

SSM是Spring MVC、Spring和MyBatis的集成框架。这三个框架同样各自承担不同的职责:

  1. Spring MVC:是Spring中的一部分,负责请求的转发和视图管理。它分离了控制器、模型对象、分派器以及处理程序对象的角色,使得它们更容易进行定制。
  2. Spring:与SSH中的Spring相同,负责业务对象管理等功能。Spring框架是一个分层架构,由多个定义良好的模块组成,这些模块可以单独存在或与其他模块联合实现。
  3. MyBatis:是一个基于Java的持久层框架,它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

SpringBoot架构

SpringCloud架构

四、JavaWeb 项目结构(带web.xml的)

一般大致为以下:

上图的 web模块(默认名称是 webapp) 是Java Web项目中的一个重要部分,它通常包含了Web应用程序的所有资源和配置文件。

WEB-INF 是什么?

WEB-INF目录是一个受保护的目录,它不会被Web服务器直接暴露给外部用户。

所以可以存放Web应用程序的私有资源和配置文件。

  • 私有资源:包括 Servlet类、JSP页面(虽然JSP页面通常放在webapp的根目录或特定子目录下,但JSP的编译结果和相关的Servlet类会放在WEB-INF下)、静态资源(如模板文件、配置文件等,但通常不包括直接供客户端访问的静态资源,如图片、CSS、JavaScript等,这些资源一般放在webapp的其他目录下)以及
  • 配置文件:web.xml配置文件等。
    web.xml文件 是什么?

web.xml文件是Java Web应用程序的核心配置文件之一,它位于WEB-INF目录下。

这个文件根据Java Servlet规范定义,用于配置Web应用的行为和组件设置。具体作用包括但不限于:

  1. 定义Servlet类及其映射URL,指定Servlet初始化参数和装载顺序。
  2. 设置过滤器(Filter),指定它们应用于哪些URL请求,并可以传递初始化参数给过滤器。
  3. 注册监听器,用于监听Web应用生命周期中的特定事件,如启动、停止、会话创建和销毁等。
  4. 配置HTTP状态代码对应的错误页面,以便在发生特定错误时显示相应的错误信息页面。
  5. 设置Web应用默认的会话超时时间。
  6. 定义安全角色、登录认证和授权规则,控制对Web资源的访问权限。

三层开发

Dao层+Service层+Servlet层(其实也是Controller层)

参考

【1】https://blog.csdn.net/m0_46988935/article/details/115693714

五、如何打包

存在 web.xml 文件的项目默认是打war包的(比如Servlet + JSP架构、SSH架构、SSM架构),
不存在web.xml 的默认是打jar包(比如SpringBoot架构、SpringCloud架构)

一、intellij idea打war包

1、第一步在我们的电脑上打开IntelliJ IDEA,按ctrl+alt+shift+s键打开Project Structure,点击+号图标,选择"Artifacts->Web Application Archive",如下图所示:

2、第二步进去之后,可以修改打包的war包名字和存放路径,默认是项目路径\out\artifacts\下面,将右侧的全选,鼠标右键点击"Put into Output Root",如下图所示:

3、第三步全部添加到左侧之后,点击ok,如下图所示:

4、第四步点击Build->Build Artifacts,进行打包项目成war,如下图所示:

5.第五步在项目下面的target文件夹中可以看到打包的war包,也可以自己打包之前选择存放的路径,如下图所示:

参考

【1】https://blog.csdn.net/cm15835106905/article/details/107927847

六、war包部署

war包是通过Tomcat进行部署的

1. Tomcat 介绍

Tomcat是常见的免费的web服务器.

Tomcat 这个名字的来历,Tomcat是一种野外的猫科动物,不依赖人类,独立生活。 Tomcat的作者,取这个名字的初衷是希望,这一款服务器可以自力更生,自给自足,像Tomcat这样一种野生动物一般,不依赖其他插件,而可以独立达到提供web 服务的效果。

2. Tomcat目录结构

3. 开始部署项目

1、将编写并编译好的web项目(注意要是编译好的,如果是 eclipse,可以将项目打成 war 包放入),放入到 webapps 中(webapps内默认有5个固定的文件夹,不用管)。

2、启动tomcat服务器(双击 apache-tomcat-6.0.16\bin 目录下的 startup.bat,启动服务器)

3、在浏览器输入:http://localhost:8080/项目名/访问的文件名

参考

【1】Tomcat 部署项目的三种方法

七、jar 包部署

SpringBoot、SpringCloud 由于内置Tomcat ,所以可以直接以jar包方式启动

扩展:全局配置文件优先级

全局配置文件优先级

优先级:以下图顺序号代表配置文件的优先级,并且相同配置文件按顺序加载可以实现互补,但是不会被覆盖。

优先级

在同一级目录下,会先比较前缀bootstrap、application,其中bootstrap比application的优先级高,其次再去比较后缀.properties、.yml,
其中2.4.0之前版本.properties比.yml优先级高
其中2.4.0的版本yml比.properties优先级高

配置覆盖

  • 当同一个配置属性在bootstrap.properties和bootstrap.yml文件中都存在时,那么properties中的配置会被加载,而忽略yml文件中的配置(即优先级高的配置覆盖优先级低的配置),不同配置相互互补。此处application(.properties/yml)同理
  • 但当同一配置在bootstrap和application中都存在时,那么虽然优先加载bootstrap但是会被applicatioin中的配置覆盖,
  • 当同一个配置属性在四种配置(bootstrap.properties、bootstrap.ym、application.properties、application.yml)都存在
  • 根据不同版本的 application配置文件会覆盖其他配置文件。
    2.4.0之前版本是application.properties,2.4.0的版本是application.yml
相关推荐
知兀14 天前
Maven
java·笔记·maven·javaweb·黑马程序员
SunnyRivers19 天前
黑马程序员Java项目实战《苍穹外卖》Day12
javaweb·苍穹外卖
岁岁岁平安19 天前
JavaWeb学习(4)(四大域、HttpSession原理(面试)、SessionAPI、Session实现验证码功能)
java·学习·javaweb·session·httpsession
大臣不想在月亮上上热搜24 天前
黑马2024AI+JavaWeb开发入门Day05-数据库DDL、DML、DQL飞书作业
sql·mysql·javaweb
SunnyRivers25 天前
黑马程序员Java项目实战《苍穹外卖》Day05
javaweb·苍穹外卖
岁岁岁平安1 个月前
JavaWeb实战(1)(重点:分页查询、jstl标签与jsp、EL表达式、Bootstrap组件搭建页面、jdbc)
java·servlet·javaweb·jsp·el·分页查询·jstl
SunnyRivers1 个月前
黑马程序员Java项目实战《苍穹外卖》Day01
javaweb·苍穹外卖
killsime1 个月前
JavaWeb开发 : tomcat+Servlet+JSP
java·servlet·tomcat·javaweb
雷神乐乐1 个月前
MyBatis中的${}和#{}区别
数据库·sql·mybatis·javaweb