JavaEE体系结构

JavaEE(Java Enterprise Edition)是Java平台上用于开发企业级应用程序的一套规范和技术体系。JavaEE体系结构提供了一个强大且灵活的框架,使开发者能够构建可扩展、安全和可靠的企业级应用程序。

组件

JavaEE体系结构由一系列组件组成,这些组件协同工作以提供企业级应用程序的各种功能。以下是JavaEE中的主要组件:

  1. EJB(Enterprise Java Bean):EJB是JavaEE体系结构的核心组件之一。它提供了一种分布式的、事务安全的方法来构建企业级应用程序。EJB可以分为Session Bean、Message-Driven Bean和Entity Bean三种类型。

  2. Servlet:Servlet是一种在服务器上运行的Java程序,用于处理客户端请求和生成响应。它可以与Web容器(如Tomcat)一起使用,以创建Web应用程序。

  3. JSP(JavaServer Pages):JSP是一种用于创建动态Web页面的技术。它允许开发者将Java代码嵌入到HTML页面中,以实现动态内容的生成。

  4. JDBC(Java Database Connectivity):JDBC允许Java应用程序与关系数据库进行通信。它提供了一组API,用于执行SQL查询、更新数据库和处理结果集。

  5. JPA(Java Persistence API):JPA是一种用于持久化Java对象的技术。它提供了一组API,使开发者能够将对象映射到关系数据库中。

JavaEE容器

JavaEE应用程序运行在JavaEE容器中。容器提供了一系列的服务和环境,以支持应用程序的执行。JavaEE容器主要分为两种类型:

  1. Web容器:Web容器用于执行Servlet和JSP。它处理客户端请求并将其转发给相应的Servlet或JSP进行处理。常见的Web容器有Tomcat、Jetty等。

  2. EJB容器:EJB容器用于执行EJB。它提供了一系列的服务,如事务管理、安全性、并发控制等。常见的EJB容器有JBoss、WebLogic等。

示例代码

以下是一个简单的JavaEE示例代码,演示了如何使用Servlet和JSP来创建一个简单的登录页面:

// LoginServlet.java
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        if (username.equals("admin") && password.equals("admin")) {
            request.getSession().setAttribute("username", username);
            response.sendRedirect("welcome.jsp");
        } else {
            request.setAttribute("error", "Invalid username or password");
            request.getRequestDispatcher("login.jsp").forward(request, response);
        }
    }
}
<!-- login.jsp -->
<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    Login
    
    <% String error = (String) request.getAttribute("error"); %>
    <% if (error != null) { %>
        <p><%= error %></p>
    <% } %>
    
    <form action="login" method="post">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" required><br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required><br>
        <input type="submit" value="Login">
    </form>
</body>
</html>
<!-- welcome.jsp -->
<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    Welcome, <%= request.getSession().getAttribute("username") %>!
</body>
</html>

上述代码中,LoginServlet处理登录请求,并根据用户名和密码的验证结果进行相应的操作。如果验证通过,将用户名存储在会话中,并重定向到welcome.jsp页面;如果验证失败,将错误信息存储在请求中,并转发回login.jsp页面进行显示。

login.jsp页面显示一个登录表单,用户输入用户名和密码。如果有错误信息,则显示错误消息。

welcome.jsp页面显示登录成功的欢迎消息,包