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服务,这样就是后端提供服务接口,前端负责交互,前后端分离还是开发起来比较爽的。


)

相关文章
|
10天前
|
缓存 NoSQL Java
在 Spring Boot 应用中使用 Spring Cache 和 Redis 实现数据查询的缓存功能
在 Spring Boot 应用中使用 Spring Cache 和 Redis 实现数据查询的缓存功能
31 0
|
6天前
|
存储 Java 分布式数据库
Spring Boot 优雅实现hbase功能
【6月更文挑战第24天】要在 Spring Boot 项目中实现 HBase 和 Memcached 的功能,首先需要理解各自的原理和作用,然后通过实际操作将其集成到 Spring Boot 项目中。
25 6
|
11天前
|
XML 缓存 Java
Spring Boot 优雅实现降级功能:Hystrix 与 Resilience4j 的实践
【6月更文挑战第19天】在分布式系统中,服务降级是一种重要的容错机制。当某个服务不可用或响应慢时,降级机制可以保证系统的整体稳定性。本文将详细介绍如何在 Spring Boot 中使用 Hystrix 和 Resilience4j 实现降级功能。
41 7
|
10天前
|
安全 Java Maven
在 Spring Boot 中实现邮件发送功能可以通过集成 Spring Boot 提供的邮件发送支持来完成
在 Spring Boot 中实现邮件发送功能可以通过集成 Spring Boot 提供的邮件发送支持来完成
19 2
|
10天前
|
缓存 监控 安全
在 Spring Boot 中使用 AOP(Aspect-Oriented Programming)实现日志记录功能
在 Spring Boot 中使用 AOP(Aspect-Oriented Programming)实现日志记录功能
20 1
|
10天前
|
监控 NoSQL Java
在 Spring Boot 中实现 Redis 的发布/订阅功能可以通过 RedisTemplate 和消息监听器来完成
在 Spring Boot 中实现 Redis 的发布/订阅功能可以通过 RedisTemplate 和消息监听器来完成
12 1
|
12天前
|
缓存 NoSQL Java
在 SSM 架构(Spring + SpringMVC + MyBatis)中,可以通过 Spring 的注解式缓存来实现 Redis 缓存功能
【6月更文挑战第18天】在SSM(Spring+SpringMVC+MyBatis)中集成Redis缓存,涉及以下步骤:添加Spring Boot的`spring-boot-starter-data-redis`依赖;配置Redis连接池(如JedisPoolConfig)和连接工厂;在Service层使用`@Cacheable`注解标记缓存方法,指定缓存名和键生成策略;最后,在主配置类启用缓存注解。通过这些步骤,可以利用Spring的注解实现Redis缓存。
37 2
|
12天前
|
前端开发 Java 应用服务中间件
Spring框架第六章(SpringMVC概括及基于JDK21与Tomcat10创建SpringMVC程序)
Spring框架第六章(SpringMVC概括及基于JDK21与Tomcat10创建SpringMVC程序)
|
2天前
|
缓存 NoSQL Java
Spring Boot中集成Redis实现缓存功能
Spring Boot中集成Redis实现缓存功能
|
2天前
|
XML 负载均衡 Java
Spring Boot 中实现负载均衡:概念、功能与实现
【6月更文挑战第28天】在分布式系统中,负载均衡(Load Balancing)是指将工作负载和流量分配到多个服务器或服务实例上,以提高系统可用性和响应速度。负载均衡器可以是硬件设备,也可以是软件解决方案。
7 0