Spring之路(23)–SpringMVC+Bootstrap开发博客系统实例(其他功能实现)

简介: 本文目录1. 前言2.新增博客功能实现3. 编辑博客功能的实现4. 删除博客功能实现5. 总结

1. 前言

到目前来说,跟SpringMVC与Bootstrap相应的技术都已经引入到项目中来并进行过使用了,剩下的就是功能逐一实现了,我们只讲述一些没遇到过的重点问题,重复部分不再介绍。请注意代码中的注释部分就好了。


2.新增博客功能实现

首先导航栏点击【新增博客】后,通过访问blogAdd.do,跳转到了blogAdd.jsp,我们修改下blogAdd.jsp代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!-- 同样引入Bootstrap -->
<link rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"
  integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
  crossorigin="anonymous">
</head>
<body>
  <!-- 同样的导航栏 -->
  <nav class="navbar navbar-inverse">
    <div class="container-fluid">
      <ul class="nav navbar-nav">
        <li><a href="/myblog/blogView.do">浏览博客</a></li>
        <li><a href="/myblog/blogAdd.do">新增博客</a></li>
      </ul>
    </div>
  </nav>
  <div class="container-fluid">
    <div class="row">
      <div class="col-md-12">
        <!-- 新增博客的表单 -->
        <form action="/myblog/blogAddSubmit.do" method="post">
          <div class="form-group">
            <label>标题</label>
            <input name="title" type="text" class="form-control">
          </div>
          <div class="form-group">
            <label>内容</label>
            <textarea name="content" class="form-control" rows="3"></textarea>
          </div>
          <div class="form-group">
            <label>作者</label>
            <input name="" type="text" class="form-control">
          </div>
          <button type="submit" class="btn btn-success">发布博客</button>
        </form>
      </div>
    </div>
  </div>
</body>
</html>

然后修改BlogController中blogAddSubmit方法代码

   /**
   * 4新增页面提交(新增完成后进入浏览博客页面)
   */
  @RequestMapping("/blogAddSubmit")
  public ModelAndView blogAddSubmit(BlogDo blog) {//注意SpringMVC会自动将表单内容放入blog对象对应属性,这个功能真是牛X
    //将表单提交内容入库
    blogService.addBlog(blog);
    ModelAndView mv = new ModelAndView();
    mv.setViewName("blogView.jsp");
    //查询最新的博客信息返回给页面
    mv.addObject("blogs", blogService.getBlogList());
    return mv;
  }

image.png

3. 编辑博客功能的实现

编辑博客实际上就是按ID修改其他内容,在进入blogEdit.jsp页面时,就应该先查出相关信息显示:


/**

 * 5进入编辑博客页面

 */

@RequestMapping("/blogEdit")

public ModelAndView blogEdit(Long id) {//SpringMVC自动将url里面含有的id=xx中的xx赋值给id,相当科幻相当智能啊!

 ModelAndView mv = new ModelAndView();

 mv.setViewName("blogEdit.jsp");

 //查询博客具体信息返回给页面

 mv.addObject("blog", blogService.getBlogById(id));

 return mv;

}


BlogService中还缺少一个按id查询博客信息的方法,添加如下:


/**

 * 按id获取博客信息

 */

public BlogDo getBlogById(Long id) {

 BlogDo blog=null;

 Connection conn = null;

 try {

  conn = dbHelper.getConnection();

  String sql = "select * from blog where id=?";

  PreparedStatement stmt = conn.prepareStatement(sql);

  stmt.setLong(1, id);

  ResultSet rs = stmt.executeQuery();

  if (rs.next()) {

   blog=new BlogDo();

   blog.setAuthor(rs.getString("author"));

   blog.setContent(rs.getString("content"));

   blog.setId(rs.getLong("id"));

   blog.setTitle(rs.getString("title"));

  }

 } catch (Exception e) {

  // 此处应打印日志

 } finally {

  dbHelper.closeConnection(conn);

 }

 return blog;

}


所以blogEdit.jsp进入时,应默认加载要修改内容博客项的信息,代码如下:


<!-- 头部与blogAdd.jsp一样 -->

<body>

<!-- 同样的导航栏 -->

<nav class="navbar navbar-inverse">

 <div class="container-fluid">

  <ul class="nav navbar-nav">

   <li><a href="/myblog/blogView.do">浏览博客</a></li>

   <li><a href="/myblog/blogAdd.do">新增博客</a></li>

  </ul>

 </div>

