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
相关推荐
郑洁文4 天前
基于Javaweb的高校网上订餐系统
javaweb·毕设·高校网上订餐系统
初学小白...1 个月前
JavaWeb
javaweb·web
一只大袋鼠1 个月前
SpringMVC 框架中的拦截器
java·springmvc·javaweb·拦截器
一只大袋鼠1 个月前
SpringMVC全局异常处理
java·开发语言·springmvc·javaweb
一只大袋鼠1 个月前
JavaWeb四种文件上传方式(下篇)
java·开发语言·springmvc·javaweb
一只大袋鼠1 个月前
JavaWeb四种文件上传方式(上篇)
java·开发语言·servlet·javaweb
abcnull1 个月前
传统的JavaWeb项目Demo快速学习!
java·servlet·elementui·vue·javaweb
float_com2 个月前
【JavaWeb】----- 登录认证 与 统一拦截架构详解
javaweb
float_com2 个月前
【JavaWeb】----- Linux基础入门
linux·javaweb
夹芯饼干2 个月前
JavaWeb 核心:Request 与 Response 对象全解析与实战
javaweb·重定向·request对象·response对象