基于jsp+servlet实现的简单博客系统实例(附源码)

这篇文章将会详细讲解如何通过使用JSP和Servlet来实现一个简单的博客系统。我们将会从搭建环境开始,到完成整个系统的构建。

环境搭建

工具准备

在开始之前,我们需要准备以下工具:

  • Java SE Development Kit(JDK)
  • Eclipse IDE for Java EE Developers
  • Tomcat服务器

创建项目

  1. 打开Eclipse,选择File -> New -> Dynamic Web Project。
  2. 给项目命名为“BlogSystem”,选择Target runtime为之前下载的Tomcat服务器。
  3. 点击Next,选择Generate web.xml deployment descriptor。
  4. 点击Finish。

添加Jar包

我们需要通过添加一些必要的Jar包来构建博客系统,具体步骤如下:

  1. 在Eclipse中的Package Explorer视图中选择“BlogSystem”项目,右键点击并选择Properties。
  2. 选择Java Build Path,点击Libraries选项卡,然后点击Add Library。
  3. 选择Server Runtime,然后点击Next。
  4. 选择你的Tomcat容器,然后点击Finish。

创建数据库

我们会使用MySQL数据库存储博客信息。下面是创建数据库并插入一些数据的示例SQL语句:

create database blog_system;

use blog_system;

create table if not exists posts (
  id int(11) not null auto_increment,
  title varchar(255) not null,
  content text not null,
  created_at timestamp default current_timestamp,
  primary key (id)
);

insert into posts values (1, '第一篇博客', '这是我的第一篇博客', now());
insert into posts values (2, '第二篇博客', '这是我的第二篇博客', now());

博客系统实现

创建JSP页面

我们需要创建以下JSP页面,用于展示博客信息:

  • index.jsp - 展示所有博客列表。
  • show.jsp - 展示一篇博客的详细信息。
  • new.jsp - 创建一篇新博客的表单。

所有的页面都将依赖于一个公共的头部和尾部。这些公共元素将被存储在includes/header.jsp和includes/footer.jsp中。

index.jsp

index.jsp将展示所有博客列表,我们需要使用JSTL标签来获取数据和渲染页面。下面是index.jsp的源代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ include file="includes/header.jsp" %>

<h2>All Posts</h2>

<p><a href="new.jsp">New Post</a></p>

<table>
  <tr>
    <th>Title</th>
    <th>Created At</th>
  </tr>

  <c:forEach var="post" items="${posts}">
    <tr>
      <td><a href="show.jsp?id=${post.id}">${post.title}</a></td>
      <td>${post.created_at}</td>
    </tr>
  </c:forEach>
</table>

<%@ include file="includes/footer.jsp" %>

我们使用了c:foreach标签来遍历每一篇博客,并展示它们的标题和创建时间。每篇博客的标题都是一个链接,点击链接可跳转到相应的show.jsp页面。

show.jsp

show.jsp用于展示一篇博客的详细信息。下面是show.jsp的源代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ include file="includes/header.jsp" %>

<c:set var="id" value="${param.id}" />

<c:forEach var="post" items="${posts}">
  <c:if test="${post.id == id}">
    <h2>${post.title}</h2>
    <p>${post.created_at}</p>
    <p>${post.content}</p>
  </c:if>
</c:forEach>

<%@ include file="includes/footer.jsp" %>

我们使用了c:set标签来获取post的编号,之后使用c:if标签把与该编号匹配的博客展示出来,包括标题、创建时间和详细内容。

new.jsp

new.jsp用于创建一篇新博客的表单。下面是new.jsp的源代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ include file="includes/header.jsp" %>

<h2>New Post</h2>

<form action="create_post" method="POST">
  <label for="title">Title:</label>
  <input type="text" name="title"><br>

  <label for="content">Content:</label>
  <textarea name="content"></textarea><br>

  <input type="submit" value="Create">
</form>

<%@ include file="includes/footer.jsp" %>

