JavaEE核心组件
JavaEE核心组件
Servlet
Servlet 是 JavaEE 中处理 Web 请求的核心组件,运行在 Web 容器(如 Tomcat、Jetty)中,用于接收客户端的 HTTP 请求并生成动态响应。它通过 `service()` 方法处理请求,可根据请求方法(GET、POST 等)分别在 `doGet()`、`doPost()` 等方法中处理逻辑。
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class ProductServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
try (java.io.PrintWriter out = response.getWriter()) {
out.println("<html><body><h1>商品列表页</h1>");
out.println("<p>处理 GET 请求获取商品信息</p>");
out.println("</body></html>");
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
try (java.io.PrintWriter out = response.getWriter()) {
out.println("<html><body><h1>商品提交处理</h1>");
out.println("<p>处理 POST 请求创建新商品</p>");
out.println("</body></html>");
}
}
}
Servlet 常用于实现前端控制器,处理不同类型的请求,适用于构建电商平台商品展示与管理、用户登录登出等功能场景。
JSP(JavaServer Pages)
JSP 通过 %@ page % 指令设置页面属性,如编码、导入类等,通过 `<%! %>` 定义页面级方法,通过 `<%= %>` 输出表达式结果。以下是一个结合数据库查询展示用户列表的 JSP 示例(简化版,实际需结合数据库连接):
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户列表</title>
</head>
<body>
<h1>用户列表展示</h1>
<%
// 模拟用户数据(实际从数据库查询)
java.util.List<java.util.Map<String, String>> users =
java.util.Arrays.asList(
java.util.Collections.singletonMap("username", "user1"),
java.util.Collections.singletonMap("username", "user2")
);
for (java.util.Map<String, String> user : users) {
%>
<p>用户名:<%= user.get("username") %></p>
<%
}
%>
</body>
</html>
JSP 适用于快速开发动态页面,如企业内部管理系统的报表展示页、新闻发布系统的内容呈现页等,能方便地将业务数据与页面展示结合。
EJB(Enterprise JavaBeans)
EJB 容器管理其生命周期,提供事务上下文、安全上下文等。以消息驱动 Bean 为例,处理订单支付成功后的通知消息:
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
@MessageDriven
public class PaymentNotificationBean implements MessageListener {
@Override
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String orderId = textMessage.getText();
// 此处可添加发送邮件、更新订单状态等逻辑
System.out.println("订单 " + orderId + " 支付成功,发送通知...");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
EJB 适用于分布式系统中的核心业务处理,如金融交易系统的账务处理、大型电商平台的库存扣减与订单生成(需事务保证一致性)等场景。
JPA(Java Persistence API)
JPA 支持通过 `EntityManager` 进行持久化操作,如 `persist()` 保存对象、`find()` 查询对象、`merge()` 更新对象等。以下是一个复杂查询示例(查询指定范围内的用户):
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import java.util.List;
public class UserRepository {
@PersistenceContext
private EntityManager em;
public List<User> findUsersByAgeRange(int minAge, int maxAge) {
String jpql = "SELECT u FROM User u WHERE u.age BETWEEN :minAge AND :maxAge";
TypedQuery<User> query = em.createQuery(jpql, User.class);
query.setParameter("minAge", minAge);
query.setParameter("maxAge", maxAge);
return query.getResultList();
}
}
JPA 适用于各类需要与数据库交互的企业级应用,如客户关系管理(CRM)系统中客户数据的增删改查、物流管理系统中订单与运输数据的持久化处理等场景。