Spring之路(20)–SpringMVC+Bootstrap开发博客系统实例(项目主体结构实现)

简介: 本文目录1. 前言2. 新建项目3. 修改web.xml配置4. 新建springmvc-config.xml文件5. 根据规划的URL实现BlogController类6. 根据规划的URL实现jsp页面类7. 验证下8. 总结

1. 前言

上一篇我们已经设计了数据库结构,并设计了整体的URL和页面关系,本篇我们实现项目的主干代码。


我个人编码的习惯是先写出主干,再细化局部,就是由全局到局部,这样我感觉思路清晰、效率较高。就跟盖大楼先搭建整体的钢混结构,然后再填充差不多的意思。本篇我们就按照这种方式来搭建主体结构。


2. 新建项目

之前已经详细描述过SpringMVC web项目的搭建流程,本文简单描述下。


打开eclipse,点击File-New-Other-Dynamic Web Project,建议一个web项目。


Project Name填写myblog,选中【Generate web.xml deployment descriptor】,我们采用web.xml配置的方式引入SpringMVC相关框架到web项目中。


项目搭建完成后,将Spring相关的jar包拷贝到WebContent/WEB-INF/lib目录下。


3. 修改web.xml配置

修改web.xml配置,以便引入SpringMVC配置信息,指定springmvc-config.xml文件为Spring配置文件。


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

id="WebApp_ID" version="3.1">

<display-name>myblog</display-name>

<absolute-ordering />

<servlet>

 <servlet-name>springmvc</servlet-name>

 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

 <init-param>

  <param-name>contextConfigLocation</param-name>

  <param-value>/WEB-INF/springmvc-config.xml</param-value>

 </init-param>

 <load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

 <servlet-name>springmvc</servlet-name>

 <url-pattern>*.do</url-pattern>

</servlet-mapping>

</web-app>


4. 新建springmvc-config.xml文件

在WEB-INF目录下,新建springmvc-config.xml,配置Spring容器相关信息,同时开启对org.maoge.myblog包的扫描,以便后续我们在myblog包下编写的bean可以被扫描到从而注册为bean组件。


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans

       http://www.springframework.org/schema/beans/spring-beans.xsd

       http://www.springframework.org/schema/context

       http://www.springframework.org/schema/context/spring-context-4.0.xsd">

<context:component-scan base-package="org.maoge.myblog" />

</beans>


5. 根据规划的URL实现BlogController类

BlogController用来实现与Blog(博客)相关的控制器,规划的URL如下:


编号 功能说明 分配url 跳转 备注

1 进入浏览博客页面 blogView blogView.jsp

2 查看选定博客详情 blogInfo blogInfo.jsp

3 进入新增博客页面 blogAdd blogAddjsp

4 新增页面提交 blogAddSubmit blogView.jsp 新增完成后进入浏览博客页面

5 进入编辑博客页面 blogEdit blogEdit.jsp

6 编辑页面提交 blogEditSubmit blogView.jsp 编辑完成后进入浏览博客页面

7 删除博客 blogDelete blogView.jsp 删除完成后刷新浏览博客页面

我们逐一转换为BlogController里面的方法如下:


package org.maoge.myblog;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.servlet.ModelAndView;

/**

* @theme 控制器--博客

* @author maoge

* @date 2020-01-27

*/

@Controller

