去除 Servlet 控制層,JSP 直接調用 JavaBean,**Model 1 架構**(適合極簡原型、教學演示,生產環境不推薦)。
| 項目 | 版本 |
|---|---|
| IDE | MyEclipse 10 |
| JDK | 1.6.0_13 (32位) |
| 容器 | Tomcat 7.0 (32位) |
| 數據庫 | MySQL 5.7.13 |
| 驅動包 | mysql-connector-java-5.1.6-bin.jar |
createConn()、update(sql)、query(sql)/next()/getValue()、各類 closeXxx()public class UserBean {
public boolean valid(String username, String password) {
DBAccess db = new DBAccess();
if (db.createConn()) {
String sql = "SELECT * FROM userInfo WHERE username='" + username + "' AND password='" + password + "'";
db.query(sql);
boolean ok = db.next();
db.closeAll(); return ok;
}
return false;
}
// isExist(username)、add(username, password, email) 同理
}
⚠️ **注**:原碼使用字符串拼接 SQL,**存在注入風險**,生產必須改用 `PreparedStatement`。
login_action.jsp
<%@ page import="liu.UserBean" %>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username == null || password == null) {
response.sendRedirect("login.jsp"); return;
}
UserBean ub = new UserBean();
if (ub.valid(username, password)) {
session.setAttribute("username", username);
response.sendRedirect("welcome.jsp");
} else {
response.sendRedirect("login.jsp");
}
%>
register_action.jsp:參數校驗 → isExist → add → 重定向登錄/註冊頁
功能同 Servlet 版:登錄、註冊、退出、Session 管理。頁面跳轉邏輯集中在 Action JSP 中。
| 維度 | Model 1 (JSP+JavaBean) | Model 2 (JSP+Servlet+JavaBean) | 現代化 (Spring MVC + MyBatis) |
|---|---|---|---|
| 控制邏輯位置 | 分散在各 Action JSP | 集中在 Servlet | Controller + Service 分層 |
| 複用性 | 差 | 中 | 高 |
| 可測試性 | 極難 | 可單元測試 Servlet | 全層可測 |
| 事務管理 | 手動/無 | 手動/無 | 聲明式 @Transactional |
| 適用場景 | 原型/教學/極簡 | 中小項目/過渡期 | 企業級生產 |
Model 1 通過「JSP 直接調 JavaBean」實現最短路徑開發,適合快速驗證想法。**但業務增長後必須遷移至 Model 2 或 Spring 生態**,否則將陷入「大雜燒 JSP」維護地獄。