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

不得不解释得几个概念

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/786933.shtml

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

相关文章

基于UML的系统分析与设计

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。 毕业设计是实现本科教学培…

Php_Code_challenge16

题目: 答案: 解析: 所以科学计数法绕过即可。

macOS Sonoma 14.4 23E214 VMware系统包下载地址,简单便捷,导入即可用!

这回分享的是VMware虚拟机macOS 14.4版本的系统包,这种系统包是已经在VMware虚拟机中安装好了的macOS系统。省去了繁琐的安装步骤与稍微漫长的等待时间。此次更新的包为诗林工作室制作的最新一个VMware系统包版本。分享给那些想快速体验macOS 14版本的朋友。 使用方…

C++ AVL树(旋转)

我们之前学习了搜索二叉树,我们知道普通的搜索二叉树会有特殊情况出现使得二叉树的两枝极其不平衡形成我们通俗说的歪脖子树: 这样的树一定会使得我们的增删查的效率变低;为了避免这种极端的情况出现,在1962年有两位伟大的俄罗斯数…

EasyExcel 复杂表头的导出(动态表头和静态表头)

问题:如图,1部分的表头是动态的根据日期变化,2部分是数据库对应的字段,静态不变的; 解决方案:如果不看1的部分,2部分内容可以根据实体类注解的方式导出,那么我们是不是可以先将动态表…

Centos7 安装 Oracle19c

下载oracle预安装包 wget http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 下载19c安装包 https://www.oracle.com/cn/database/technologies/oracle-database-software-downloads.html#19c 选择…

计算机网络-HTTP相关知识-HTTPS基础

HTTP与HTTPS的区别: HTTPS在TCP和HTTP网络层之间加入了SSL/TLS安全协议层。这个安全协议层可以对数据进行加密,确保数据在传输过程中的安全。HTTPS在TCP三次握手之后,还需进行SSL/TLS的握手过程。这个握手过程主要是为了在客户端和服务器之间…

超声波清洗机是干什么用的?2024年有用的超声波清洗机推荐

随着科技的不断进步,超声波清洗机已经成为了家庭和专业场所不可或缺的高效清洁工具。它利用超声波波动产生的微小气泡来清洁物品表面及细缝中的污渍,实现深层次的清洁效果。特别是对于眼镜这样的精密物品,定期进行深度清洁不仅能够确保视觉的…

【算法刷题day10】Leetcode:232.用栈实现队列、225. 用队列实现栈

文章目录 Leetcode 232.用栈实现队列解题思路代码总结 Leetcode 225. 用队列实现栈解题思路代码总结 stack、queue和deque对比 草稿图网站 java的Deque Leetcode 232.用栈实现队列 题目:232.用栈实现队列 解析:代码随想录解析 解题思路 一个栈负责进&a…

前端二维码生成工具小程序:构建营销神器的技术解析

摘要: 随着数字化营销的不断深入,二维码作为一种快速、便捷的信息传递方式,已经广泛应用于各个领域。本文旨在探讨如何通过前端技术构建一个功能丰富、操作简便的二维码生成工具小程序,为企业和个人提供高效的营销支持。 一、引言…

什么是过载

宇航员相关知识会涉及到过载,导弹相关知识也会涉及到过载,如导弹的过载加速度,什么是过载呢?博主从B站上看到一UP主讲的很好, 该up主视频链接: 过载是什么_哔哩哔哩_bilibili 内容截图如下:

钉钉服务端API报错 43008 参数需要multipart类型

钉钉服务端API报错 43008 参数需要multipart类型 problem 使用媒体文件上传接口,按照文档输入参数,结果返回报错 # 参数 {"access_token": "xxx""type": "image","media": "/Users/xxx/xxx/s…

《QT实用小工具·二》图片文字转base64编码

1、概述 源码放在文章末尾 base64编码转换类 图片转base64字符串。base64字符串转图片。字符转base64字符串。base64字符串转字符。后期增加数据压缩。Qt6对base64编码转换进行了重写效率提升至少200%。 下面是demo演示: 项目部分代码如下所示: #ifn…

探索检索增强生成和微调技术在金融服务领域的应用

引言: 在金融服务领域,随着人工智能技术的快速发展,语言模型的应用变得越来越广泛。本文将探讨检索增强生成(RAG)和微调技术在金融服务领域的应用,以及它们在不同模型大小和应用场景中的适用性。 一、检索…

Python抓取京东、淘宝商品数据(属性详情,sku价格抓取)

抓取京东、淘宝等电商平台的商品数据(包括属性详情、SKU价格等)通常涉及到网络爬虫技术。这些平台都有自己的反爬虫机制,因此抓取数据需要谨慎操作,避免对平台造成不必要的负担或违反其使用条款。 公共参数 名称类型必须描述key…

【数据结构】AVL 树

文章目录 1. AVL 树的概念2. AVL 树节点的定义3. AVL 树的插入4. AVL 树的旋转5. AVL 树的验证6. AVL 树的删除7. AVL 树的性能 前面对 map / multimap / set / multiset 进行了简单的介绍【C】map & set,在其文档介绍中发现,这几个容器有个共同点是…

汽车电子行业知识:什么是数字钥匙?

文章目录 1. 什么是数字钥匙?2. 数字钥匙有哪些类型?3. 汽车数字钥匙4. 数字钥匙包含哪些技术5. 汽车数字钥匙的发展趋势 1. 什么是数字钥匙? 数字钥匙通常指的是一种安全工具,它使用数字代码或密码来授权对特定系统或服务的访问。…

【御控物联】JavaScript JSON结构转换(13):对象To数组——多层属性重组

文章目录 一、JSON结构转换是什么?二、案例之《JSON对象 To JSON数组》三、代码实现四、在线转换工具五、技术资料 一、JSON结构转换是什么? JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换,生成新的JS…

火鸟门户拖拽专题可视拖拽面板快速创建网站,无需懂代码,形式灵活,功能强大

可视化拖拉面板简介 可视化拖拽面板是一种消耗代码即可创建网站的工具。它提供了一个分析的界面,用户可以通过拖拽预先设计的组件来构建页面。这种方式可以大大降低网站开发的效率,让不懂代码的人也能轻松创建自己的网站。 可视化拖拉面板的优势 可视…

「51媒体网」媒体邀约现场采访的优势有哪些?

传媒如春雨,润物细无声的,大家好,我是51媒体网胡老师。 媒体邀约现场采访的优势主要表现在以下几个方面: 实时报道与传播:现场采访能够让媒体了解活动的真实性,此外,到场报道媒体可以实时迅速将…