1.1 java EE应用概述

1、java EE的分层模型

数据库--【提供持久化服务】--》Domain Object层 --【封装】--〉DAO层--【提供数据访问服务】--》业务逻辑层--【提供业务逻辑实现】--〉MVC的控制器层--【显示】--》前端

优点:松耦合

2、Java EE应用的组件

  • 1)前端组件:主要负责收集用户输入数据,或者向客户显示系统状态。JSP、FreeMarker、JQuery、Angular、JSON、HTML5+CSS
  • 2)控制器组件:对于java EE 的MVC框架而言,框架负责提供一个核心控制器,而核心控制器负责拦截用户请求,并将请求转发给用户实现的控制器组件。而这些用户实现的控制器则负责处理调用业务逻辑方法,处理用户请求。
  • 3)业务逻辑组件:核心组件,实现系统的业务逻辑。通常,一个业务逻辑方法对应一次用户操作。一个业务逻辑方法应该是一个整体。因此要求对业务逻辑方法增加事务性。业务逻辑方法仅仅负责实现业务逻辑,不应该进行数据库访问。因此业务逻辑组件中不应该出现原始的MyBatis、JDBC等API。
  • 4)DAO组件:Data Access Object,也被称为数据访问对象,这种类型的对象比较缺乏变化,每个DAO组件都提供Domain Object基本的创建、查询、更新、删除等操作,这些操作对应于数据表的CRUD等原子操作。当然,如果采用不同的持久层访问技术,DAO组件的实现会完全不同,为了分离业务逻辑组件的实现与DAO组件的实现,程序应该为每个DAO组件都提供接口,业务逻辑层组件面向DAO接口编程,这样才能提供更好的解耦。
  • 5)领域对象组件:Domain Object 抽象了系统的对象模型,通常而言,这些领域对象的状态都必须保存在数据库里,因此,每个领域对象通常对应一个或多个数据表,领域对象需要提供对数据记录访问的方式。

3、Java EE 应用的结构和优势

系统后期维护、扩展需要成本,软件系统需要很好的伸缩性。

优势:松耦合,让应用之间的耦合停留在接口层次,而不是代码层次。

4、常用的Java EE 服务器

轻量级java EE 架构:Spring MVC+Spring+MyBatis,只需要简单的web服务器就可以运行,不需要专业的java EE服务器支持

常见的Web服务器:

1)Tomcat

2)Jetty:可做嵌入式服务器

3)Resin

常见的Java EE服务器:

1)JBoss

2)GlassFish

3)WebLogic和WebSphere

1.2 轻量级Java EE应用相关技术

1、JSP、Servlet 4.x、Java Bean及替代技术

JSP:最早的Java EE规范之一,充当Java EE的表现层,简单易用,只负责简单的显示逻辑,无法直接访问数据的底层状态。

Servlet:和JSP完全统一,JSP必须被Web服务器编译为Servlet,真正在Web服务器内运行的是Servlet。JSP相当于草稿,真正提供HTTP服务的是Servlet。Servlet包含JSP。

Java Bean:传输数据,中间层的组件会将应用底层的状态信息封装成JavaBean集,这些JavaBean也被称为DTO(Data Transfer Object,数据传输对象),并将DTO集传到JSP页面,从而让JSP可以显示应用的底层状态。

替代:FreeMarker、Velocity充当表现层技术,可以替代JSP

2、Spring MVC及替代技术

Spring 3以前:简单的对传统MVC框架进行模仿。

Spring3之后:Spring MVC 一个脱胎换骨重生的MVC框架:

功能丰富而强大的注解;简单而强大的请求映射和参数绑定;基于AOP的异常处理机制;以ConversionService为中心的类型转换;基于JSR 303的声明式数据校验。

替代:目前Spring MVC是最优秀的Java Web MVC框架。

3、MyBatis及替代技术

传统的java应用访问数据库:JDBC,JDBC采用的是一种基于SQL的操作方式,这种操作方式和java语言的面向对象特征不太一致,所以java EE需要一种技术(ORM,Object Relation Mapping,对象关系映射)让java以面向对象的方式操作关系数据库。