public class BlogController {

/**

 * 1 进入浏览博客页面

 */

@RequestMapping("/blogView")

public ModelAndView blogView() {

 ModelAndView mv = new ModelAndView();

 mv.setViewName("blogView.jsp");

 return mv;

}

/**

 * 2 查看选定博客详情

 */

@RequestMapping("/blogInfo")

public ModelAndView blogInfo() {

 ModelAndView mv = new ModelAndView();

 mv.setViewName("blogInfo.jsp");

 return mv;

}

/**

 * 3进入新增博客页面

 */

@RequestMapping("/blogAdd")

public ModelAndView blogAdd() {

 ModelAndView mv = new ModelAndView();

 mv.setViewName("blogAdd.jsp");

 return mv;

}

/**

 * 4新增页面提交(新增完成后进入浏览博客页面)

 */

@RequestMapping("/blogAddSubmit")

public ModelAndView blogAddSubmit() {

 ModelAndView mv = new ModelAndView();

 mv.setViewName("blogView.jsp");

 return mv;

}

/**

 * 5进入编辑博客页面

 */

@RequestMapping("/blogEdit")

public ModelAndView blogEdit() {

 ModelAndView mv = new ModelAndView();

 mv.setViewName("blogEdit.jsp");

 return mv;

}

/**

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

 */

@RequestMapping("/blogEditSubmit")

public ModelAndView blogEditSubmit() {

 ModelAndView mv = new ModelAndView();

 mv.setViewName("blogView.jsp");

 return mv;

}

/**

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

 */

@RequestMapping("/blogDelete")

public ModelAndView blogDelete() {

 ModelAndView mv = new ModelAndView();

 mv.setViewName("blogView.jsp");

 return mv;

}

}


6. 根据规划的URL实现jsp页面类

同样根据URL规划实现里面的页面类,页面类代码里面简单写一下当前在xxx页面即可,我们将所有页面都放于WebContent下,这样可以直接访问(WebContent是网页文件的根目录)。


具体代码如下:


<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

blogView.jsp: 浏览器博客页面

</body>

</html>


<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

blogInfo.jsp: 查看博客详情页面

</body>

</html>


<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

blogAdd.jsp: 新增博客页面

</body>

</html>


<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

blogEdit.jsp: 编辑博客页面

</body>

</html>


7. 验证下

此时我们整体的URL处理与页面jsp都写完了,打开浏览器逐一验证下页面跳转是否正确。


例如访问


http://127.0.0.1:8080/myblog/blogView.do


页面应跳转到blogView.jsp,所以页面显示:


blogView.jsp: 浏览器博客页面


这样就验证完成了,大图奉上:

image.png

8. 总结

此时项目主体结构如下,感觉是不是很高端大气上档次,稳啊。

image.png


相关文章
|
3月前
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
120 0
|
9月前
|
SQL Java 数据库连接
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
396 29
|
7月前
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot中使用拦截器——拦截器使用实例
本文主要讲解了Spring Boot中拦截器的使用实例,包括判断用户是否登录和取消特定拦截操作两大场景。通过token验证实现登录状态检查,未登录则拦截请求;定义自定义注解@UnInterception实现灵活取消拦截功能。最后总结了拦截器的创建、配置及对静态资源的影响,并提供两种配置方式供选择,帮助读者掌握拦截器的实际应用。
230 0
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
12月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
139 2
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
2497 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
前端开发 应用服务中间件 数据库
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
这篇文章通过一个具体的项目案例,详细讲解了如何使用SpringMVC、Thymeleaf、Bootstrap以及RESTful风格接口来实现员工信息的增删改查功能。文章提供了项目结构、配置文件、控制器、数据访问对象、实体类和前端页面的完整源码,并展示了实现效果的截图。项目的目的是锻炼使用RESTful风格的接口开发,虽然数据是假数据并未连接数据库,但提供了一个很好的实践机会。文章最后强调了这一章节主要是为了练习RESTful,其他方面暂不考虑。
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
|
开发框架 前端开发 JavaScript
在Bootstrap开发框架基础上增加WebApi+Vue&Element的前端
在Bootstrap开发框架基础上增加WebApi+Vue&Element的前端
|
开发框架 前端开发 JavaScript
循序渐进BootstrapVue,开发公司门户网站(1)---基于Bootstrap网站模板构建组件界面
循序渐进BootstrapVue,开发公司门户网站(1)---基于Bootstrap网站模板构建组件界面