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


)

相关文章
|
1月前
|
安全 数据可视化 Java
AiPy开发的 Spring 漏洞检测神器,未授权访问无所遁形
针对Spring站点未授权访问问题,现有工具难以检测如Swagger、Actuator等组件漏洞,且缺乏修复建议。全新AI工具基于Aipy开发,具备图形界面,支持一键扫描常见Spring组件,自动识别未授权访问风险,按漏洞类型标注并提供修复方案,扫描结果可视化展示,支持导出报告,大幅提升渗透测试与漏洞定位效率。
|
3月前
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
120 0
|
4月前
|
Java API 微服务
Java 21 与 Spring Boot 3.2 微服务开发从入门到精通实操指南
《Java 21与Spring Boot 3.2微服务开发实践》摘要: 本文基于Java 21和Spring Boot 3.2最新特性,通过完整代码示例展示了微服务开发全流程。主要内容包括:1) 使用Spring Initializr初始化项目,集成Web、JPA、H2等组件;2) 配置虚拟线程支持高并发;3) 采用记录类优化DTO设计;4) 实现JPA Repository与Stream API数据访问;5) 服务层整合虚拟线程异步处理和结构化并发;6) 构建RESTful API并使用Springdoc生成文档。文中特别演示了虚拟线程配置(@Async)和StructuredTaskSco
438 0
|
4月前
|
监控 安全 Java
Java 开发中基于 Spring Boot 3.2 框架集成 MQTT 5.0 协议实现消息推送与订阅功能的技术方案解析
本文介绍基于Spring Boot 3.2集成MQTT 5.0的消息推送与订阅技术方案,涵盖核心技术栈选型(Spring Boot、Eclipse Paho、HiveMQ)、项目搭建与配置、消息发布与订阅服务实现,以及在智能家居控制系统中的应用实例。同时,详细探讨了安全增强(TLS/SSL)、性能优化(异步处理与背压控制)、测试监控及生产环境部署方案,为构建高可用、高性能的消息通信系统提供全面指导。附资源下载链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
603 0
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】
|
前端开发 Java 关系型数据库
基于ssm框架旅游网旅游社交平台前后台管理系统(spring+springmvc+mybatis+maven+tomcat+html)
基于ssm框架旅游网旅游社交平台前后台管理系统(spring+springmvc+mybatis+maven+tomcat+html)
199 0
|
前端开发 Java Go
Spring MVC 和 Spring Boot 的区别
Spring MVC 和 Spring Boot 的区别
363 0
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
362 1