JavaEE(入门)

JavaEE(入门)JavaEE JavaPlatform EnterpriseEd 是由 SunMicrosyst 推出的一套标准 现由 Oracle 维护

大家好,欢迎来到IT知识分享网。

JavaEE (详细注释版)

1. 入门基础

1.1 JavaEE简介

JavaEE(Java Platform, Enterprise Edition)是由Sun Microsystems推出的一套标准,现由Oracle维护。JavaEE平台主要用于开发和运行企业级应用程序,具有高可扩展性、可维护性和跨平台性。

1.2 JavaEE体系结构

JavaEE体系结构包括以下几层:

  • 表示层:负责与用户交互。常用技术包括Servlet、JSP、JSF等。
  • 业务逻辑层:处理具体的业务逻辑。使用EJB(Enterprise JavaBeans)来实现。
  • 持久层:负责数据的持久化。常用技术有JPA(Java Persistence API)、JDBC等。
  • 集成层:用于系统集成,常用技术包括JMS(Java Message Service)、JCA(Java Connector Architecture)等。
1.3 环境搭建

为了开发JavaEE应用程序,需要安装以下软件:

  • JDK(Java Development Kit):Java开发工具包。
  • Eclipse或IntelliJ IDEA:集成开发环境(IDE)。
  • Apache Tomcat:一个常用的Servlet容器。
  • Maven或Gradle:项目构建工具。

2. 核心技术

2.1 Servlet

Servlet是一种用于扩展服务器功能的小程序,主要用于处理HTTP请求。以下是一个简单的Servlet例子,并且包含详细注释:

import java.io.IOException; // 导入IOException类,用于处理输入输出异常 import javax.servlet.ServletException; // 导入ServletException类,用于处理Servlet特有的异常 import javax.servlet.annotation.WebServlet; // 导入WebServlet注解,用于定义Servlet的URL映射 import javax.servlet.http.HttpServlet; // 导入HttpServlet类,所有Servlet类都继承自这个类 import javax.servlet.http.HttpServletRequest; // 导入HttpServletRequest类,用于处理请求数据 import javax.servlet.http.HttpServletResponse; // 导入HttpServletResponse类,用于处理响应数据 @WebServlet("/hello") // 使用@WebServlet注解定义Servlet的URL映射为/hello public class HelloServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; // 定义序列化ID // 重写doGet方法,处理GET请求 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    response.setContentType("text/html"); // 设置响应的内容类型为HTML response.getWriter().println("<h1>Hello, World!</h1>"); // 输出HTML内容 } } 
2.2 JSP(JavaServer Pages)

JSP是一种用于创建动态网页的技术,允许将Java代码嵌入到HTML中。以下是一个简单的JSP例子,并且包含详细注释:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- 指定JSP页面使用Java语言,内容类型为HTML,字符编码为UTF-8 -->
<!DOCTYPE html>
<html>
<head>
    <title>Hello JSP</title> <!-- 页面标题 -->
</head>
<body>
    <h1>Hello, <%= request.getParameter("name") %>!</h1> <!-- 输出请求参数name的值 -->
</body>
</html>
2.3 EJB(Enterprise JavaBeans)

EJB是JavaEE中的一个组件模型,用于构建可伸缩的分布式业务应用程序。以下是一个简单的EJB例子,并且包含详细注释:

import javax.ejb.Stateless; // 导入Stateless注解,用于定义无状态会话Bean @Stateless // 使用@Stateless注解定义无状态会话Bean public class HelloBean { 
    // 定义业务方法sayHello,返回问候语 public String sayHello(String name) { 
    return "Hello, " + name + "!"; } } 

3. 数据持久化

3.1 JDBC(Java Database Connectivity)

JDBC是一种用于执行SQL语句的Java API。以下是一个简单的JDBC例子,并且包含详细注释:

