目录

一.项目介绍

1.功能介绍

2.技术选型

3.实体类

二.项目搭建

1.创建项目

2.adminLTE

3.编写后端首页

4.提取统一后台模板

5.重构后台首页


*************************************************************************

项目代码地址:等写完这个项目我会上传的。

*************************************************************************

一.项目介绍

1.功能介绍

旅游网是一款常见的旅游网站,项目分为管理员端和用户端。管理员端(后台) 主要进行旅游产品的维护,用户端(前台)主要进行旅游产品的展示。

2.技术选型

开发项目要使用稳定版本,不要去使用最新版本,而且技术选型最好是团队里人都会,不会也可以快速上手,然后选择开发效率高的,比如用SpringBoot代替Spring,用MybatisPlus代替Mybatis

  1. JAVA版本: JDK8(jdk每三代是一个稳定的版本,比如8,11,14,17)
  2. 数据库: Mysql5.7+Navicat
  3. 后端框架: SpringBoot2.7.5 + SpringMVC + Mybatis-Plus3.5.0
  4. 权限控制: SpringSecurity
  5. 前端框架: AdminLTE2(因为考虑到很多课已经结课,要准备期末以及各课作业等,所以开发时间比较紧张,使用这个的原因就是学习成本低,拿过来就能用)
  6. 模板引擎: Thymeleaf
  7. 工具类:发邮件工具类、生成验证码工具类
  8. 其他技术: lombok. ajax、 logback

3.实体类

pojo型实体类分为六个,分别是管理员,旅游产品类型,前台用户,权限,产品,角色(代码略)。

二.项目搭建

1.创建项目

将数据库脚本导入数据库(admin是管理员表,role是角色表,admin_role是管理员与角色得一个中间表,permission是权限表,role_permission是角色和权限的一个中间表,category是旅游产品的一个类别,member是用户表,product是旅游产品表,favorite是用户旅游产品的收藏表)


创建名为travel 的Springboot项目,引入相关依赖

引入如下依赖:

用SpringBoot脚手架工具创建项目的时候,需要在pom.xml文件中手动引入依赖;然后测试依赖是自动引入的,不需要咱们引入。

        <!--MybatisPlus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.0</version></dependency>

编写配置文件(application.yml,修改后缀properties为yml即可,主要是为了使用yml文件的格式):

# 端口
server:port: 80# 数据源
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driver
#    url: jdbc:mysql:///travel?serverTimezone=UTCurl: jdbc:mysql://192.168.0.182:3306/travel?serverTimezone=UTCusername: rootpassword: root# 上传文件servlet:multipart:max-file-size: 10MB # 最大单个文件max-request-size: 10MB # 一次请求最大上传# 打成jar包必须添加如下配置才能找到页面thymeleaf:mode: HTMLcache: falseprefix: classpath:/templates#配置mybatis-plus
mybatis-plus:global-config:db-config:# 主键生成策略为自增id-type: autoconfiguration:#关闭列名自动驼峰命名规则映射,因为我导入的数据库文件表的列名不是下划线分割的,而是用的驼峰命名法#一般情况下是数据库里用下划线法,实体类里用驼峰命名法,这样可以实现自动对应map-underscore-to-camel-case: falselog-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志# 日志格式
logging:pattern:console: '%d{HH:mm:ss.SSS} %clr(%-5level) ---  [%-15thread] %cyan(%-50logger{50}):%msg%n'

然后在travel包下创建pojo实体类(必须和数据库对应起来),然后咱们再在travel下创建bean包,bean也是存放实体类的包,与pojo不同的是bean下存放的只是与咱们自己创建的一些与数据没有对应关系的实体类,而pojo中的实体类都与数据库有对应关系!

实体类如下:

(具体代码就不放了,太占地方)

然后还得创建mapper包,存放MybatisPlus的一些接口;还要创建服务层service包,然后创建util包,放一些工具类再创一个security包,存放权限控制的东西;创建拦截器包interceptor;最后还要创建一个控制器的包controller,网站前台是用户访问的,后台是管理员访问的,所以控制器得分为前台控制器和后台控制器,这样controller包下就得再创建frontdesk和backstage两个包。

我们用了thymeleaf,所以不能直接访问html等文件,所以需要一个页面跳转控制器在中间转接一下,那么就在控制层下创建一页面跳转的控制器PageController,这个控制器既可以跳到前端页面,也可以跳到后端页面,所以既不属于前端也不属于后端,直接在controller包下写即可。

@Controller
public class PageController {//访问后台页面@RequestMapping("/backstage/{page}")public String showPageBackstage(@PathVariable String page){return "/backstage/"+page;}//访问前台页面@RequestMapping("/frontdesk/{page}")public String showPageFrontdesk(@PathVariable String page){return "/frontdesk/"+page;}
}