两种开源、轻量级的ORM框架:MyBatis、Hibernate。

MyBatis:半自动框架,将SQL语言映射为对象集,也被称为SQL Mapping工具,SQL需要手动编写。出于性能考虑选择。

Hibernate:全自动框架,将普通的java对象(POJO)映射成持久化类,允许应用程序以面向对象的方式操作POJO,该框架负责将这种操作转换成底层的SQL操作。不需要手动编写SQL。

替代:TopLink、OJB替代Hibernate,资料少文档少,需要勇气。

4、Spring及替代技术

Spring没有太多新东西

1)抽象大量的java EE常用代码,将它们抽象成一个框架,通过使用Spring可以大幅度提高开发效率。

2)充满了各种设计模式的应用,如单例模式、工厂模式、抽象工厂模式、命令模式、职责链模式、代理模式等。

3)提供了一个设计优良的MVC框架:Spring MVC,使用Spring 可以直接使用Spring MVC框架;但是没有持久层框架,所以可以和各种持久层框架无缝贴合。

目前无较好的替代解决方案。

5、使用框架的好处

1)可维护性、复用

1.3 Tomcat的下载和安装

1、下载安装Tomcat

参考博客:

https://blog.csdn.net/weixin_39149333/article/details/124623579

tomcat 9

tar.gz

安装目录:/Users/huqiqi/Library/tomcat/bin

2、配置Tomcat环境变量:

修改文件:

huqiqi@hqqMAC ~ % vim ~/.bash_profile

在文件中增加一行

PATH=$PATH:/Users/huqiqi/Library/tomcat/bin

生效环境变量:

huqiqi@hqqMAC ~ % source ~/.bash_profile

3、启动Tomcat:

cd /Users/huqiqi/Library/tomcat/bin
huqiqi@hqqMAC bin % startup.sh
Using CATALINA_BASE: /Users/huqiqi/Library/tomcat
Using CATALINA_HOME: /Users/huqiqi/Library/tomcat
Using CATALINA_TMPDIR: /Users/huqiqi/Library/tomcat/temp
Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
Using CLASSPATH: /Users/huqiqi/Library/tomcat/bin/bootstrap.jar:/Users/huqiqi/Library/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
huqiqi@hqqMAC bin %

启动成功会提示如上图:Tomcat started。

打开网页输入:http://localhost:8080/



出现上图说明启动成功。

4、停止tomcat

shutdown.sh

5、Tomcat配置服务端口

/Users/huqiqi/Library/tomcat/conf/server.xml

修改端口为:8888

    <!--Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
-->
<Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>

再次启动:

报错:zsh:command not found

解决:

最新系统的macbook把zsh作为默认shell,而环境变量添加到了bash中,把 bash shell 中.bash_profile 全部环境变量加入zsh shell里就可以了。

1)复制

cat ~/.bash_profile

2)放到.zshrc

vim ~/.zshrc

:wq // 保存

source ~/.zshrc // 使生效

关闭terminal后,重启tomcat

再次访问:

http://localhost:8888/

6、列出web应用根目录下的所有页面

/Users/huqiqi/Library/tomcat/conf/web.xml

修改:listings参数的值为true

    <servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

7、进入控制台

Manager App:点击后需要输入密码

配置文件增加角色、用户名和密码:

/Users/huqiqi/Library/tomcat/conf/tomcat-users.xml

<tomcat-users>
<!-- 增加一个角色,指定角色名-->
<role rolename="manager-gui"/>
<!-- 增加一个用户,指定用户名、密码、角色-->
<user username="manager" password="manager" roles="manager-gui"/>
</tomcat-users>

Manager App按照新增的用户名和密码登录后:

说明:

webapps路径是Web应用的存放位置,而Manager App控制台对应的web应用也放在该位置。

/Users/huqiqi/Library/tomcat/webapps/manager/WEB-INF/web.xml 放的是Manager应用的配置文件

