首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jsp简单博客系统源码

JSP(JavaServer Pages)是一种基于Java技术的动态网页开发技术,它允许在HTML或XML等静态页面中嵌入Java代码,从而实现动态内容的生成。下面是一个简单的JSP博客系统的源码示例,包括基本的博客文章展示和评论功能。

项目结构

代码语言:txt
复制
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

数据库设计

假设我们有一个简单的数据库,包含两个表:blogscomments

代码语言:txt
复制
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)
);

Java类

Blog.java

代码语言:txt
复制
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
}

Comment.java

代码语言:txt
复制
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
}

BlogService.java

代码语言:txt
复制
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
}

CommentService.java

代码语言:txt
复制
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
}

JSP页面

index.jsp

代码语言:txt
复制
<%@ 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>

blog.jsp

代码语言:txt
复制
<%@ 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>

addBlog.jsp

代码语言:txt
复制
<%@ 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>

addComment.jsp

代码语言:txt
复制
<%@ 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.xml

代码语言:txt
复制
<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>

注意事项

  1. 数据库连接:确保数据库连接字符串、用户名和密码正确。
  2. 依赖库:将 mysql-connector-java.jar 添加到项目的 lib 目录中。
  3. 安全性:在生产环境中,应使用预编译语句防止SQL注入,并考虑使用连接池管理数据库连接。

