JSP(JavaServer Pages)是一种基于Java技术的动态网页开发技术,它允许在HTML或XML等静态页面中嵌入Java代码,从而实现动态内容的生成。下面是一个简单的JSP博客系统的源码示例,包括基本的博客文章展示和评论功能。
blog-system/
├── src/
│ └── com/
│ └── example/
│ ├── Blog.java
│ ├── Comment.java
│ ├── BlogService.java
│ └── CommentService.java
├── web/
│ ├── index.jsp
│ ├── blog.jsp
│ ├── addBlog.jsp
│ └── addComment.jsp
├── WEB-INF/
│ └── web.xml
└── lib/
└── mysql-connector-java.jar
假设我们有一个简单的数据库,包含两个表:blogs
和 comments
。
CREATE TABLE blogs (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE comments (
id INT AUTO_INCREMENT PRIMARY KEY,
blog_id INT,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (blog_id) REFERENCES blogs(id)
);
package com.example;
import java.sql.Timestamp;
public class Blog {
private int id;
private String title;
private String content;
private Timestamp createdAt;
// Getters and Setters
}
package com.example;
import java.sql.Timestamp;
public class Comment {
private int id;
private int blogId;
private String content;
private Timestamp createdAt;
// Getters and Setters
}
package com.example;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class BlogService {
private Connection getConnection() throws SQLException {
return DriverManager.getConnection("jdbc:mysql://localhost:3306/blogdb", "username", "password");
}
public List<Blog> getAllBlogs() {
List<Blog> blogs = new ArrayList<>();
try (Connection conn = getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM blogs")) {
while (rs.next()) {
Blog blog = new Blog();
blog.setId(rs.getInt("id"));
blog.setTitle(rs.getString("title"));
blog.setContent(rs.getString("content"));
blog.setCreatedAt(rs.getTimestamp("created_at"));
blogs.add(blog);
}
} catch (SQLException e) {
e.printStackTrace();
}
return blogs;
}
// Other methods for adding, updating, deleting blogs
}
package com.example;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class CommentService {
private Connection getConnection() throws SQLException {
return DriverManager.getConnection("jdbc:mysql://localhost:3306/blogdb", "username", "password");
}
public List<Comment> getCommentsByBlogId(int blogId) {
List<Comment> comments = new ArrayList<>();
try (Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM comments WHERE blog_id = ?")) {
stmt.setInt(1, blogId);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Comment comment = new Comment();
comment.setId(rs.getInt("id"));
comment.setBlogId(rs.getInt("blog_id"));
comment.setContent(rs.getString("content"));
comment.setCreatedAt(rs.getTimestamp("created_at"));
comments.add(comment);
}
} catch (SQLException e) {
e.printStackTrace();
}
return comments;
}
// Other methods for adding, updating, deleting comments
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Blog System</title>
</head>
<body>
<h1>Welcome to My Blog</h1>
<a href="addBlog.jsp">Add New Blog</a>
<ul>
<% List<Blog> blogs = new BlogService().getAllBlogs();
for (Blog blog : blogs) { %>
<li><a href="blog.jsp?id=<%= blog.getId() %>"><%= blog.getTitle() %></a></li>
<% } %>
</ul>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.example.Blog" %>
<%@ page import="com.example.Comment" %>
<%@ page import="java.util.List" %>
<%@ page import="com.example.BlogService" %>
<%@ page import="com.example.CommentService" %>
<html>
<head>
<title><%= request.getParameter("title") %></title>
</head>
<body>
<h1><%= request.getParameter("title") %></h1>
<p><%= request.getParameter("content") %></p>
<a href="addComment.jsp?id=<%= request.getParameter("id") %>">Add Comment</a>
<ul>
<% List<Comment> comments = new CommentService().getCommentsByBlogId(Integer.parseInt(request.getParameter("id")));
for (Comment comment : comments) { %>
<li><%= comment.getContent() %> - <%= comment.getCreatedAt() %></li>
<% } %>
</ul>
<a href="index.jsp">Back to Home</a>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Add New Blog</title>
</head>
<body>
<h1>Add New Blog</h1>
<form action="addBlog" method="post">
Title: <input type="text" name="title"><br>
Content: <textarea name="content"></textarea><br>
<input type="submit" value="Add Blog">
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Add Comment</title>
</head>
<body>
<h1>Add Comment</h1>
<form action="addComment" method="post">
Blog ID: <%= request.getParameter("id") %><br>
Content: <textarea name="content"></textarea><br>
<input type="submit" value="Add Comment">
</form>
</body>
</html>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>addBlog</servlet-name>
<servlet-class>com.example.AddBlogServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addBlog</servlet-name>
<url-pattern>/addBlog</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>addComment</servlet-name>
<servlet-class>com.example.AddCommentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addComment</servlet-name>
<url-pattern>/addComment</url-pattern>
</servlet-mapping>
</web-app>
mysql-connector-java.jar
添加到项目的 lib
目录中。这个示例展示了一个简单的JSP博客系统的基本结构和功能。你可以根据需要进一步扩展和优化。
领取专属 10元无门槛券
手把手带您无忧上云