import java.sql.Connection; // 导入Connection接口,用于管理数据库连接 import java.sql.DriverManager; // 导入DriverManager类,用于获取数据库连接 import java.sql.ResultSet; // 导入ResultSet接口,用于处理结果集 import java.sql.Statement; // 导入Statement接口,用于执行SQL语句 public class JDBCExample { 
    public static void main(String[] args) { 
    String url = "jdbc:mysql://localhost:3306/testdb"; // 定义数据库URL String user = "root"; // 定义数据库用户名 String password = "password"; // 定义数据库密码 try (Connection conn = DriverManager.getConnection(url, user, password); // 获取数据库连接 Statement stmt = conn.createStatement(); // 创建Statement对象 ResultSet rs = stmt.executeQuery("SELECT * FROM users")) { 
    // 执行SQL查询语句,并返回结果集 while (rs.next()) { 
    // 遍历结果集 System.out.println(rs.getString("username")); // 输出结果集中的用户名 } } catch (Exception e) { 
    // 捕获异常 e.printStackTrace(); // 打印异常信息 } } } 
3.2 JPA(Java Persistence API)

JPA是一种用于管理Java对象和关系数据库数据之间映射的API。以下是一个简单的JPA例子,并且包含详细注释:

import javax.persistence.Entity; // 导入Entity注解,用于定义实体类 import javax.persistence.Id; // 导入Id注解,用于定义主键 @Entity // 使用@Entity注解定义实体类 public class User { 
    @Id // 使用@Id注解定义主键 private Long id; // 定义实体类的ID属性 private String username; // 定义实体类的用户名属性 // 定义getter和setter方法 public Long getId() { 
    return id; } public void setId(Long id) { 
    this.id = id; } public String getUsername() { 
    return username; } public void setUsername(String username) { 
    this.username = username; } } import javax.persistence.EntityManager; // 导入EntityManager接口,用于管理实体 import javax.persistence.EntityManagerFactory; // 导入EntityManagerFactory接口,用于创建EntityManager import javax.persistence.Persistence; // 导入Persistence类,用于获取EntityManagerFactory public class JPAExample { 
    public static void main(String[] args) { 
    // 获取EntityManagerFactory,指定持久化单元名称为my-pu EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-pu"); // 获取EntityManager EntityManager em = emf.createEntityManager(); // 开始事务 em.getTransaction().begin(); // 创建并设置User对象 User user = new User(); user.setId(1L); user.setUsername("john"); // 持久化User对象 em.persist(user); // 提交事务 em.getTransaction().commit(); // 关闭EntityManager和EntityManagerFactory em.close(); emf.close(); } } 

4. 高级主题

4.1 Web服务

JavaEE提供了对Web服务的支持,包括SOAP和RESTful服务。以下是一个简单的RESTful服务例子,并且包含详细注释:

import javax.ws.rs.GET; // 导入GET注解,用于定义HTTP GET请求 import javax.ws.rs.Path; // 导入Path注解,用于定义URI路径 import javax.ws.rs.Produces; // 导入Produces注解,用于定义响应的媒体类型 import javax.ws.rs.core.MediaType; // 导入MediaType类,用于指定媒体类型 import javax.ws.rs.ApplicationPath; // 导入ApplicationPath注解,用于定义应用程序路径 import javax.ws.rs.core.Application; // 导入Application类,用于配置RESTful应用程序 @Path("/hello") // 使用@Path注解定义URI路径为/hello public class HelloService { 
    @GET // 使用@GET注解定义HTTP GET请求 @Produces(MediaType.TEXT_PLAIN) // 使用@Produces注解定义响应的媒体类型为纯文本 public String sayHello() { 
    return "Hello, World!"; // 返回问候语 } } @ApplicationPath("/api") // 使用@ApplicationPath注解定义应用程序路径为/api public class RestApplication extends Application { 
    } 
4.2 安全性

