首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

MVC 模式實戰:JSP + JavaBean + Servlet 分層架構範例

     編輯:Java 相關知識

為什麼需要 MVC

純 JSP 混寫 SQL 與邏輯導致維護困難、難以移植資料庫、無法體現 Java 物件導向優勢。MVC 將視圖、模型、控制器分離,配合 XML 配置實現零修改原始碼切換資料庫。

三層代碼範例

1. Model:JavaBean 封裝資料

public class UserBean {
    private String name, pwd;
    private int id;
    // 建構子、getter/setter 省略
}

2. DAO:資料庫操作封裝 (防 SQL 注入)

public class DBCon {
    private String driver = "com.mysql.cj.jdbc.Driver";
    private String url = "jdbc:mysql://localhost/cdemo?user=root&password=xxx&useUnicode=true&characterEncoding=UTF-8";

    public boolean findUser(String name, String pwd) {
        String sql = "SELECT * FROM fenye WHERE name=? AND pwd=?";
        try (Connection conn = DriverManager.getConnection(url);
             PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setString(1, name);
            ps.setString(2, pwd);
            try (ResultSet rs = ps.executeQuery()) {
                return rs.next();
            }
        } catch (SQLException e) { e.printStackTrace(); }
        return false;
    }

    public List fenYe(int page, int size) { ... } // 分頁查詢
    public int getSize() { ... } // 總筆數
}

3. Controller:Servlet 處理業務流程


@WebServlet("/LoginTackle")
public class LoginTackle extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        DBCon db = new DBCon();
        String name = req.getParameter("username");
        String pwd = req.getParameter("userpwd");

        if (db.findUser(name, pwd)) {
            HttpSession session = req.getSession(true);
            session.setAttribute("login", "true");
            session.setAttribute("username", name);
            resp.sendRedirect("Welcome?page=1");
        } else {
            resp.sendRedirect("Login");
        }
    }
}

關鍵優勢

  • 資料庫操作集中在 DAO,防注入用 PreparedStatement。
  • 業務邏輯在 Servlet,JSP 僅負責顯示(可用 EL/JSTL)。
  • 資料庫遷移只改 DAO 連線參數,不動 Servlet/JSP。
  • 擴充功能(如分頁、驗證碼)各層職責清晰,易於單元測試。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved