Java EE 技术基础知识体系梳理

news/2024/11/16 8:39:24/

1. Java EE 平台概述

1.1 发展历程

Java EE 从 J2EE 发展而来,经历了多个版本的演进,从早期的 J2EE 1.2 到最新的 Jakarta EE。

1.2 架构特点

  • 多层架构
    • 客户端层:用户界面,如 Web 浏览器、移动应用等。
    • Web 层:处理 HTTP 请求和响应,主要使用 Servlet 和 JSP。
    • 业务逻辑层:处理业务逻辑,主要使用 EJB。
    • 持久层:处理数据持久化,主要使用 JPA 和 JDBC。
  • 服务组件:各种服务和技术组件,如 Servlet、EJB、JPA、JDBC 等。
  • 企业级特性:安全性、事务管理、消息传递、资源管理等。

1.3 主要组件

  • Servlet 和 JSP
    • Servlet:Java 类,用于处理客户端请求并生成响应。
    • JSP:Java Server Pages,用于生成动态网页。
  • EJB(Enterprise JavaBeans)
    • 会话 Bean:处理业务逻辑,分为无状态( Stateless )和有状态( Stateful )。
    • 实体 Bean:表示持久化对象,基于 JPA。
    • 消息驱动 Bean:处理异步消息,基于 JMS。
  • JPA(Java Persistence API):用于对象关系映射(ORM),简化数据库操作。
  • JDBC(Java Database Connectivity):用于连接和操作数据库。
  • JMS(Java Message Service):用于消息传递,支持异步通信。
  • JTA(Java Transaction API):用于事务管理。
  • JNDI(Java Naming and Directory Interface):用于查找和访问命名和目录服务。
  • RMI(Remote Method Invocation):用于远程方法调用。

1.4 部署模型和运行环境

  • 应用服务器:如 Tomcat、WildFly、WebLogic、WebSphere 等,用于部署和运行 Java EE 应用。
  • 部署单元
    • WAR 文件:Web Application Archive,包含 Web 应用的所有资源。
    • EAR 文件:Enterprise Archive,包含整个企业应用的所有资源。

2. Java EE 核心技术

2.1 Servlet 和 JSP

2.1.1 Servlet
  • 生命周期
    • 初始化(init):Servlet 被加载时调用,用于初始化资源。
    • 服务(service):每次接收到请求时调用,处理请求并生成响应。
    • 销毁(destroy):Servlet 被卸载时调用,用于释放资源。
  • 请求处理流程
    • 接收请求:通过 HttpServletRequest 获取请求参数。
    • 处理请求:根据请求参数执行相应的业务逻辑。
    • 生成响应:通过 HttpServletResponse 返回响应结果。
  • 示例:实现一个简单的登录验证 Servlet。
java">@WebServlet("/login")
public class LoginServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");if ("admin".equals(username) && "123456".equals(password)) {response.sendRedirect("welcome.jsp");} else {response.sendRedirect("error.jsp");}}
}
2.1.2 JSP
  • 语法
    • 表达式<%= %>,用于输出变量值。
    • 脚本<% %>,用于嵌入 Java 代码。
    • 声明<%! %>,用于声明变量和方法。
  • 指令
    • page:设置页面属性,如内容类型、编码等。
    • include:包含其他 JSP 文件。
    • taglib:引入标签库。
  • 动作元素
    • forward:转发请求到另一个资源。
    • include:包含其他资源的内容。
    • useBean:创建和使用 JavaBean。
  • 示例:欢迎页面 welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Welcome</title>
</head>
<body><h1>Welcome, <%= request.getParameter("username") %>!</h1>
</body>
</html>

2.2 EJB(Enterprise JavaBeans)

  • 类型
    • 会话 Bean
      • 无状态(Stateless):不保存会话状态,每次调用都是独立的。
      • 有状态(Stateful):保存会话状态,适用于需要会话上下文的场景。
    • 实体 Bean:表示持久化对象,基于 JPA。
    • 消息驱动 Bean:处理异步消息,基于 JMS。
  • 作用
    • 会话 Bean:封装业务逻辑。
    • 实体 Bean:表示持久化对象。
    • 消息驱动 Bean:处理 JMS 消息。
  • 开发方法
    • 使用注解(@Stateless、@Stateful、@MessageDriven)。
  • 示例:一个简单的无状态会话 Bean。
java">@Stateless
public class UserService {public String greet(String name) {return "Hello, " + name;}
}

