编程自学指南:java程序设计开发,简单了解JavaEE 标准架构基础,JavaEE 标准架构核心组件

编程自学指南:java程序设计开发,JavaEE 标准架构基础

一、课程信息

学习目标

  1. 理解 JavaEE 标准架构的基本概念和核心组件。
  2. 掌握 JavaEE 架构中各层的职责和作用。
  3. 学会搭建简单的 JavaEE 开发环境。
  4. 了解 JavaEE 架构的优势和适用场景。

二、课程导入

生活实例引入

  • 想象一家大型商场,有不同的区域负责不同的功能,如购物区、餐饮区、娱乐区等。商场的运营需要有统一的管理和协调,各个区域相互配合,才能为顾客提供良好的服务。在 Java 开发中,当我们构建大型的企业级应用时,也需要一个类似的架构来组织代码,协调各个模块的工作,这就是 JavaEE 标准架构。
  • 提问学生生活中还有哪些类似分工协作的大型系统,引导他们思考在编程中如何实现这种高效的架构。

三、JavaEE 概述

定义

JavaEE(Java Platform, Enterprise Edition),即 Java 企业版,是一套用于开发企业级应用的 Java 平台和规范。它提供了一系列的 API 和服务,帮助开发者构建可扩展、安全、可靠的企业级应用。

发展历程

  • 回顾 JavaEE 的发展历程,从最初的 J2EE 到现在的 Jakarta EE(JavaEE 更名为 Jakarta EE),了解其不断演进和完善的过程。

应用场景

  • 企业资源规划(ERP)系统:用于管理企业的各种资源,如财务、人力资源、生产等。
  • 客户关系管理(CRM)系统:帮助企业管理客户信息,提高客户满意度。
  • 电子商务系统:实现网上购物、支付等功能。

四、JavaEE 标准架构核心组件

表示层(Presentation Layer)

作用

        负责与用户进行交互,接收用户的请求并展示处理结果。

技术
  • JSP(JavaServer Pages):允许在 HTML 页面中嵌入 Java 代码,动态生成 HTML 页面。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>简单的 JSP 页面</title>
</head>
<body>
    <h1>欢迎来到 JavaEE 世界!当前时间:<%= new java.util.Date() %></h1>
</body>
</html>

Servlet:Java 编写的服务器端程序,用于处理客户端的请求并生成响应。

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>Hello, JavaEE!</h1>");
        out.println("</body></html>");
    }
}

业务逻辑层(Business Logic Layer)

作用

处理业务逻辑,如用户认证、订单处理、数据计算等。

技术
  • EJB(Enterprise JavaBeans):提供了一种分布式组件模型,用于实现企业级业务逻辑。
import javax.ejb.Stateless;

@Stateless
public class CalculatorBean {
    public int add(int a, int b) {
        return a + b;
    }
}

Spring 框架:轻量级的 Java 开发框架,提供了依赖注入、面向切面编程等功能,简化了业务逻辑的开发。

 

数据访问层(Data Access Layer)

作用

负责与数据库进行交互,执行数据的增删改查操作。

技术
  • JDBC(Java Database Connectivity):Java 提供的标准数据库访问接口,用于连接和操作各种数据库。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcExample {
    public static void main(String[] args) {
        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM users");
            while (rs.next()) {
                System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name"));
            }
            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Hibernate:开源的对象关系映射(ORM)框架,将 Java 对象与数据库表进行映射,简化了数据库操作。

 

企业信息系统层(Enterprise Information System Layer)

作用

与企业的其他信息系统进行集成,如 ERP 系统、CRM 系统等。

技术
  • JMS(Java Message Service):用于在不同的应用程序之间进行消息传递,实现异步通信。
  • Web 服务:使用 SOAP、REST 等协议,实现不同系统之间的互操作性。

五、JavaEE 架构分层示例

案例:简单的用户管理系统

表示层(JSP 页面)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>用户列表</title>
</head>
<body>
    <h1>用户列表</h1>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>姓名</th>
        </tr>
        <% java.util.List<User> users = (java.util.List<User>) request.getAttribute("users");
        if (users != null) {
            for (User user : users) { %>
                <tr>
                    <td><%= user.getId() %></td>
                    <td><%= user.getName() %></td>
                </tr>
            <% }
        } %>
    </table>
</body>
</html>
业务逻辑层(UserService.java)
import java.util.List;

public class UserService {
    private UserDao userDao = new UserDao();

    public List<User> getAllUsers() {
        return userDao.getAllUsers();
    }
}
数据访问层(UserDao.java)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class UserDao {
    public List<User> getAllUsers() {
        List<User> users = new ArrayList<>();
        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM users");
            while (rs.next()) {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                users.add(user);
            }
            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return users;
    }
}
实体类(User.java)
public class User {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
控制器(UserServlet.java)
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/users")
public class UserServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        UserService userService = new UserService();
        List<User> users = userService.getAllUsers();
        request.setAttribute("users", users);
        request.getRequestDispatcher("userList.jsp").forward(request, response);
    }
}

代码解释

  • 表示层:通过 JSP 页面展示用户列表信息。
  • 业务逻辑层UserService 类负责处理与用户相关的业务逻辑,调用数据访问层的方法获取用户信息。
  • 数据访问层UserDao 类使用 JDBC 与数据库进行交互,执行查询用户信息的操作。
  • 控制器UserServlet 接收客户端的请求,调用业务逻辑层的方法获取用户信息,并将信息传递给 JSP 页面进行展示。

六、JavaEE 架构的优势和适用场景

优势

  • 可扩展性:各层之间相对独立,便于对系统进行扩展和维护。
  • 安全性:提供了一系列的安全机制,如身份验证、授权等,保障系统的安全。
  • 可移植性:基于 Java 平台,具有良好的跨平台性。
  • 标准化:遵循 JavaEE 规范,便于不同厂商的产品之间进行集成。

适用场景

  • 大型企业级应用:如银行系统、电信系统等,需要处理大量的数据和复杂的业务逻辑。
  • 分布式系统:可以将不同的组件部署在不同的服务器上,实现分布式计算。

七、课堂练习

练习一

在上述用户管理系统的基础上,添加一个添加用户的功能。在 JSP 页面中添加一个表单,用于输入用户信息,提交表单后调用控制器的方法将用户信息保存到数据库中。

练习二

修改数据访问层的代码,使用 Hibernate 框架代替 JDBC 进行数据库操作。

八、课程总结

知识回顾

  • 回顾 JavaEE 标准架构的基本概念、核心组件和分层结构。
  • 总结 JavaEE 架构的优势和适用场景。

口诀总结

  • “JavaEE 架构妙,分层协作效率高。表示业务数据层,各司其职很重要。开发环境搭建好,应用开发没烦恼。大型系统它来搞,安全扩展有保障。”

九、课后作业

作业一

完善课堂上的用户管理系统,添加一个删除用户的功能。在 JSP 页面中为每个用户添加一个删除按钮,点击按钮后调用控制器的方法将该用户信息从数据库中删除。

作业二

研究并尝试使用 Spring Boot 框架来简化 JavaEE 应用的开发,将用户管理系统迁移到 Spring Boot 环境中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zl515035644

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值