互联网轻量级框架整合之JavaEE基础

news2024/10/10 4:22:19

不得不解释得几个概念

JavaEE

SUN公司提出来的企业版Java开发中间件,主要用于企业级互联网系统的框架搭建,同时因为Java语言优质的平台无关性、可移植性、健壮性、支持多线程和安全性等优势,其迅速成为构建企业互联网平台的主流技术;其本质是一种容器加组件技术,容器是用来管理组件行为的集合工具,它规范了组件的运转,例如组件的行为外部环境的交互、组建的生命周期、组件之间的合作依赖关系及运行等等,而组件是开发者编写或者引入的第三方程序代码,只需要按照容器所定义的规范开发组件,组件便可在容器中运行;JavaEE的主要组件包括JSP、Servlet、EJB(Enterprise Java Bean)

在这里插入图片描述

JavaEE容器

Web容器:Web容器是JavaEE容器之一,它包含一个Servlet容器,而Servlet容器可以运行JavaEE的核心组件Servlet,实际上JSP最终也是被Web容器翻译为Servlet,再通过Servlet容器运行;在Web容器中,除了Servlet容器运行Servlet组件外,Web容器还可以运行HTML等文件;实现Web容器规范的服务器有很多,诸如Tomcat、Jetty、Wildfly(以前的JBoss)和GlassFish等等,他们都遵循JavaEE规范

Web服务器:Web服务器的作用说穿了就是,将某个主机上的资源映射为一个URL供外界访问,任何一个应用程序都包含3个步骤,接受请求、处理请求、响应请求,而其中请求和响应是共性的,且没有差异性,通过浏览器链接访问京东或者淘宝,传递给浏览器的都是JSON数据,于是就把接收和响应两个步骤抽取成Web服务器

在这里插入图片描述

Servlet容器:存放着Servlet对象,我们为什么能通过Web服务器映射的URL访问资源?就要Servlet容器里的对象完成Web服务器不能完成的任务就是处理请求的逻辑,而这部分通常都是差异性的,抽取出来做成Servlet,由工程师自己编写;之后随着互联网的发展,出现了更细化的分层,又将逻辑从Servlet中抽取出来,形成Service和Dao;然而Servlet并不擅长像浏览器输出HTML页面,因此出现了JSP(Java Server Page),它存在的意义全在于方便编写动态页面,是Java和HTML更好的结合;而当Spring家族出现后,Servlet将退居幕后,取而代之的是更方便的SpringMVC,SpringMVC的核心组件DispatcherServlet其本质就是一个Servlet,看起来似乎没有半毛钱关系

在这里插入图片描述

EJB容器:EJB容器是JavaEE的一个企业级Java Bean规范,其运行的组件是EJB,在默认情况下,Tomcat只提供Web容器不提供EJB容器,在没有引入EJB插件的情况下,Tomcat无法运行EJB;Wildfly和GlassFish等服务器则提供了EJB容器;目前EJB容器已经被大多数企业抛弃存在诸多问题

其他应用容器:还有一些厂商提供了特别的容器,用于解决特殊的问题,例如Java NIO,它是一种支持字节组件的容器

JavaEE组件

JavaEE组件是运行在JavaEE容器中的程序片段,该组件可以和Java的其他技术融合;在不同的容器中存在不同的组件,在Web容器中主要的组件是Servlet和JSP,而当前的Java应用更流行的是前后端分离,因此JSP技术也走向了淘汰,但本质上说JSP也是一种Servlet技术,Web容器会先将JSP翻译为Servlet再执行,而EJB中主要的组件是Java Bean,可以细分为会话Bean、实体Bean和消息驱动Bean,也属于淘汰的技术;其他的组件则需要根据实际需要自行引入

JavaEE Web项目构建

Web服务器:Tomcat9.0.87 & 编译器:IntelliJ IDEA &项目管理和自动化构建工具:Maven & Java版本:java version “1.8.0_311”

Java面向对象系列[v1.0.0][JDK安装与配置]

Java面向对象系列[v1.0.0][集成开发环境搭建]

Java面向对象系列[v1.0.0][Maven开发环境]

Tomcat支持HTTP,并且支持Web容器的规范,同时支持JSP和Servlet等JavaEE技术,Tomcat就是Web服务器和Servlet容器的结合体可以通过官方网站下载需要的的版本,注意版本的匹配,避免无意的异常
在这里插入图片描述
下载完成后,在bin目录下找到startup.bat文件,执行即可启动Tomcat,启动时会弹出命令行窗口,如图所示
在这里插入图片描述
打开浏览器,访问http://localhost:8080则可以访问该Tomcat的控制台页面
在这里插入图片描述
在启动startup.bat的时候,命令行窗口如果出现中文的乱码,其实不影响,但如果想要正常显示中文,在tomcat的目录下,找到conf文件夹,文件中有个logging.properties文件,修改文件中的配置项java.util.logging.ConsoleHandler.encoding = GBK的值为GBK,然后重启tomcat即可
在这里插入图片描述