普通开发者需要访问匹配:/html/、/status/的资源,所以为该用户分配一个manager-gui角色即可。

8、部署web应用

四种方式:

  • 方式1:利用Tomcat的自动部署

    将web应用复制到Tomcat的webapps目录下,系统会把该应用部署到Tomcat中。

  • 方式2:利用控制台部署

输入后点击部署,Tomcat的webapps目录下会多一个【Context路径】中写的文件夹,和【WAR文件或文件夹路径】中写的文件夹完全相同。本质还是方式1,利用tomcat的自动部署。

  • 方式3:增加自定义的web部署文件

    1)在conf下新建 Catalina/localhost 目录

    2)该目录下新建一个名字任意的XML文件(该文件就是部署web应用的配置文件,作为web应用的虚拟路径)

    举例:conf/Catalina/localhost/dd.xml,文件内容如下:

启动Tomcat,tomcat将会把 G:/publish/codes/01/aa 路径下的WebDome文件夹部署成Web应用。http://<server_address>:/dd

  • 方式4:修改server.xml 文件部署web应用

    修改conf下的server.xml 文件,会破坏tomcat的系统文件,不建议采用。

9、配置tomcat数据源

两种:

1)全局数据源:所有web应用都能访问,需要修改server.xml 文件,会破坏tomcat的系统文件,不建议采用。

2)局部数据源:只能在单个的web应用中访问

两种方式都需要提供特定数据库的JDBC驱动,需要将MySql的JDBC驱动程序复制到Tomcat的lib路径下。

操作:

i:查看mysql的版本:

huqiqi@hqqMAC ~ % mysqladmin -V

mysqladmin Ver 8.0.23 for macos10.15 on x86_64 (MySQL Community Server - GPL)

huqiqi@hqqMAC ~ %

版本为:8.0.23

ii:下载相同版本的mysql数据库的jdbc驱动jar包

https://cloud.tencent.com/developer/article/2089251?from=15425&areaSource=102001.1&traceId=PZFuqM1DGNNYtJkCywMDB

iii:解压后将jar包复制到tomcat的lib路径下

/Users/huqiqi/Library/tomcat/lib/mysql-connector-java-8.0.23.jar

iv:给web应用增加局部数据源

修改 conf/Catalina/localhost/dd.xml文件:

以上就是数据源的各种信息。

1.6 Maven的安装与使用

Maven 是 Apache 软件基金会的一个开源项目,是一个优秀的项目构建工具,它用来帮助开发者管理项目中的 jar,以及 jar 之间的依赖关系、完成项目的编译、测试、打包和发布等工作。

1、maven的settings.xml文件

mac 电脑settings文件的位置并不在显示的地方:

/Users/huqiqi/.m2/settings.xml

打开.m2/对应的文件夹是没有settings.xml文件的

正确的路径

/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/conf/settings.xml

2、settings.xml文件配置

1)mirror -- 阿里云镜像,解决优化镜像下载地址问题

<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

2)jdk 版本及工程编码,解决默认用jdk1.5 乱码问题

	  <profile>
<id>jdk18</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</profile>

3)localRepository -- 本地仓库地址,maven包管理地址

<localRepository>/Users/huqiqi/.m2/repository</localRepository>

3、maven的优点

1)原来的项目中需要的jar包必须手动“复制”、”粘贴” 到WEB-INF/lib 项目下,而借Maven,可以将jar包仅仅保存在“仓库”中,有需要使用的工程只需要“引用”这个文件,并不需要重复复制到工程中。

2)原来的项目中所需要的jar包都是提前下载好的,而Maven在联网状态下会自动下载所需要的jar包。首先在本地仓库中找,找不到就在网上进行下载。

3)原来的项目中一个jar包所依赖的其他jar包必须手动导进来,而Maven会自动将被依赖的jar包导进来。

4)原来的项目一个项目就是一个工程,而借助Maven可以将一个项目拆分成多个工程。