这个示例展示了一个简单的JSP博客系统的基本结构和功能。你可以根据需要进一步扩展和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Django简单博客系统项目开发总结

    本文是Django入门与实践部分,简单博客系统项目开发总结思维导图。...Django使那些开发复杂的、数据库驱动的网站变得简单。...框架的核心包括: models.py 一个面向对象的映射器,用作数据模型(以Python类的形式定义)和关系性数据库间的媒介; urls.py 一个基于正则表达式的URL分发器 views.py 一个视图系统...,用于处理请求 models.py 一个模板系统 核心框架中还包含: Web服务器,是一个轻量级的、独立的Web服务器,用于开发和测试 表单序列化及验证系统,用于HTML表单和适于数据库存储的数据之间的转换...缓存框架,并有几种缓存方式可供选择 中间件,允许对请求处理的各个阶段进行拦截处理 序列化系统,能够生成或读取采用XML或JSON表示的Django模型实例 模板引擎扩展系统

    71641

    JSP简单入门(1)

    JSP页面中可以包含模板元素、脚本元素、EL表达式、注释、指令、和行为元素(JSP标签)等内容。有三种类型的脚本元素:JSP脚本片断、JSP表达式和JSP声明,它们内部使用的都是Java脚本代码。...一、模板元素 JSP页面中的静态HTML内容被称之为JSP模板元素。 二、脚本元素 1、JSP表达式 将一个Java变量或表达式的计算结果输出到客户端的简化方式,代码位于之中。...2、JSP页面中的错误一般可归纳为以下三类: JSP页面中的JSP语法格式有问题,导致其不能被翻译成Servlet源文件,JSP引擎将提示这类错误发生在JSP页面中的位置(行和列)及相关信息; JSP页面中...答:因为JSP引擎将JSP源文件翻译成的Servlet源文件默认采用UTF-8编码,而JSP开发人员可以采用各种字符集编码来编写JSP源文件,因此,JSP引擎将JSP源文件翻译成Servlet源文件时,...简单理解是:翻译当前JSP页面时,遇到这条语句,则把语句中引入的文件翻译后Servlet代码包含在当前JSP页面翻译成的Servlet里。

    2.5K110

    JSP简单入门(2)

    六、行为元素(JSP标签,简述) JSP提供了一种称之为Action的元素,在JSP页面中使用Action元素可以完成各种通用的JSP页面功能。...1、jsp:include>标签 jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。...简单理解是:翻译当前JSP页面时,遇到这条语句,调用一个include方法,把引入文件包含进来,并不会把引入的文件翻译后的Servlet代码包含在当前JSP页面翻译的Servlet中。...jsp:include>标签对JSP引擎翻译JSP页面的过程没有影响,例如,引入页面的page指令不影响被引入页面的page指令。include指令则对JSP引擎翻译JSP页面的过程起作用。...修改dynamicInclude.jsp文件,去掉flush属性设置,用浏览器重新访问dynamicInclude.jsp页面,浏览器等待5秒以后同时显示出了dynamicInclude.jsp和included.jsp

    1.6K50

    如何用Serverless构建博客系统【含源码】

    点击观看大咖分享 本期腾讯云大学大咖分享课程邀请到腾讯云高级工程师陈嘉欣教我们如何用Serverless构建博客系统。...QQ空间其实也是个博客系统。另一种就是个人构建的博客网站。我们这里主要是讲第二种。就是也就是个人的博客网站。 从个人的博客网站这个角度讲。从技术角度其实也是可以分为两种:动态博客和静态博客。...因为每一次更新博文就相当于一次发布不同意动态博客,更新篇博文需数据库里面多加了一条。另外,静态博客没有后台,所以它的功能会做的比较简单。...目前CLI工具支持的命令,可以看到,包括初始化,发布,本地调试,远程调用等功能都支持,这里我们先使用最简单的发布功能,CLI工具的安装及初始化教程可以在SCF的概览页找到。...[hiexfa19rb.png] API服务 —— 回包处理 API的返回就相对简单了,注意设置好charset就行了 [c9z06ti4fb.png] 提供全文搜索能力 ——hexo 脚本改造 如果代码很简单

    1.4K20

    java基于ssm的个人博客系统个人博客网站个人博客项目源码

    简介 Java ssm开发的个人博客系统,可以发布博客,照片,站长留言。 演示视频 https://www.bilibili.com/video/BV1sf4y1y7Ne/?...share_source=copy_web&vd_source=ed0f04fbb713154db5cc611225d92156 技术 mysql,SSM,css,js,jq 功能 简单版(个人): 网站功能...:登录,上传照片,发布博客,首页,博客详情,注册,照片管理,博客管理,给站长留言,查看留言,分页,编辑博客,删除博客,删除照片,分页展示博客和照片,分页展示站长留言,修改登录密码。...增强版 角色 管理员+注册用户 添加功能:博文浏览量,博文评论,用户可以删除自己的评论,博主可以管理该博文以下的所有评论,搜索博文,博客首页展示用户头像,昵称,上传头像,修改基本信息,相册显示用户头像昵称

    2.1K00

    JSP介绍与简单使用

    用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。...JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。通常在项目开发中,都是以JSP来编写展示层面,Servlet则编写逻辑层。... JSP的访问流程与原理 ---- 想要访问JSP文件很简单就好像访问HTML文件一样,直接在浏览器的地址栏上输入JSP文件的路径,一回车就可以访问了: ?...HttpJspBase extends HttpServlet implements HttpJspPage { ...............................以下代码省略 从源码可以看到...从以上可以得知,jsp其实就是个Servlet,只不过是换了个形态的Servlet罢了,所以学JavaWeb的时候要先学Servlet,然后再学JSP的时候就简单多了。

    2.1K20

    JSP博客管理系统myeclipse开发mysql数据库mvc结构java编程

    一、源码特点 JSP博客管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助 mvc结构,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。...本系统包括设计源码相关文档,详情咨询Q 251836457 视频内容 二、功能介绍 此次系统主要在JSP的基础上,结合Servlet技术并以MVC的框架以及面向对象的方法加以实行。...本次设计将采用JSP+Servlet+javabean技术并采用MVC开发框架加以实现。 该模块下有五个子功能 1. 博文查看将返回的博文以标题和博文简略形式展示出来。 2....登入登出系统:登陆后台时需要通过登陆验证身份,在后台也可以选择退出系统。 6....3、数据库文件名是jspmblog.sql ,系统名称mblog TIM图片20191013211820.png TIM图片20191013211859.png TIM图片20191013211915

    1.8K30

    某开源博客系统最新版源码审计

    0×00 概述 近期审计一个JAVA开源博客系统mblog2.5最新版,整体系统还是很安全的,漏洞较少,传统的问题像XSS系统使用全局过滤的方式进行实体化处理,上传问题使用白名单校验,越权方面限制的也比较死...0×01 审计思路 下载此源码解压之后发现40多M,比较大的一个源码了,如果遇到这样比较大的源码,可以使用一些辅助工具去手工审计比如Notepad++,可以快速定位位置和查询一些关键字去审计,比较快,但是这样去审计可能一些逻辑安全问题发现不了...0×02 白盒审计 源码信息:mblog2.5 站点地址: https://gitee.com/szhirong/mblog 不安全的随机数生成(Fortify常扫出): JAVA语言在生成URL或者一些需要加密密钥等情况下会需要使用随机数

    95450

    纯JSP实现简单登录跳转

    1.JSP介绍 JSP即Java Server Pages,JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。...(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。 response response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。...page page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。...2.如何查看jsp经过解析转换之后的Java代码(启动项目并利用tomcat发布之后,可以在tomcat安装目录下的“work”目录找到解析后对于的.java文件和编译后的.class文件) 3.简单登录跳转实例代码实现...使用jsp代码确实可以减少冗余代码,提高开发效率。不过,jsp的短板就是它在对页面逻辑进行处理时比较麻烦。而且每个人有各自的代码风格,如果有过多的jsp逻辑代码的话读来难免有些晦涩难懂!

    2.7K20
    领券