然后咱们在控制器终写的前台页面都在frontdesk下,后端页面都在backstage下,咱们的模板引擎用的是thymeleaf,要放到resources下的templates下,所以咱们要在 templates 下创建frontdesk包和backstage包。然后咱们在backstage下随便写一个html来测试一下。

启动项目并访问如下链接

然后在页面跳转控制器PageController中添加如下代码,消除一个可有可无的图标异常(比如用谷歌浏览器访问,就上图那个左上角的小地球,访问百度,也会有类似的这种图标,但是咱们的项目就不设置这种图标了,所以给访问这种图标的地址设个空函数,让它不报异常,眼不见心不烦)

    //忽略访问项目Logo@RequestMapping("favicon.ico")@ResponseBodyvoid returnNoFavicon(){}

2.adminLTE

官网:Free Bootstrap Admin Template - AdminLTE.IO

项目分为管理员端和用户端。管理员端负责管理网站资源,发布旅游产品;用户端可以查询旅游产品,收藏旅游产品等。两端使用的页面风格不同。在项目中,我们使用AdminLTE框架作为管理员端页面,使用自己编写的网页作为用户端页面。

AdminLTE是一款建立在bootstrap和jquery之上的开源的模板主题工具,它提供了一系列响应的、可重复使用的组件, 并内置了多个模板页面;同时自适应多种屏幕分辨率,兼容PC和移动端。通过AdminLTE, 我们可以快速的创建一个响应式的Html5网站。AdminLTE框架在网页架构与设计上,有很大的辅助作用,尤其是前端架构设计师,用好AdminLTE不但美观,而且可以免去写很大CSS与JS的工作量。

使用AdminLTE非常简单,只需要根据需求将需要的组件复制到我们的页面中即可。

1.将下载好的AdminLTE的静态资源复制到/static/backstage中(其中有自己加的少许js文件)。

AdminLTE资源中的pages文件夹下的all-admin-blank.html文件就是首页,所以咱们要把它复制到templates/backstage下,为了可读性,咱们给它改一个名字为index.html,然后咱们需要把这个文件中的一些引入css文件的路径给修改一下,因为咱们在static和templates下都创建frontdesk和backstage文件,所以按Ctrl+R进行替换

然后右键static文件,点击Rebuild 'static',然后启动项目,访问localhost:80/backstage/index.html

3.编写后端首页

先在index.html页面加入thymeleaf命名空间,在html标签里添加即可

<html xmlns:th="http://www.thymeleaf.org">

编写一下注销的退出路径

然后后面的页面修改我就不一一记录了,这个项目的这一部分就是下载了AdminLTE的资源,然后再自己进行一些修改,迎合我们的项目,我前端的代码功底比较薄弱,把项目大体思路说明白就行了。

4.提取统一后台模板

我们写的很多页面可能都长得差不多,所以我们可以把可以共用的元素组件提取出来,等我们需要时,我们再在需要的页面引入即可。创建如下四个文件,做公共模板提取之用。

然后我们把刚刚修改的那个index.html文件里的对应的部分的代码分别复制到对应的html文件当中(要覆盖创建文件时自动生成的html代码)

咱们需要用thymeleaf把这些提取的模板文件引入到其他文件当中,所以咱们需要在这四个公共模板文件中引入thymeleaf的命名空间。具体写法还是要下载下来该项目的代码来看看。

5.重构后台首页

后台页面直接引用那几个公共部分

th:replace是thymeleaf的语法。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"><head><title>首页</title><th:block th:replace="/backstage/common_resources::common_css"></th:block><th:block th:replace="/backstage/common_resources::common_js"></th:block>
</head><body class="hold-transition skin-purple sidebar-mini">
<header th:replace="/backstage/common_header::header"></header>
<aside th:replace="/backstage/common_aside::aside"></aside><div class="wrapper"><div class="content-wrapper"></div></div>
<footer th:replace="/backstage/common_footer::footer"></footer>
</body></html>

运行项目访问后台主页,和之前一样,即改造成功!