4、maven工程仓库官网

http://mvnrepository.com/

可以下载自己所需开发jar包

5、maven pom

POM(Project Object Model,项目对象模型)是 Maven 的基本组件,它是以 xml 文件的形式存放在项目的根目录下,名称为 pom.xml。

POM 中定义了项目的基本信息,用于描述项目如何构建、声明项目依赖等等。

当 Maven 执行一个任务时,它会先查找当前项目的 POM 文件,读取所需的配置信息,然后执行任务。在 POM 中可以设置如下配置:

  • 项目依赖
  • 插件
  • 目标
  • 构建时的配置文件
  • 版本
  • 开发者
  • 邮件列表

在创建 POM 之前,首先要确定工程组(groupId),及其名称(artifactId)和版本,在仓库中这些属性是项目的唯一标识。一旦在 pom.xml 文件中配置了所依赖的 jar,Maven 会自动从构件仓库中下载相应的构件。

6、maven坐标

Maven 坐标一套规则,它规定:世界上任何一个构件都可以使用 Maven 坐标并作为其唯一标识,Maven 坐标包括 groupId、artifactId、version、packaging 等元素,只要用户提供了正确的坐标元素,Maven 就能找到对应的构件。

任何一个构件都必须明确定义自己的坐标,这是 Maven 的强制要求,任何构件都不能例外。我们在开发 Maven 项目时,也需要为其定义合适的坐标,只有定义了坐标,其他项目才能引用该项目生成的构件。

Maven 坐标主要由以下元素组成:

  • groupId: 项目组 ID,定义当前 Maven 项目隶属的组织或公司,通常是唯一的。它的取值一般是项目所属公司或组织的网址或 URL 的反写,例如 net.biancheng.www。
  • artifactId: 项目 ID,通常是项目的名称。
  • version:版本。
  • packaging:项目的打包方式,默认值为 jar。

    以上 4 个元素中 groupId、artifactId 和 version 是必须定义的,packaging 是可选的。

7、maven仓库

本地仓库+远程仓库

当 Maven 根据坐标寻找构件时,它会首先查看本地仓库,若本地仓库存在此构件,则直接使用;若本地仓库不存在此构件,Maven 就会去远程仓库查找,若发现所需的构件后,则下载到本地仓库使用。如果本地仓库和远程仓库都没有所需的构件,则 Maven 就会报错。