在Tomcat的控台页面,如果需要进行管理等相关动作,是需要登录的,在tomcat目录下的conf文件夹内有配置用户的文件tomcat-users.xml
在这里插入图片描述

文件夹说明
bin放置操作Tomcat 服务器的命令,通常以在Windows系统下可执行批处理文件或在Linux下执行的Shell文件为主
conf放置Tomcat的配置文件
lib存放启动的包,例如如果Tomcat需要连接数据源,则需要将对应的数据库连接包放在该目录下
logs放置Tomcat的日志文件
temp缓存目录,放置Tomcat缓存的内容
webappsWeb项目部署目录,将JavaEE的Web项目放在这里,会被自动发布
workTomcat的工作目录,在Tomcat运行时,JSP会被翻译为Servlet,而编译Servlet后生成的class文件,则自动存在这里,后续运行的速度则会运行编译后的文件

启动IDEA

在这里插入图片描述

创建Maven项目

在这里插入图片描述
Archetype选择org.apache.maven.archetypes:maven-archetype-webapp
在这里插入图片描述

在这里插入图片描述
创建完成后如果遇到异常No archetype found in remote catalog. Defaulting to internal catalog实际上这个异常没影响,但会比较烦人
在这里插入图片描述
解决方法一:
添加配置,在Settings窗口搜索Runner,在配置里添加​​VM Options​​ ——> ​​-DarchetypeCatalog=internal​​
在这里插入图片描述
解决方法二:
在创建项目的时候,添加配置项
在这里插入图片描述
再次创建就不会再报类似的异常,创建成功后默认的目录如下图所示
在这里插入图片描述
不同的编译器创建完的项目结构有所不同,如果是Eclipse,则创建完会在main路径下有个java文件夹,用于存放程序员编写的java文件,resources文件夹通常放置各种配置文件,webapp文件夹主要放置Web项目所需的各类文件如HTML、JSP、JavaScript文件等等,IDEA缺少了java文件夹,可以手动添加上;如果是Eclipse会在src路径下与main文件夹同级创建一个test文件夹,test文件夹内也会有个java文件夹,用于放置测试类,同时也会有一个和该java路径同级的resources文件夹,用于存放测试类所需要的各种配置文件,如果是IDEA的话手动添加上即可

  • 需要特殊说明的是在webapp/WEB-INF下有一个web.xml文件,这是一个JavaEE Web项目的配置文件,但在Servlet3.0后的容器规范下,它不是必须的
  • webapp路径下的index.jsp是IDE创建的一个JSP样例,可在浏览器页面输出Hello World

在这里插入图片描述

IDEA配置Tomcat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

确保之前手动启动的Tomcat服务是关闭的,否则会报端口冲突
在这里插入图片描述
只配置了Tomcat Server 执行之后,浏览器弹出来如下图所示
在这里插入图片描述
配置Deployment,指向目标War包,再次执行
在这里插入图片描述
在这里插入图片描述

打包选项在Project Structure中,默认第一个即可
在这里插入图片描述
编译器会自动生成新的目录,并生成war包
在这里插入图片描述
如果不实用编译器,也可以直接将这个war包复制到Tomcat的webapps路径下,然后执行Tomcat的startup.bat,启动tomcat,然后通过Manager App查看
在这里插入图片描述
在这里插入图片描述

实际上在IDEA配置好Tomcat之后,在编译器里执行,编译器就会重新打包,并向Tomcat的webapps的路径下放一份war文件,命名通常是项目名_war的形式, 而自行复制过来的war文件是项目名

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

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

相关文章

4T第十四届省赛模拟2

一、Seg 温度读取: ①温度 温度读他读出来就是有精度的所以自带小数 我们读取的时候直接强制类型转换读它的各个位也不会丢失精度 ②电压 电压是你人为的/51.0了,从char->float->char所以会有精度丢失 所以要用原始数据来换算 在原始数据上多…

web布局——说清楚fixed布局

极限省流 想要fixed做导航页面:指定清楚top、left、right、bottom,没指定清楚布局位置就会采用默认的方式: 0)父元素的padding:fixed元素相对位移 1)同级元素是fixed元素:覆盖 2&#xff09…

.NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案

目录(结尾附加项目代码资源地址) 引言: 1. SAGA事务模式 2. 拆分为子事务 3. 失败回滚 4. 如何做补偿 4.1 失败的分支是否需要补偿 5. 异常 6. 异常与子事务屏障 6.1 NPC的挑战 6.2 现有方案的问题 6.3 子事务屏障 6.4 原理 7. 更多高级场景 7.1 部分…

Golang-Gorm-快速上手