2.3 JPA(Java Persistence API)

  • 实体类定义
    • 使用注解(@Entity、@Table、@Id、@GeneratedValue)。
    • @Entity:标记类为实体类。
    • @Table:指定表名。
    • @Id:标记主键字段。
    • @GeneratedValue:指定主键生成策略。
  • 关系映射
    • 一对一:使用 @OneToOne 注解。
    • 一对多:使用 @OneToMany 注解。
    • 多对一:使用 @ManyToOne 注解。
    • 多对多:使用 @ManyToMany 注解。
  • 查询语言
    • JPQL(Java Persistence Query Language):用于编写查询语句。
  • 事务管理
    • 使用 @Transactional 注解。
  • 示例
    • 实体类 User
java">@Entity
@Table(name = "users")
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "username")private String username;@Column(name = "password")private String password;// Getters and Setters
}
  • 查询示例
java">@PersistenceContext
private EntityManager entityManager;public List<User> findAllUsers() {return entityManager.createQuery("SELECT u FROM User u", User.class).getResultList();
}

2.4 JDBC(Java Database Connectivity)

  • 数据库连接
    • 使用 DriverManager 获取连接。
    • 示例:
java">String url = "jdbc:mysql://localhost:3306/mydb";
String user = "root";
String password = "password";
Connection conn = DriverManager.getConnection(url, user, password);
  • SQL 执行
    • Statement:执行静态 SQL 语句。
    • PreparedStatement:预编译 SQL 语句,防止 SQL 注入。
    • CallableStatement:执行存储过程。
    • 示例:
java">try (Connection conn = DriverManager.getConnection(url, user, password);Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {while (rs.next()) {System.out.println(rs.getString("username"));}
} catch (SQLException e) {e.printStackTrace();
}
  • 结果集处理
    • 使用 ResultSet 处理查询结果。
    • 示例:
java">while (rs.next()) {String username = rs.getString("username");System.out.println(username);
}

http://www.ppmy.cn/news/1547408.html

相关文章

ssm092基于Tomcat技术的车库智能管理平台+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;车库智能管理平台设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本车库智能管理平台…

Kafka常见问题及处理

Apache Kafka是一个分布式流处理平台&#xff0c;以其高吞吐量和可扩展性而广受欢迎。然而&#xff0c;在实际应用中&#xff0c;我们可能会遇到各种问题。本文将探讨一些Kafka的常见问题及其解决方案&#xff0c;帮助您更有效地管理和使用Kafka。 1. 高延迟问题 问题描述&am…

微搭低代码入门04数组

目录 1 数组的定义和赋值2 访问数组中的元素3 获取数组的长度4 给数组添加元素5 删除数组中的元素6 其他常见用法7 数组作为参数传递8 数组的嵌套9 不改变原数组的方法总结 我们日常经常说的编程&#xff0c;叫编写程序。那程序的核心组成是数据结构算法。我们在编程入门的时候…

maven的optional选项说明以及具体应用

写在前面 本文看下maven的optional选项的作用和用法。 1&#xff1a;什么作用 考虑这样的场景&#xff0c;A依赖B&#xff0c;B依赖C&#xff0c;正常的按照依赖的传递性&#xff0c;A也会间接的依赖C&#xff0c;但是在一些特定的场景中项目A只希望依赖B&#xff0c;而不依…

H5页面多个视频如何只同时播放一个?

目录 背景1. 首先介绍下 muted 属性2. 监听播放和暂停操作3. 视频播放完毕后返回桌面&#xff0c;再进入H5页面发现视频封面丢失置灰解决思路&#xff1a; 背景 页面模块同时有个四个视频模块&#xff0c;发现可以同时播放四个视频&#xff0c;但是理想的是每次只播放一个。 …

ApiSmart-QWen2.5 coder vs GPT-4o 那个更强? ApiSmart 测评

QWen2.5 coder vs GPT-4o 那个更强&#xff1f; 那个更快&#xff0c; 那个更精准&#xff0c;让我们来看看&#xff1b; ApiSmart Api design Copilot - ApiHugApiSmart make your api design and implement happierhttps://apihug.com/zhCN-docs/copilot 【Apismart】QWen2.…

SpringBoot -- 自动化装配源码

自动化装配源码 EnableAutoConfiguration 注解&#xff0c;开启自动配置的核心注解AutoConfigurationPackage 注解 AutoConfigurationImportSelector 类getAutoConfigurationEntry 方法getCandidateConfigurations 方法 SpringFactoriesLoader EnableAutoConfiguration 注解&am…

Rust 语言学习笔记(五)

终于来到了 Rust 的精髓所在了&#xff0c;那就是使之不依赖于垃圾回收又能保障内存安全且高效运行的所有权系统(Ownership System)。想要用 Rust 做一个稍显规模项目必定绕不过它&#xff0c;所有权系统包括所有权(Ownership), 借用(Borrowing), 生命周期(Lifetimes)。 以下概…