第一章 JavaEE应用和开发环境的更多相关文章

  1. Java 学习笔记 第一章:Java语言开发环境搭建

    第一章:Java语言开发环境搭建 第二章:常量.变量和数据类型 第三章:数据类型转换.运算符和方法入门 1.Java虚拟机——JVM JVM(Java Virtual Machine ):Java虚拟 ...

  2. 第一章 andriod studio 安装与环境搭建

    原文 http://blog.csdn.net/zhanghefu/article/details/9286123 第一章   andriod studio 安装与环境搭建 一.Android Stu ...

  3. 第一节:ASP.NET开发环境配置

    第一节:ASP.NET开发环境配置 什么是ASP.NET,学这个可以做什么,学习这些有什么内容? ASP.NET是微软公司推出的WEB开发技术. 2002年,推出第一个版本,先后推出ASP.NET2. ...

  4. 第二章:搭建Android开发环境

    通过对本章节内容的阅读,了解了Android底层开发所需要的各种开发工具,以及在Linux环境下怎样搭建Android底层开发环境,在Linux系统上开发Android应用程序,需要安装Linux版本 ...

  5. Java第一天:安装搭建Java开发环境

    Java是面向对象的语言.它是通过虚拟机的运行机制来实现“跨平台”的. 这里不多说其他的,进入正题先,学习任何语言前的第一步都是要先搭建好开发环境,Java开发环境搭建如下: 1.到官网 http:/ ...

  6. 第一章:起步(python环境搭建)

    Python 环境搭建 学习python的第一步,就是要学习python开发环境的配置,在配置好python开发环境后,你需要再安装一款比较趁手的编辑器,事实上,python解释器本身就可以进行一些编 ...

  7. 第一篇博客 Python开发环境配置

    本文主要介绍Windows7环境下安装并配置Anaconda+VSCode作为Python开发环境. 目录 Anaconda与包管理配 Anaconda安装 添加环境变量 Anaconda安装错误及解 ...

  8. openwrt教程 第一章 物联网&amp;openwrt开发概述

    1.1 我们的宗旨 互联网.移动互联网的时代已经过去,物联网的时代已经来临!2014年,是物联网元年,2016年,物联网将达到高潮!为了迎接该潮流,我们工作室(F403科技创意室:http://f40 ...

  9. 第一章 Java Web应用开发技术

    Java Web应用开发是基于JavaEE(JavaEnterprise Edition)框架的,而JavaEE是建立在Java平台上的企业级应用解决方案.JavaEES框架提供的Web开发技术主要支 ...

  10. 第一章 Burp Suite 安装和环境配置

    Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能更好的完成对web应用的渗透测试和攻击.在渗透测试中,我们使用Burp Suite将使得测试工作变得更 ...

随机推荐

  1. vs2022离线安装教程

    因特殊需要,要离线安装vs2022的环境,完成配置后将安装过程记录. 第一步:下载visual Studio 引导程序以创建布局 在微软的官网下载合适的引导程序. 官网地址:创建基于网络的安装 - V ...

  2. 推荐一个react上拉加载更多插件:react-infinite-scroller

    在开发网页和移动应用时,经常需要处理大量数据的展示和加载.如果数据量非常大,一次性全部加载可能会导致页面卡顿或崩溃.为了解决这个问题,我们可以使用无限滚动(Infinite Scroll)的技术.Re ...

  3. idea如何显示出分支名

    如图所示 配置修改 idea安装目录下bin/idea.properties文件,新增2行配置 project.tree.structure.show.url=false ide.tree.horiz ...

  4. Redis系列内容完整版

    @ 目录 Redis系列之_Redis介绍安装配置 第一章 redis初识 1.1 Redis是什么 1.2 Redis特性(8个) 1.3 Redis单机安装 1.3.1下载安装 1.3.2三种启动 ...

  5. OKR 是什么?

    OKR OKR 是什么? OKR(Objectives and Key Results)目标与关键结果管理法,起源于英特尔,后在谷歌发扬光大. OKR 是一套协助组织进行目标管理的工具和方法,旨在促进 ...

  6. Tarjan强连通分量详解

    1.简介: 在阅读下列内容之前,请务必了解 图论相关概念 中的基础部分. 强连通的定义是:有向图 G 强连通是指,G 中任意两个结点连通. 强连通分量(Strongly Connected Compo ...

  7. nfls10.1

    T1 大水题,用位运算更加便捷求解. T2 看出来有环了,但是没往基环树上想,寄. 暴力分,有部分分是基础树,可以跑一遍深搜,根节点的选择是 k 种颜色,剩下的是 k - 1 种颜色.还有暴力是可以二 ...

  8. 一场3天前的cf

    啊 这次的cf其实水的(指前4题) 题面就不给了awaT1其实就是一个贪心,其实手模一下就好了.可以发现,先让小的那个变大,然后在后面一直让小的加上大的统计一下次数就是答案了.因为如果是这样算的话,两 ...

  9. 使用go语言开发hive导出工具

    前言 新版 hive 提供了 beeline 工具,可以执行SQL并导出数据,不过操作还是有点复杂的,团队里有些同学不会Linux的基本操作,所以我花了亿点点时间写了个交互式的命令行工具方便使用. 效 ...

  10. 数据结构与算法 | 深搜(DFS)与广搜(BFS)

    深搜(DFS)与广搜(BFS) 在查找二叉树某个节点时,如果把二叉树所有节点理理解为解空间,待找到那个节点理解为满足特定条件的解,对此解答可以抽象描述为: 在解空间中搜索满足特定条件的解,这其实就是搜 ...