Gorm文档 GORM文档地址 安装依赖 go get -u "gorm.io/driver/mysql"go get -u "gorm.io/gorm"连接数据库 默认连接方式 func main() {// 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情dsn : "user:passtcp(127.0.0…

Django自动化测试平台项目前端框架设计

引言 在之前根据项目具体情况,开发了一套自动预报数据的平台,但是前端页面不耐看,久了就生厌。于是就想更换前端框架,顺便记录一下。 前端设计 原来的界面: 一键预报模块: 为了有更好的感官体验&#xf…

设计模式——结构型——外观模式Facade

处理器类 public class Cpu {public void start() {System.out.println("处理器启动了...");} } 内存类 public class Memory {public void start() {System.out.println("内存启动了...");} } 硬盘类 public class Disk {public void start() {Syste…

单目图像加单点测距,求解目标位姿

单目图像加单点测距,求解目标位 附赠自动驾驶学习资料和量产经验:链接 单目相机通过对极约束来求解相机运动的位姿。参考了ORBSLAM中单目实现的代码,这里用opencv来实现最简单的位姿估计。 对极约束的概念可以参考我的这篇 Visual SLAM –…

总结TCP各类知识点

前言 本篇博客博主将详细地介绍TCP有关知识点,坐好板凳发车啦~ 一.TCP特点 1.有连接 TCP传输的过程中类似于打电话的各个过程 2.可靠传输 通过TCP自身的多种机制来保证可靠传输 3.面向字节流 内容是以字节的方式来进行发送与接收 4.缓冲区 TCP有接收缓冲区…

谈一谈BEV和Transformer在自动驾驶中的应用

谈一谈BEV和Transformer在自动驾驶中的应用 BEV和Transformer都这么火,这次就聊一聊。 结尾有资料连接 一 BEV有什么用 首先,鸟瞰图并不能带来新的功能,对规控也没有什么额外的好处。 从鸟瞰图这个名词就可以看出来,本来摄像头…

使用启智OpenI平台体验Open-Sora笔记

OpenI准备部分 镜像代码仓 创建云脑任务 新建调试任务 镜像选择 如果不想体验整个安装配置过程的话,我准备了一个Open-Sora的环境镜像应该可以直接开箱即用 地址: 192.168.204.22:5000/default-workspace/99280a9940ae44ca8f5892134386fddb/image:Open…

【C++的奇迹之旅】C++关键字命名空间使用的三种方式C++输入输出命名空间std的使用惯例

文章目录 📝前言🌠 C关键字(C98)🌉 命名空间🌠命名空间定义🌉命名空间使用 🌠命名空间的使用有三种方式:🌉加命名空间名称及作用域限定符🌠使用using将命名空间中某个成员…

NSGA算法

先给自己叠甲,记录自己的学习过程,如有内容错误欢迎指正!!!。 1. NSGA算法简介(Nondominated Sorting Genetic Algorithm) 根据标题,NSGA算法分为两个要点,Nondominated Sorting(非支配排序&a…

基本数据类型

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 数据类型是一种用于描述数据存储格式的结构。 PL/SQL 和其他编程语言一样也有多种数据类型,PL/SQL 语言中的常用数据类型和 Oracle 数据库中内置的数据类型基本…

基于JSP的母婴用品网站

背景 随着时代的飞速进步,计算机技术已经广泛而深刻地渗透到社会的各个层面。人们生活质量的持续提升,以及对母婴产品需求的日益增长,都推动了母婴用品网站开发的必要性和紧迫性。这类网站依托计算机技术,通过对相关产品信息的有…

简易挛生分拣系统设计

1 工效组合展示 2 方案规划设计 3 数字挛生建模 基础建模、动画设计、模型导出 4 软件体系架构 5 Web交互设计 5.1 页面架构 5.2 初始构造 5.3 模型运用 5.4 WS通信 5.5 运行展现 6 服务支撑编码 6.1 整体调度 6.2 WS服务 6.3 C/S通信 7 系统级调试完善

PyTorch深度学习快速入门(小土堆)

文章目录 16. 神经网络的基本骨架17.卷积操作18.卷积层 16. 神经网络的基本骨架 forward: import torch from torch import nnclass Tudui(nn.Module):def __init__(self):super().__init__()def forward(self,input):outputinput1return output#创建Tudui的实例对象 tuduiTu…

【详细讲解MNN介绍,安装和编译】

🌈个人主页:程序员不想敲代码啊🌈 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家🏆 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提…

基于Arduino IDE 野火ESP8266模块 定时器 的开发

一、delay函数实现定时 如果不需要精确到微秒级别的控制,可以使用Arduino的内置函数 millis()和delay() 来创建简单的定时器。millis()函数返回Arduino板启动后的毫秒数,而delay()函数会暂停程序的执行一段时间。 示例代码如下: delay()函数…

HarmonyOS实战开发-如何构建多种样式弹窗

介绍 本篇Codelab将介绍如何使用弹窗功能,实现四种类型弹窗。分别是:警告弹窗、自定义弹窗、日期滑动选择器弹窗、文本滑动选择器弹窗。需要完成以下功能: 点击左上角返回按钮展示警告弹窗。点击出生日期展示日期滑动选择器弹窗。点击性别展…

electron+VUE Browserwindow与webview通信

仅做记录 前言: electronVUEVITE框架,用的是VUE3.0 主进程定义:用于接收webview发送的消息 ipcMain.on(MyWebviewMessage, (event, message) > {logger.info(收到webmsg message)//转发给渲染进程}) porelaod/webPreload.js定义 cons…