JSP WEB开发(四) MVC模式

MVC模式介绍

MVC(Model-View-Controller)是一种软件设计模式,最早出现在Smalltalk语言中,后来在Java中得到广泛应用,并被Sun公司推荐为Java EE平台的设计模式。它把应用程序分成了三个核心模块:模型层、视图层和控制层。

数据模型层

表示数据封装功能,负责处理业务逻辑和数据存储。例如,在一个Web应用中,模型层可能包含数据库访问类,用来读写数据库中的数据。一个或多个JavaBean对象,用于存储数据,JavaBean主要提供简单的setXXX()方法和getXXX()方法,在这些方法中不涉及对数据的具体处理细节

java 复制代码
public class EmployeeDAO {
    public List<Employee> getAllEmployees() { ... }
    public void addEmployee(Employee employee) { ... }
    public void updateEmployee(Employee employee) { ... }
    public void deleteEmployee(int id) { ... }
}

视图层

表示数据显示功能,负责显示数据给用户看。例如,在一个Web应用中,视图层可能是HTML页面或者JSP文件,用来展示数据。一个或多个JSP页面,为模型提供数据显示,JSP页面主要使用 HTML标记和JavaBean标记来显示数据。

java 复制代码
<html>
<body>
    <table>
        <tr><th>ID</th><th>Name</th><th>Salary</th></tr>
        <% for (Employee e : employees) { %>
            <tr><td><%= e.getId() %></td><td><%= e.getName() %></td><td><%= e.getSalary() %></td></tr>
        <% } %>
    </table>
</body>
</html>

控制器层

表示流程控制功能,负责接收用户的请求,调用模型层的方法,然后决定如何显示数据。例如,在一个Web应用中,控制器可能是Servlet或者Action类,用来处理HTTP请求。一个或多个Servlet对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到JavaBean中,然后Servlet使用重定向或请求转发方式请求视图中的某个JSP页面更新显示 JSP 中实现 MVC模式

以用户注册模块来介绍在JSP中如何实现MVC模式

程序结构

bean.User:模型层,实现用户注册的业务模型及数据库操作;

java 复制代码
public class User {
    private String username;
    private String password;

    public String getUsername() 
    { 
        return this.username; 
    }
    public void setUsername(String username) 
    { 
        this.username = username; 
    }

    public String getPassword() 
    { 
        return this.password; 
    }
    public void setPassword(String password) 
    { 
        this.password = password; 
     }

    public boolean register() {
        // 这里省略了数据库操作
        return true;
    }
}

servlet.UserServlet:控制器层的角色,用于流程控制,调度模型和选择视图展示运行结果;

java 复制代码
public class UserServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

        if (user.register()) {
            request.setAttribute("result", "注册成功");
        } else {
            request.setAttribute("result", "注册失败");
        }

        RequestDispatcher dispatcher = request.getRequestDispatcher("result.jsp");
        dispatcher.forward(request, response);
    }
}

regist.jsp和result.jsp等页面为视图层,负责交互与结果展现

编程思想:

用户通过JSP页面的表单输入注册信息,表单提交后由Servlet获取表单中的数据并交由JavaBean对象储存用户数据,然后将JavaBean对象的数据保存至数据库中,最后再由Servlet通知相应的视图显示用户注册的结果。

java 复制代码
<!-- 注册页面 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户注册</title>
</head>
<body>
<form action="UserServlet">
    用户名:<input type="text" name="username"><br>
    密码:<input type="password" name="password"><br>
    <input type="submit" value="注册">
</form>
</body>
</html>

<!-- 结果页面 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册结果</title>
</head>
<body>
<%
    String result = (String) request.getAttribute("result");
%>
<%= result %>
</body>
</html>
相关推荐
武子康1 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
灵感__idea1 小时前
JavaScript高级程序设计(第5版):好的编程就是掌控感
前端·javascript·程序员
YuTaoShao4 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
源码_V_saaskw4 小时前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友
超浪的晨4 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
hui函数4 小时前
掌握JavaScript函数封装与作用域
前端·javascript
双力臂4045 小时前
Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
java·spring boot·后端·单元测试
Edingbrugh.南空5 小时前
Aerospike与Redis深度对比:从架构到性能的全方位解析
java·开发语言·spring
Carlos_sam5 小时前
Opnelayers:ol-wind之Field 类属性和方法详解
前端·javascript
小毛驴8505 小时前
创建 Vue 项目的 4 种主流方式
前端·javascript·vue.js