我们使用了一个简单的表单来收集博客的标题和内容,并通过POST方法把它们发送到create_post Servlet。

创建Servlet

我们需要创建Servlet类来处理来自JSP页面的请求。下面是我们需要实现的两个Servlet:

  • PostsController - 处理展示所有博客列表的请求和展示一篇博客详细信息的请求。
  • NewPostController - 处理创建一篇新博客的请求。

PostsController

PostsController作为Servlet类会处理来自index.jsp和show.jsp的请求。下面是PostsController的源代码:

package com.blogsystem.controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.blogsystem.model.Post;

public class PostsController extends HttpServlet {
  private static final long serialVersionUID = 1L;

  private Connection connection;

  public PostsController() throws SQLException {
    super();

    String url = "jdbc:mysql://localhost:3306/blog_system";
    String username = "root";
    String password = "";

    this.connection = DriverManager.getConnection(url, username, password);
  }

  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
      List<Post> posts = new ArrayList<Post>();

      PreparedStatement statement = this.connection.prepareStatement("SELECT * FROM posts");
      ResultSet result = statement.executeQuery();

      while (result.next()) {
        Post post = new Post();
        post.setId(result.getInt("id"));
        post.setTitle(result.getString("title"));
        post.setContent(result.getString("content"));
        post.setCreatedAt(result.getTimestamp("created_at"));

        posts.add(post);
      }

      request.setAttribute("posts", posts);
      request.getRequestDispatcher("/index.jsp").forward(request, response);

    } catch (SQLException e) {
      e.printStackTrace();
      response.getWriter().append("Error: " + e.getMessage());
    }
  }

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 暂不需要实现
  }
}

我们连接MySQL数据库,然后从数据库中检索出博客信息,并通过request.setAttribute把它们作为一个List,传递到index.jsp页面。

NewPostController

NewPostController作为Servlet类会处理来自new.jsp的请求。下面是NewPostController的源代码:

package com.blogsystem.controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class NewPostController extends HttpServlet {
  private static final long serialVersionUID = 1L;

  private Connection connection;

  public NewPostController() throws SQLException {
    super();

    String url = "jdbc:mysql://localhost:3306/blog_system";
    String username = "root";
    String password = "";

    this.connection = DriverManager.getConnection(url, username, password);
  }

  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.getRequestDispatcher("/new.jsp").forward(request, response);
  }

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
      String title = request.getParameter("title");
      String content = request.getParameter("content");

      PreparedStatement statement = this.connection.prepareStatement("INSERT INTO posts (title, content) VALUES (?, ?)");
      statement.setString(1, title);
      statement.setString(2, content);
      statement.executeUpdate();

      response.sendRedirect(request.getContextPath() + "/");

    } catch (SQLException e) {
      e.printStackTrace();
      response.getWriter().append("Error: " + e.getMessage());
    }
  }
}

我们使用doGet方法来展示填写新博客的表单,使用doPost方法来存储新博客的信息到数据库中,最后重定向到index.jsp页面。

部署项目

我们完成了博客系统的代码编写,现在需要在Tomcat服务器上部署它。下面是具体步骤:

  1. 右键点击“BlogSystem”项目,选择Export -> WAR file。
  2. 选择Export destination和Finish,保存WAR文件。
  3. 在Tomcat服务器的webapps目录中创建BlogSystem文件夹。
  4. 把WAR文件复制到BlogSystem文件夹中。
  5. 启动Tomcat服务器并访问http://localhost:8080/BlogSystem。

现在你可以看到展示博客列表的index.jsp页面和创建新博客的new.jsp页面!

总结

到这里,我们已经实现了一个基于JSP和Servlet的简单博客系统。本文展示的示例代码只是一个基础的实现,你可以在此基础上添加更多的功能,如编辑博客、添加标签、用户认证等等。