JavaEE提供了丰富的安全特性,如认证和授权。以下是一个简单的安全配置例子,并且包含详细注释:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <!-- 定义安全约 束 --> <security-constraint> <!-- 定义受保护的资源集合 --> <web-resource-collection> <web-resource-name>Protected Area</web-resource-name> <url-pattern>/secure/*</url-pattern> <!-- 定义受保护的URL模式 --> </web-resource-collection> <!-- 定义访问受保护资源的角色 --> <auth-constraint> <role-name>USER</role-name> </auth-constraint> </security-constraint> <!-- 定义登录配置 --> <login-config> <auth-method>BASIC</auth-method> <!-- 定义认证方法为BASIC --> <realm-name>myRealm</realm-name> <!-- 定义认证域名为myRealm --> </login-config> <!-- 定义安全角色 --> <security-role> <role-name>USER</role-name> </security-role> </web-app> 

5. 实战项目

通过实际项目来巩固学习内容。以下是一个简单的在线图书管理系统项目:

  • 功能:用户可以添加、查看、更新和删除图书信息。
  • 技术栈:Servlet、JSP、JDBC、Tomcat。
5.1 项目结构
BookManagement ├── src │ └── com │ └── example │ ├── Book.java │ ├── BookDao.java │ ├── BookServlet.java │ └── DBUtil.java ├── WebContent │ ├── index.jsp │ └── WEB-INF │ └── web.xml └── lib └── mysql-connector-java.jar 
5.2 代码实现

Book.java

public class Book { 
    private int id; // 定义图书的ID属性 private String title; // 定义图书的标题属性 private String author; // 定义图书的作者属性 // 定义getter和setter方法 public int getId() { 
    return id; } public void setId(int id) { 
    this.id = id; } public String getTitle() { 
    return title; } public void setTitle(String title) { 
    this.title = title; } public String getAuthor() { 
    return author; } public void setAuthor(String author) { 
    this.author = author; } } 

DBUtil.java

import java.sql.Connection; // 导入Connection接口,用于管理数据库连接 import java.sql.DriverManager; // 导入DriverManager类,用于获取数据库连接 public class DBUtil { 
    private static final String URL = "jdbc:mysql://localhost:3306/bookdb"; // 定义数据库URL private static final String USER = "root"; // 定义数据库用户名 private static final String PASSWORD = "password"; // 定义数据库密码 // 获取数据库连接 public static Connection getConnection() throws Exception { 
    Class.forName("com.mysql.cj.jdbc.Driver"); // 加载数据库驱动 return DriverManager.getConnection(URL, USER, PASSWORD); // 返回数据库连接 } } 

BookDao.java

import java.sql.Connection; // 导入Connection接口,用于管理数据库连接 import java.sql.PreparedStatement; // 导入PreparedStatement接口,用于执行预编译的SQL语句 import java.sql.ResultSet; // 导入ResultSet接口,用于处理结果集 import java.util.ArrayList; // 导入ArrayList类,用于创建动态数组 import java.util.List; // 导入List接口,用于定义列表 public class BookDao { 
    // 获取所有图书 public List<Book> getAllBooks() throws Exception { 
    List<Book> books = new ArrayList<>(); // 创建图书列表 try (Connection conn = DBUtil.getConnection(); // 获取数据库连接 PreparedStatement stmt = conn.prepareStatement("SELECT * FROM books"); // 创建预编译的SQL语句 ResultSet rs = stmt.executeQuery()) { 
    // 执行查询,并返回结果集 while (rs.next()) { 
    // 遍历结果集 Book book = new Book(); // 创建图书对象 book.setId(rs.getInt("id")); // 设置图书ID book.setTitle(rs.getString("title")); // 设置图书标题 book.setAuthor(rs.getString("author")); // 设置图书作者 books.add(book); // 将图书添加到列表中 } } return books; // 返回图书列表 } // 添加图书 public void addBook(Book book) throws Exception { 
    try (Connection conn = DBUtil.getConnection(); // 获取数据库连接 PreparedStatement stmt = conn.prepareStatement("INSERT INTO books (title, author) VALUES (?, ?)")) { 
    // 创建预编译的SQL语句 stmt.setString(1, book.getTitle()); // 设置图书标题 stmt.setString(2, book.getAuthor()); // 设置图书作者 stmt.executeUpdate(); // 执行更新 } } // 更新图书 public void updateBook(Book book) throws Exception { 
    try (Connection conn = DBUtil.getConnection(); // 获取数据库连接 PreparedStatement stmt = conn.prepareStatement("UPDATE books SET title = ?, author = ? WHERE id = ?")) { 
    // 创建预编译的SQL语句 stmt.setString(1, book.getTitle()); // 设置图书标题 stmt.setString(2, book.getAuthor()); // 设置图书作者 stmt.setInt(3, book.getId()); // 设置图书ID stmt.executeUpdate(); // 执行更新 } } // 删除图书 public void deleteBook(int id) throws Exception { 
    try (Connection conn = DBUtil.getConnection(); // 获取数据库连接 PreparedStatement stmt = conn.prepareStatement("DELETE FROM books WHERE id = ?")) { 
    // 创建预编译的SQL语句 stmt.setInt(1, id); // 设置图书ID stmt.executeUpdate(); // 执行删除 } } } 

BookServlet.java

import java.io.IOException; // 导入IOException类,用于处理输入输出异常 import javax.servlet.ServletException; // 导入ServletException类,用于处理Servlet特有的异常 import javax.servlet.annotation.WebServlet; // 导入WebServlet注解,用于定义Servlet的URL映射 import javax.servlet.http.HttpServlet; // 导入HttpServlet类,所有Servlet类都继承自这个类 import javax.servlet.http.HttpServletRequest; // 导入HttpServletRequest类,用于处理请求数据 import javax.servlet.http.HttpServletResponse; // 导入HttpServletResponse类,用于处理响应数据 @WebServlet("/books") // 使用@WebServlet注解定义Servlet的URL映射为/books public class BookServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; // 定义序列化ID private BookDao bookDao = new BookDao(); // 创建BookDao对象 // 重写doGet方法,处理GET请求 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    try { 
    request.setAttribute("books", bookDao.getAllBooks()); // 获取所有图书,并设置为请求属性 request.getRequestDispatcher("/index.jsp").forward(request, response); // 转发请求到index.jsp } catch (Exception e) { 
    // 捕获异常 throw new ServletException(e); // 抛出Servlet异常 } } // 重写doPost方法,处理POST请求 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    try { 
    String action = request.getParameter("action"); // 获取请求参数action if ("add".equals(action)) { 
    // 如果action为add Book book = new Book(); // 创建Book对象 book.setTitle(request.getParameter("title")); // 设置图书标题 book.setAuthor(request.getParameter("author")); // 设置图书作者 bookDao.addBook(book); // 添加图书 } else if ("update".equals(action)) { 
    // 如果action为update Book book = new Book(); // 创建Book对象 book.setId(Integer.parseInt(request.getParameter("id"))); // 设置图书ID book.setTitle(request.getParameter("title")); // 设置图书标题 book.setAuthor(request.getParameter("author")); // 设置图书作者 bookDao.updateBook(book); // 更新图书 } else if ("delete".equals(action)) { 
    // 如果action为delete bookDao.deleteBook(Integer.parseInt(request.getParameter("id"))); // 删除图书 } response.sendRedirect("books"); // 重定向到/books } catch (Exception e) { 
    // 捕获异常 throw new ServletException(e); // 抛出Servlet异常 } } } 

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- 指定JSP页面使用Java语言,内容类型为HTML,字符编码为UTF-8 -->
<!DOCTYPE html>
<html>
<head>
    <title>Book Management</title> <!-- 页面标题 -->
</head>
<body>
    <h1>Book Management</h1

>
    <form action="books" method="post"> <!-- 表单,用于添加图书 -->
        <input type="hidden" name="action" value="add"/> <!-- 隐藏域,用于指定操作类型为add -->
        Title: <input type="text" name="title"/><br/> <!-- 文本框,用于输入图书标题 -->
        Author: <input type="text" name="author"/><br/> <!-- 文本框,用于输入图书作者 -->
        <input type="submit" value="Add Book"/> <!-- 提交按钮,用于提交表单 -->
    </form>
    <hr/>
    <table border="1"> <!-- 表格,用于显示图书列表 -->
        <tr>
            <th>ID</th>
            <th>Title</th>
            <th>Author</th>
            <th>Actions</th>
        </tr>
        <%-- 使用JSP脚本元素嵌入Java代码 --%>
        <%
            List<Book> books = (List<Book>) request.getAttribute("books"); // 获取请求属性books
            for (Book book : books) { // 遍历图书列表
        %>
        <tr>
            <td><%= book.getId() %></td> <!-- 显示图书ID -->
            <td><%= book.getTitle() %></td> <!-- 显示图书标题 -->
            <td><%= book.getAuthor() %></td> <!-- 显示图书作者 -->
            <td>
                <form action="books" method="post" style="display:inline;"> <!-- 表单,用于更新图书 -->
                    <input type="hidden" name="action" value="update"/> <!-- 隐藏域,用于指定操作类型为update -->
                    <input type="hidden" name="id" value="<%= book.getId() %>"/> <!-- 隐藏域,用于指定图书ID -->
                    Title: <input type="text" name="title" value="<%= book.getTitle() %>"/><br/> <!-- 文本框,用于输入图书标题 -->
                    Author: <input type="text" name="author" value="<%= book.getAuthor() %>"/><br/> <!-- 文本框,用于输入图书作者 -->
                    <input type="submit" value="Update"/> <!-- 提交按钮,用于提交表单 -->
                </form>
                <form action="books" method="post" style="display:inline;"> <!-- 表单,用于删除图书 -->
                    <input type="hidden" name="action" value="delete"/> <!-- 隐藏域,用于指定操作类型为delete -->
                    <input type="hidden" name="id" value="<%= book.getId() %>"/> <!-- 隐藏域,用于指定图书ID -->
                    <input type="submit" value="Delete"/> <!-- 提交按钮,用于提交表单 -->
                </form>
            </td>
        </tr>
        <%
            }
        %>
    </table>
</body>
</html>

web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <!-- 定义Servlet --> <servlet> <servlet-name>BookServlet</servlet-name> <!-- Servlet名称 --> <servlet-class>com.example.BookServlet</servlet-class> <!-- Servlet类 --> </servlet> <!-- 定义Servlet映射 --> <servlet-mapping> <servlet-name>BookServlet</servlet-name> <!-- Servlet名称 --> <url-pattern>/books</url-pattern> <!-- URL模式 --> </servlet-mapping> </web-app> 

6. 参考资料

  • 《JavaEE基础教程》
  • 《JavaEE高级编程》
  • Oracle官方JavaEE文档

7. 总结

掌握JavaEE的核心技术,并通过实际项目实践来巩固所学知识。在学习过程中,要注重理论与实践相结合,多动手编写代码,解决实际问题,逐步提高自己的编程能力。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/133271.html

(0)
上一篇 2025-07-24 20:33
下一篇 2025-07-24 21:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信