</nav>

<div class="container-fluid">

 <div class="row">

  <div class="col-md-12">

   <!-- 编辑博客的表单 -->

   <form action="/myblog/blogEditSubmit.do" method="post">

    <div class="form-group">

     <label>ID</label>

     <!-- 注意id不允许修改 -->

     <input name="id" type="text" class="form-control" value="${blog.id}" readonly>

    </div>

    <div class="form-group">

     <label>标题</label>

     <input name="title" type="text" value="${blog.title}" class="form-control">

    </div>

    <div class="form-group">

     <label>内容</label>

     <textarea name="content"  class="form-control" rows="3">${blog.content}</textarea>

    </div>

    <div class="form-group">

     <label>作者</label>

     <input name="author" type="text" value="${blog.author}" class="form-control">

    </div>

    <button type="submit" class="btn btn-success">提交修改</button>

   </form>

  </div>

 </div>

</div>

</body>


点击提交修改后,由blogEditSubmit方法处理,代码修改如下:


/**

 * 6编辑页面提交(编辑完成后进入浏览博客页面)

 */

@RequestMapping("/blogEditSubmit")

public ModelAndView blogEditSubmit(BlogDo blog) {// 注意SpringMVC会自动将表单内容放入blog对象对应属性,这个功能真是牛X

 //修改对应博客

 blogService.updateBlog(blog);

 ModelAndView mv = new ModelAndView();

 mv.setViewName("blogView.jsp");

 // 查询最新的博客信息返回给页面

 mv.addObject("blogs", blogService.getBlogList());

 return mv;

}


点击提交后更新成功!页面效果也不错:

image.png

4. 删除博客功能实现

这个最简单了,感觉没啥好说的了,上代码兄弟们:


/**

 * 7删除博客(删除完成后刷新浏览博客页面)

 */

@RequestMapping("/blogDelete")

public ModelAndView blogDelete(Long id) {// SpringMVC自动将url中的id赋值给此id

 //删除对应博客

 blogService.deleteBlog(id);

 ModelAndView mv = new ModelAndView();

 mv.setViewName("blogView.jsp");

 return mv;

}


测试之后,么有问题吭。


5. 总结

SpringMVC部分终于结束了,由于目前在真实项目开发中,SpringMVC+JSP这种模式已经使用的非常少了,更多的是采用前后端分离的模式。


接下里马上介绍使用Spring开发REST风格的web服务,这样就是后端提供服务接口,前端负责交互,前后端分离还是开发起来比较爽的。


)

相关文章
|
14天前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
31 4
|
16天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
93 1
|
11天前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
25 0
|
8天前
|
XML Java 数据格式
提升效率!Spring Boot 开发中的常见失误轻松规避
本文深入探讨了在 Spring Boot 开发中常见的失误,包括不当使用注解、不良异常处理、低效日志记录等,提供了有效的规避策略,帮助开发者提升代码质量和系统性能,构建更健壮、高效的应用程序。
|
17天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用
【10月更文挑战第8天】本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,通过 Spring Initializr 创建并配置 Spring Boot 项目,实现后端 API 和安全配置。接着,使用 Ant Design Pro Vue 脚手架创建前端项目,配置动态路由和菜单,并创建相应的页面组件。最后,通过具体实践心得,分享了版本兼容性、安全性、性能调优等注意事项,帮助读者快速搭建高效且易维护的应用框架。
23 3
|
6天前
|
存储 Java 数据管理
强大!用 @Audited 注解增强 Spring Boot 应用,打造健壮的数据审计功能
本文深入介绍了如何在Spring Boot应用中使用`@Audited`注解和`spring-data-envers`实现数据审计功能,涵盖从添加依赖、配置实体类到查询审计数据的具体步骤,助力开发人员构建更加透明、合规的应用系统。
|
18天前
|
开发框架 Java API
「SpringBrick快速入门指南」:一款基于Spring Boot的高级插件化开发框架
「SpringBrick快速入门指南」:一款基于Spring Boot的高级插件化开发框架
33 0
|
18天前
|
XML 存储 前端开发
手动开发-实现SpringMVC底层机制--小试牛刀
手动开发-实现SpringMVC底层机制--小试牛刀
11 0
|
18天前
|
XML Java 数据格式
手动开发-简单的Spring基于注解配置的程序--源码解析
手动开发-简单的Spring基于注解配置的程序--源码解析
33 0
|
6月前
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】