希望这篇攻略能对你学习JSP和Servlet有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于jsp+servlet实现的简单博客系统实例(附源码) - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 2021年最新Redis面试题汇总(3)

    注意:为了更好的呈现Markdown格式,下文中有些地方的符号用中文描述而不是直接使用符号。但这并不影响文本的正确性。 2021年最新Redis面试题汇总(3)——完整攻略 题目概述 本文是“2021年最新Redis面试题汇总(3)”的完整攻略。本篇文章共包括14个Redis面试题,均为比较高级的面试题,适用于Redis高级岗位的面试。 Redis是目前非常…

    Java 2023年5月19日
    00
  • Java的Struts框架中登陆功能的实现和表单处理器的使用

    Java的Struts框架是一个MVC框架,它的优点是可以将业务逻辑和视图分开,方便管理。其中,登录功能是Web开发中一个非常基本的功能,而表单处理器则可以用于将表单请求中的数据映射到Java对象中。下面我将详细讲解Java的Struts框架中登陆功能的实现和表单处理器的使用的完整攻略。 Struts框架中登陆功能的实现 对于登陆功能的实现,Struts框架…

    Java 2023年5月20日
    00
  • ajax详解_动力节点Java学院整理

    AJAX详解 什么是AJAX AJAX(Asynchronous JavaScript and XML)即异步 JavaScript 和 XML,是一种在Web页面中实现异步数据交互的通信技术。它的核心是 XMLHttpRequest 对象,它可以在不刷新页面的情况下发送和接收数据。 AJAX的优点 页面无需刷新,数据实时更新 能够异步加载数据,减少页面加载…

    Java 2023年5月26日
    00
  • Maven生成及安装jar包到本地仓库的方法

    这里是关于“Maven生成及安装jar包到本地仓库的方法”的完整攻略。 1. Maven的基础知识 Maven是一个强大的Java项目管理工具,可以帮助我们更简单地构建、管理和发布Java项目。Maven使用文本文件POM(Project Obeject Modle)来描述项目构建、依赖管理、打包等信息,并以此自动化构建和发布过程。 2. 生成Jar包 在M…

    Java 2023年5月20日
    00
  • java图论弗洛伊德和迪杰斯特拉算法解决最短路径问题

    Java图论:弗洛伊德和迪杰斯特拉算法解决最短路径问题 在图论中,最短路径问题是指在一张图中,从起始点到终点的所有路径中,具有最小路径权值的路径。本文将介绍Java语言中如何使用弗洛伊德和迪杰斯特拉算法解决最短路径问题。 弗洛伊德算法 弗洛伊德算法(Floyd算法)是一种通过动态规划解决所有最短路径的算法。该算法的时间复杂度为O(n^3),因此对于大型图而言…

    Java 2023年5月19日
    00
  • Spring Boot 集成JWT实现前后端认证的示例代码

    下面是关于“Spring Boot集成JWT实现前后端认证的示例代码”的完整攻略。 1. 什么是JWT JWT全称为JSON Web Token,是一种基于JSON的轻量级标准,我们可以使用JWT实现前后端的认证功能。其中,JWT由三部分组成:Header、Payload、Signature。Header和Payload分别是一个JSON对象(字典),而Si…

    Java 2023年6月3日
    00
  • Spring boot 添加jsp支持配置详解

    下面是Spring Boot添加JSP支持的完整攻略: 1. 添加依赖 在pom.xml文件中添加如下依赖: <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactI…

    Java 2023年6月15日
    00
  • Java实现简单聊天机器人

    让我来讲解一下怎么用Java实现简单聊天机器人的攻略。 1. 确定需求 在实现之前,首先需要明确聊天机器人的需求是什么。需要考虑的问题包括:聊天机器人的功能,需要处理哪些类型的输入和输出,需要哪些外部依赖等。 我们这里实现一个基本的聊天机器人,它能够对用户的输入进行解析并返回对应的回复。具体实现过程中,输入包括文本、语音、图片等类型;输出也包括文本、语音、图…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部