用原生Servlet+JDBC+JSP可构建最小可行博客系统,需手写路由、SQL防注入、Session鉴权等核心逻辑,避免过早引入Spring Boot等框架掩盖关键链路。

Java Web 博客系统不是靠堆框架就能跑起来的,核心在于分清「哪些必须手写」「哪些可以简化」。一个真正能本地启动、增删改查文章、带用户登录的最小可行系统,用原生 Servlet + JDBC + JSP 就够了,不需要 Spring Boot 或 Hibernate——尤其当你刚学完 JavaWeb 基础时,加太多自动配置反而掩盖了请求怎么流转、session 怎么维持、SQL 怎么防注入这些关键链路。
用 HttpServlet 处理路由和业务逻辑,别急着套 MVC 框架
新手常把所有逻辑塞进一个 doGet() 里,结果连跳转都混乱。实际应按职责拆:
-
ArticleListServlet:只查数据库、设置request.setAttribute("articles", list)、request.getRequestDispatcher("/list.jsp").forward(request, response) -
ArticleDetailServlet:从request.getParameter("id")取值,查单条,注意判空后跳 404 页面(用response.sendError(404)) -
LoginServlet:接收表单,用request.getParameter("username")和password,查库比对(密码别明文存!用BCrypt.hashpw()存,BCrypt.checkpw()验)
所有 Servlet 必须在 web.xml 中显式声明 和 ,否则 Tomcat 根本不认你写的类。
用 JDBC 直连 MySQL,但必须用 PreparedStatement
看到别人用 "SELECT * FROM article WHERE id = " + id 就该警觉——这是 SQL 注入温床。正确做法:
立即学习“Java免费学习笔记(深入)”;
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。 Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免
String sql = "SELECT * FROM article WHERE id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, Integer.parseInt(request.getParameter("id")));
ResultSet rs = ps.executeQuery();
其他注意事项:
- 连接别每次请求都
new DriverManager.getConnection(),用DataSource(哪怕只是BasicDataSource简单配个连接池) -
ResultSet、PreparedStatement、Connection必须在finally块里close(),或用 try-with-resources - 建表时
article表至少要有id(主键自增)、title、content、author_id、create_time字段
用 session 管理登录态,但别依赖 URL 重写
登录成功后必须存 session.setAttribute("user", user),之后每个需要鉴权的 Servlet 开头加:
User user = (User) request.getSession().getAttribute("user");
if (user == null) {
response.sendRedirect("login.jsp");
return;
}
常见错误:
- 没调
session.setMaxInactiveInterval(60 * 30),导致用户盯着页面半小时就掉登录 - 在重定向前忘了
return,结果继续执行后续代码,报IllegalStateException: Cannot forward after response has been committed - 用
response.encodeURL()做 URL 重写——现在浏览器都支持 cookie,没必要,还让链接难看
最易被忽略的是字符编码:JSP 页面顶部必须有 ,Tomcat 的 server.xml 中 Connector 要加 URIEncoding="UTF-8",否则中文标题一保存就变问号。还有,别把数据库连接密码硬编码在 Java 类里,抽到 db.properties 文件中读取更安全。