项目实战之旅游网(一)项目介绍 项目搭建相关推荐

  1. 项目实战之旅游网(十)前台用户注册

    目录 一.网站首页 二.编写注册界面 三.生成验证码 四.注册流程 五.编写注册方法 六.发送邮件配置 一.网站首页 static/frontdesk下存放前台静态资源,而templates/fron ...

  2. 项目实战之旅游网(七)后台分类管理 后台产品管理(上)

    目录 一.后台分类管理 二.后台产品管理(上) 1.产品列表 2.新增产品 3.富文本编辑器 一.后台分类管理 mapper层: public interface CategoryMapper ext ...

  3. 项目实战之旅游网(五)后台角色管理(下) 后台权限管理

    目录 一.后台角色管理(下) 1.查询角色权限 2.修改角色权限 3.优化侧边栏菜单 二.后台权限管理 1.权限列表 2.新增权限 3.修改权限 4.删除权限 一.后台角色管理(下) 1.查询角色权限 ...

  4. 【网络通信 -- 直播】项目实战记录 -- 弱网模拟工具

    [网络通信 -- 直播]项目实战记录 -- 弱网模拟工具 [1]Windows 系统中弱网模拟工具 Windows 系统中可以使用 Clumsy 工具模拟弱网环境 Lag(延迟),把数据包缓存一段时间 ...

  5. Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...

    资源介绍 课程简介:xa0xa0 Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 教学视频 ----------------------课程目录 Python项目实战篇 ...

  6. Spring Boot + vue-element 开发个人博客项目实战教程(二十五、项目完善及扩展(前端部分))

    ⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot + vue-element 开发个人博客项目实战教程 ⭐专栏内容:零基础学Java.个人博客系统 ⭐我的文档网站:http://xyhwh- ...

  7. 《Kotlin从小白到大牛》第28章:项目实战1:开发PetStore宠物商店项目

    第28章 项目实战1:开发PetStore宠物商店项目 前面学习的Kotlin知识只有通过项目贯穿起来,才能将书本中知识变成自己的.通过项目实战读者能够了解软件开发流程,了解所学知识在实际项目中使用的 ...

  8. 《Java从小白到大牛》第29章:项目实战1:开发PetStore宠物商店项目

    第29章 项目实战1:开发PetStore宠物商店项目 前面学习的Java知识只有通过项目贯穿起来,才能将书本中知识变成自己的.通过项目实战读者能够了解软件开发流程,了解所学知识在实际项目中使用的情况 ...

  9. spark项目实战:电商分析平台之项目概述

    spark项目实战:电商分析平台之项目概述 目录 项目概述 程序架构分析 需求解析 初始代码和完成代码存放在github上面 1. 项目概述 在访问电商网站时,我们的一些访问行为会产生相应的埋点日志( ...

  10. ✨JavaWeb项目:实战亲自动手手敲上线小项目部分功能的第一天✨

    系列链接: ✨JavaWeb项目实战亲自动手手敲上线小项目的第一天✨ ✨JavaWeb项目实战亲自动手手敲上线小项目的第二天✨ ✨JavaWeb项目实战亲自动手手敲上线小项目的第三天✨ ✨JavaWe ...

最新文章

  1. 电大计算机应用,(2016年电大)电大全国计算机应用考试网考.doc
  2. linux 执行sh_linux下执行脚本 sh -x XXX.sh 调试中存在大量/r 的问题
  3. C语言学习系列(六)基本语法
  4. 医疗NLP相关数据集整理
  5. css基础知识汇总4
  6. #100天计划# 2013年10月8日
  7. PT工具之Docker全家桶+HTTPS详细配置教程
  8. GAMIT处理GLONASS数据
  9. 亚像素边缘检测提取算法的实现
  10. 《研究生英语科技论文写作》学习笔记
  11. 11月29日做题截图
  12. 安装python解释器的时候遇到user installations are disabled via policy on the machine”
  13. 上岸快手,我选择一条不一样的路
  14. 英语关于计算机游戏作文,沉迷网络游戏的英语作文(精选5篇)
  15. 正则表达式的贪婪型,勉强型,占有型
  16. 欧拉法求解微分方程c语言_用C程序求解多项式和微分方程
  17. 融资、量产和一栈式布局,这家Tier 1如此备战高阶智驾决赛圈
  18. php js页面刷新,JS刷新页面方法总结
  19. Qt之QTabWidget
  20. 使用JFreeChart绘制2D和3D折线图

热门文章

  1. 设计模式(讲的比较好-思路清晰,非泛泛而谈)
  2. 3月16日----3月20日二年级课程表
  3. 使用PS给PDF文件加水印
  4. Python 导出微信电子相册中的照片
  5. D3D9学习笔记之基础几何体的深入应用(一)
  6. 工作中如果一直被领导忽略,你会怎么办?
  7. 1072 开学寄语 (20分)
  8. 问题:控制台报错style-helper.mjs?d002:125 Uncaught (in promise) TypeError: Cannot read properties
  9. littleVGL学习笔记9——lv_btn 按钮
  10. 18张图,揭开阿里巴巴开发手册强制使用SLF4J作为门面担当的秘密