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

不得不解释得几个概念

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.mzph.cn/news/780527.shtml

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

相关文章

如何使用Docker搭建WBO在线协作工具并实现无公网IP远程编辑本地白板

文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 前言 WBO在线协作白板是一个自由和开源的在线协作白板,允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用…

社交互动:探讨Facebook对用户互动的影响

在当今数字化时代,社交网络已经成为了人们日常生活中不可或缺的一部分。而作为最著名的社交网络平台之一,Facebook不仅连接了全球数十亿用户,还对用户的社交互动产生了深远的影响。本文将深入探讨Facebook对用户互动的影响,以及它…

5、axios请求、动画、组件、路由重定向、UI组件

一、axios请求 Axios是一个基于Promise的HTTP状态库&#xff0c;封装ajax。ajax包含axios安装 npm install axios 引入 import axios form “axios” 1、get请求 <script> // 1.本页面引入 import axios from "axios";data() {return {imgSrc: ""…

R语言实现——网状 Meta 分析

近来年&#xff0c;网状 Meta 分析相关研究不断涌现&#xff0c;此类研究不但能发表在国内各大核心期刊上&#xff0c;还能在SCI期刊甚至医学4大刊上看到其身影。随手在pubmed上面一搜索&#xff0c;就能得到一万多篇相关文献。俨然成为医学文献研究的“大杀器”&#xff01; P…

AMEYA360代理 | 江苏长晶科技FST2.0高性能 IGBT产品介绍

江苏长晶科技股份有限公司是一家专业从事半导体产品研发、生产和销售的企业。自2019年起&#xff0c;连续4年被中国半导体行业协会评为 “功率器件十强企业”。2021年开始自主研发有着“工业CPU”之称的IGBT&#xff0c;截至2023年Q3在家电/工业/新能源等行业实现8款产品市场应…

刷题DAY37 | LeetCode 738-单调递增的数字 968-监控二叉树

738 单调递增的数字&#xff08;medium&#xff09; 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 思路&#xff1a;将整数转…

Git版本管理使用手册 - 6 - 将本地项目提交到空白仓库

将本地项目提交到空白仓库 1.首先克隆远程空白仓库到本地目录 2.将要提交到master上的项目代码复制到本地仓库目录下。如果项目代码关联SVN要取消SVN关联。可以使用取消SVN关联脚本。 3.编写.ignore文件&#xff0c;该文件可以提交时&#xff0c;忽略指定文件 4.使用idea打开该…

Docker搭建LNMP环境实战(08):安装php-fpm

1、编写php测试文件 在文件夹&#xff1a;/mnt/hgfs/dockers/test_site/www目录下创建文件&#xff1a;test.php&#xff0c;内容为&#xff1a; <?phpecho "hello world!!!!!! From test.php"; ?>2、编写php-fpm部署配置文件 在文件夹&#xff1a;/mnt/h…

【unity】unity安装及路线图

学习路线图 二、有关unity的下载 由于unity公司是在国外&#xff0c;所以.com版&#xff08;https://developer.unity.cn/&#xff09;不一定稳定&#xff0c;学习时推荐从.cn国内版&#xff08;https://developer.unity.cn/&#xff09;前往下载&#xff0c;但是后期仍需回…

鸿蒙ArkTS基础知识-自定义组件生命周期函数onBackPress的调用。

介绍 本课程使用声明式语法和组件化基础知识&#xff0c;搭建一个可刷新的排行榜页面。在排行榜页面中&#xff0c;使用循环渲染控制语法来实现列表数据渲染&#xff0c;使用Builder创建排行列表布局内容&#xff0c;使用装饰器State、Prop、Link来管理组件状态。最后我们点击…

【服务端】node.js详细的配置

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

【话题】AI大模型学习:理论、技术与应用探索

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景1. AI大模型学习的基础理论1.1 机器学习1.2 深度学习 2. AI大模型学习的技术要点2.1 模型结构设计2.2 算法优化2.3 大规模数据处理 3. AI大模型学习的应用场景3.1 自…

使用小皮【phpstudy】运行Vue+MySql项目

现在的情况是我扒到了一个开源的项目&#xff0c;现在想要实现一下前端对应的功能&#xff0c;后端是完备的&#xff0c;但是需要调用数据库将数据跑起来&#xff0c;这里可以使用到MySql数据库&#xff0c;这里我还发现了一个比较好用的软件小皮【phpStudy】 官网 一 安装软件…

什么是缓冲区溢出攻击?

缓冲区是内存存储区域&#xff0c;在数据从一个位置传输到另一个位置时临时保存数据。当数据量超过内存缓冲区的存储容量时&#xff0c;就会发生缓冲区溢出&#xff08;或buffer overrun&#xff09;。结果&#xff0c;试图将数据写入缓冲区的程序会覆盖相邻的内存位置。 例如…

git仓库太大只下载单个文件或文件夹

有没有这样的苦恼&#xff1a;仓库太大&#xff0c;只想下载其中某些文件(夹)&#xff1f; 一招解决&#xff1a;bash down_folder_from_git.sh 运行前&#xff0c;先修改开头三个变量 原理: 稀疏检出 让工作树仅包含自定义的文件 #!/usr/bin/bash addrhttps://github.com/fac…

大唐杯国赛解读及赛前准备分析

从参赛类别的区分到大唐杯名称由原来的“第九届‘大唐杯’全国大学生移动通信5G技术大赛”变更为“第九届‘大唐杯’全国大学生新一代信息通信技术大赛”一系列的变化。 接下来重点讲解本科A组的情况分析: 需要注意的是,和去年的比赛不同,今年并不是两人互相讨论,而是和省…

若依菜单名称过长显示不全怎么办?

菜单名称太长的话超出宽度部分会显示...,我们可以自己调整一下菜单的宽度或者设置一个title,这样鼠标移动上去显示完整的菜单名称。 目录 1、在layout\components\Sidebar\SidebarItem.vue文件设置:title 2、在layout\components\Sidebar\Item.

windows下QT如何集成OpenCV

说明 我在windows下使用QT Creator12创建的CMake项目&#xff0c;需要OpenCV的一些功能。由于安装的时候我选择的QT组件都是MInGW的&#xff0c;所以无法使用VS studio版本的dll库。 为什么vs的版本不能用 我安装QT选择的是MinGW版本&#xff0c;本地编译QT工程只能选择MinG…

XUbuntu22.04之Typora快捷键Ctrl+5不生效问题(二百二十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

回溯dfs和分支限界bfs

一&#xff1a;拓扑排序 207. 课程表 这道题说白了就是在有向图中找环 拓扑排序实际上应用的是贪心算法。 贪心算法简而言之&#xff1a;每一步最优&#xff0c;全局就最优。 每一次都从图中删除没有前驱的顶点&#xff0c;这里并不需要真正的删除操作&#xff0c;通过设置入度…