Java+Springboot+Mybatis+Mysql+Bootstrap+Maven实现景区旅游管理系统

10.用户-景点预订​

11.用户-我的预订​

12.管理员-登录​

13.管理员-用户管理​

14.管理员-酒店管理​

15.管理员-景点管理​

16.管理员-攻略管理​

17.管理员-路线管理​

三、部分代码

IndexController

LoginController

ReserveController

RouteController

StrategyController

SystemController

UserCenterController

四、其他

1.更多系统

2.源码下载

3.运行项目

4.备注

5.支持博主


一、系统介绍

======

1.开发环境


开发工具:Eclipse2021

JDK版本:jdk1.8

Mysql版本:8.0.13

2.技术选型


Java+Swing+Mysql

3.系统功能


用户

1.注册登录

2.旅游路线选择

3.旅游攻略选择

4.酒店预订

5.景点预订

管理员

1.用户管理

2.酒店管理

3.景点管理

4.攻略管理

5.路线管理

4.数据库


/*

Navicat Premium Data Transfer

Source Server : MYSQL

Source Server Type : MySQL

Source Server Version : 80013

Source Host : localhost:3306

Source Schema : springboot_travel

Target Server Type : MySQL

Target Server Version : 80013

File Encoding : 65001

Date: 22/10/2021 10:49:18

*/

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;


– Table structure for attractions


DROP TABLE IF EXISTS attractions;

CREATE TABLE attractions (

id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

image varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

attractions_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

attractions_address varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

attractions_describe varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

attractions_status int(2) NULL DEFAULT 0,

create_date datetime NOT NULL,

PRIMARY KEY (id) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;


– Records of attractions


INSERT INTO attractions VALUES (‘1’, ‘MY_jingdian_01’, ‘清凉寨景区’, ‘蔡店街道西北部’, ‘景区总面积6000余亩,年平均温度低于武汉市中心城区4-6度;山体高大陡峭,植被丰富,层峦叠嶂。木兰清凉寨十里中华樱花、映山红、油菜花、茶花花花飘香,推出的攀水瀑布、古炭窑、滴水观音、九龙飞瀑等旅游景点,加入丰富多彩的祈福、采茶等活动。’, 0, ‘2020-03-04 20:00:09’);

INSERT INTO attractions VALUES (‘9’, ‘MY_jingdian_06’, ‘桐乡乌镇古镇旅游区’, ‘:浙江省嘉兴桐乡市乌镇石佛南路18号’, ‘乌镇是典型的江南水乡古镇,素有“鱼米之乡,丝绸之府”之称。全镇以河成街,桥街相连,依河筑屋,深宅大 院,重脊高檐,河埠廊坊,过街骑楼,穿竹石栏,临河水阁,古色古香,水镇一体,呈现一派古朴、明洁的幽静,是江南典型的“小桥、流水、人家”石板小路,古旧木屋,还有清清湖水的气息,仿佛都在提示着一种情致,一种氛围。\r\n’, 0, ‘2020-03-04 20:00:09’);


– Table structure for hotel


DROP TABLE IF EXISTS hotel;

CREATE TABLE hotel (

id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

image varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

hotel_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

hotel_address varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

hotel_describe varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

hotel_status int(2) NULL DEFAULT 0,

create_date datetime NOT NULL,

PRIMARY KEY (id) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;


– Records of hotel


INSERT INTO hotel VALUES (‘1’, ‘MY_kezhan_01’, ‘吉安国际酒店111’, ‘吉安县城庐陵大道庐陵广场111’, ‘酒店功能完善,设有包括总统套房、豪华商务套房等各色客房297间,酒店拥有中餐厅、西餐厅、韩国餐厅、火锅餐厅四个不同风味的餐饮场所,就餐总座位数1600余位,另设有可接待500人的宴会厅、可容纳400人的国际会议中心以及夜总会、spa桑拿及足道、露天泳池、健身中心和网球场,可为宾客提供各式全新五星水准的酒店住宿、饮食、宴会、会议、康体和娱乐一体化的服务。另500多个车位的大型停车场,为宾客的出行提供了更多的便利。’, 1, ‘2020-02-05 19:36:37’);

INSERT INTO hotel VALUES (‘11’, ‘MY_kezhan_01’, ‘海澜大酒店’, ‘江阴市苏南工业重镇新桥镇海澜工业园内’, ‘海澜大酒店是一家商务、会议型豪华酒店,是江阴市首家五星级酒店。酒店座落在苏南工业重镇新桥镇海澜工业园内,北枕长江,南靠太湖,毗邻张家港市中心,宁太(沿江)高速横亘其侧,交通极其便利。酒店按欧式风格设计装修,环境优美,格调高雅。客房舒适、豪华,餐饮风味独特,各类康乐休闲设施一应俱全,设施先进的商务中心随时为您提供周到、快捷的服务。’, 0, ‘2020-02-04 19:37:04’);

INSERT INTO hotel VALUES (‘29’, ‘MY_kezhan_04’, ‘米兰酒店’, ‘广西省南宁市’, ‘酒店按欧式风格设计装修,环境优美,格调高雅。客房舒适、豪华,餐饮风味独特,各类康乐休闲设施一应俱全,设施先进的商务中心随时为您提供周到、快捷的服务。’, 0, ‘2020-02-04 19:37:49’);


– Table structure for sys_user


DROP TABLE IF EXISTS sys_user;

CREATE TABLE sys_user (

id int(11) NOT NULL AUTO_INCREMENT,

username varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

password varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

PRIMARY KEY (id) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;


– Records of sys_user


INSERT INTO sys_user VALUES (1, ‘admin’, ‘admin’);

INSERT INTO sys_user VALUES (2, ‘zuidaima’, ‘111111’);


– Table structure for travel_route


DROP TABLE IF EXISTS travel_route;

CREATE TABLE travel_route (

id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

route_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

route_describe varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

route_status int(2) NOT NULL DEFAULT 0,

route_address varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

collect_number int(32) NOT NULL DEFAULT 0,

create_date datetime NULL DEFAULT NULL,

update_date datetime NULL DEFAULT NULL,

PRIMARY KEY (id) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;


– Records of travel_route


INSERT INTO travel_route VALUES (‘10’, ‘台湾高雄旅游路线’, ‘D1捷运美丽岛站光之穹顶(0.5小时) → 驳二艺术特区(2小时) → 打狗鉄道故事馆(1小时) → 西子湾风景区(1小时) → 打狗英国领事馆(1小时) → 真爱码头(0.5小时) → 高雄爱河(0.5小时) → 高雄六合夜市(2小时)’, 0, ‘台湾高雄旅’, 0, ‘2020-03-19 09:37:40’, NULL);

INSERT INTO travel_route VALUES (‘11’, ‘澳门旅游路线’, ‘D1大三巴牌坊(1小时以下) → 恋爱巷(1小时以下) → 疯堂斜巷(1小时以下) → 澳门渔人码头(3小时以上)’, 0, ‘澳门’, 0, ‘2020-03-19 09:37:47’, NULL);

INSERT INTO travel_route VALUES (‘15’, ‘河北北戴河旅游路线:’, ‘\r\nD1老虎石海上公园(4小时) → 碧螺塔酒吧公园(3小时)\r\n\r\nD2鸽子窝公园(2小时) → 奥林匹克大道公园(1小时) → 秦皇岛北戴河怪楼奇园景区(1小时) → 北戴河海滨浴场(2小时)’, 0, ‘河北北戴河’, 0, ‘2020-03-19 09:38:05’, NULL);


– Table structure for travel_strategy


DROP TABLE IF EXISTS travel_strategy;

CREATE TABLE travel_strategy (

id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT ‘旅游攻略strategy’,

user_id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

strategy_describe varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

strategy_status int(255) NULL DEFAULT NULL COMMENT ‘0是审核通过,1是未审核,2是审核未通过’,

create_date datetime NULL DEFAULT NULL,

title varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

error_message varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

PRIMARY KEY (id) USING BTREE,

INDEX user_id(user_id) USING BTREE,

CONSTRAINT travel_strategy_ibfk_1 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;


– Records of travel_strategy


INSERT INTO travel_strategy VALUES (‘3d50eac9fc444aaa9846dd98987cdae3’, ‘124’, ‘www.zuidaima.com坚持高质量的代码分享’, 0, ‘2020-10-12 15:47:44’, ‘该代码经过官方严格验证是可以完美运行的’, NULL);

INSERT INTO travel_strategy VALUES (‘bd2cbc4285774cc3898e1130032f5b16’, ‘0bc85e2aa9ac44fbb6cb415271bb5014’, ‘1、南普陀请香与别处不同:小木屋可免费请一支清香(不可多取),功德随意投入,一元二元不拘,不投也无妨;   2、烧香的地方在天王殿外,香烛不可带进寺院里面;如随身带有香烛的,可以寄放在天王殿门口的义工处,出来时取; 旅行攻略8: 鼓浪屿攻略 至于游玩鼓浪屿的线路,建议走经典线路:龙头路+八卦楼+菽庄花园’, 0, ‘2019-06-22 03:17:54’, ‘test’, NULL);

INSERT INTO travel_strategy VALUES (‘d9b05e29c91942f9859a9621286421a0’, ‘123123123’, ‘东方明珠塔的陈列馆还是非常值得一逛哦,特别是对于上海宁,这里是上海城市历史发展陈列馆 里面很多的历史场景,也许还都是你爷爷奶奶外公外婆辈的呢呢,所以也很值得带长辈来玩 就是可能会走比较累。   登塔时间:   如果想看白天的上海那就下午去,最好1点-3点。如果要看太阳西落及夜景,那就5点再去(必然会排队)去之前我查过很多攻略,都说登塔排队拍了好几个小时,我下午3点去的(本来定的2点,但买喜茶耽误到3点了)排队15分钟。’, 2, ‘2019-06-22 02:17:18’, ‘上海东方明珠攻略’, ‘攻略写的不够详细’);


– Table structure for user


DROP TABLE IF EXISTS user;

CREATE TABLE user (

id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

username varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

password varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

PRIMARY KEY (id) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;


– Records of user


INSERT INTO user VALUES (‘0bc85e2aa9ac44fbb6cb415271bb5014’, ‘qwe’, ‘1234’, ‘张XXx’);

INSERT INTO user VALUES (‘123123123’, ‘user’, ‘123456’, ‘admin11’);

INSERT INTO user VALUES (‘124’, ‘zuidaima’, ‘111111’, ‘最代码’);


– Table structure for user_attractions


DROP TABLE IF EXISTS user_attractions;

CREATE TABLE user_attractions (

id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

user_id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

attractions_id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

user_attractions_describe varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

create_date datetime NULL DEFAULT NULL,

PRIMARY KEY (id) USING BTREE,

INDEX attractions_id(attractions_id) USING BTREE,

INDEX user_id(user_id) USING BTREE,

CONSTRAINT user_attractions_ibfk_1 FOREIGN KEY (attractions_id) REFERENCES attractions (id) ON DELETE RESTRICT ON UPDATE RESTRICT,

CONSTRAINT user_attractions_ibfk_2 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;


– Records of user_attractions


INSERT INTO user_attractions VALUES (‘3b753a46dccb427c85aa2a1583fbe37a’, ‘123123123’, ‘1’, NULL, ‘2020-02-19 12:22:21’);

INSERT INTO user_attractions VALUES (‘6c1f53e7b12649a39859a3a448b06319’, ‘124’, ‘1’, NULL, ‘2020-10-12 15:42:05’);


– Table structure for user_hotel


DROP TABLE IF EXISTS user_hotel;

CREATE TABLE user_hotel (

id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

user_id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ‘’,

hotel_id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ‘’,

user_hotel_describe varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

create_date datetime NULL DEFAULT NULL,

PRIMARY KEY (id) USING BTREE,

INDEX user_hotel_ibfk_1(user_id) USING BTREE,

INDEX user_hotel_ibfk_2(hotel_id) USING BTREE,

CONSTRAINT user_hotel_ibfk_1 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE RESTRICT ON UPDATE RESTRICT,

CONSTRAINT user_hotel_ibfk_2 FOREIGN KEY (hotel_id) REFERENCES hotel (id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;


– Records of user_hotel


INSERT INTO user_hotel VALUES (‘8aac034f162d4154b9606927c304377c’, ‘123123123’, ‘29’, NULL, ‘2020-02-19 12:22:04’);

INSERT INTO user_hotel VALUES (‘d60218d0794543f8bca722c6248ea461’, ‘124’, ‘11’, NULL, ‘2020-10-12 15:41:30’);


– Table structure for user_route


DROP TABLE IF EXISTS user_route;

CREATE TABLE user_route (

id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

user_id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

route_id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

create_date datetime(6) NOT NULL ON UPDATE CURRENT_TIMESTAMP(6),

PRIMARY KEY (id) USING BTREE,

INDEX user_id(user_id) USING BTREE,

INDEX route_id(route_id) USING BTREE,

CONSTRAINT user_route_ibfk_1 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE RESTRICT ON UPDATE RESTRICT,

CONSTRAINT user_route_ibfk_2 FOREIGN KEY (route_id) REFERENCES travel_route (id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;


– Records of user_route


INSERT INTO user_route VALUES (‘014d034dc285432fa6d8bfd4e2fe3da5’, ‘124’, ‘15’, ‘2020-10-12 15:39:51.565000’);

INSERT INTO user_route VALUES (‘ae51c1397b3b4782a028c1119e4413c7’, ‘123123123’, ‘15’, ‘2020-02-19 12:07:27.000000’);


– Table structure for user_strategy


DROP TABLE IF EXISTS user_strategy;

CREATE TABLE user_strategy (

id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

user_id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ‘’,

strategy_id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ‘’,

create_date datetime NULL DEFAULT NULL,

update_date datetime NULL DEFAULT NULL,

PRIMARY KEY (id) USING BTREE,

INDEX user_hotel_ibfk_1(user_id) USING BTREE,

INDEX user_hotel_ibfk_2(strategy_id) USING BTREE,

CONSTRAINT user_strategy_ibfk_1 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE RESTRICT ON UPDATE RESTRICT,

CONSTRAINT user_strategy_ibfk_2 FOREIGN KEY (strategy_id) REFERENCES travel_strategy (id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;


– Records of user_strategy


INSERT INTO user_strategy VALUES (‘d2ee2a844c364b74931b4184f091f6ca’, ‘123123123’, ‘bd2cbc4285774cc3898e1130032f5b16’, ‘2020-02-19 12:07:58’, NULL);

INSERT INTO user_strategy VALUES (‘e8a956bc57c64037846f74fd348b9eac’, ‘124’, ‘bd2cbc4285774cc3898e1130032f5b16’, ‘2020-10-12 15:46:08’, NULL);

SET FOREIGN_KEY_CHECKS = 1;

二、系统展示

======

1.用户-首页


2.用户-注册


3.用户-登录


4.用户-路线列表


5.用户-关注路线


6.用户-攻略列表


7.用户-发布攻略


8.用户-关注攻略


9.用户-酒店预订


10.用户-景点预订


11.用户-我的预订


12.管理员-登录


13.管理员-用户管理


14.管理员-酒店管理


15.管理员-景点管理


16.管理员-攻略管理


17.管理员-路线管理


三、部分代码

======

IndexController


package com.sjsq.travel.controller;

import com.sjsq.travel.model.Attractions;

import com.sjsq.travel.model.Hotel;

import com.sjsq.travel.model.TravelRoute;

import com.sjsq.travel.model.TravelStrategy;

import com.sjsq.travel.service.ReserveService;

import com.sjsq.travel.service.RouteService;

import com.sjsq.travel.service.StrategyService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

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

import java.util.List;

@Controller

public class IndexController {

@Autowired

private ReserveService reserveService;

@Autowired

private RouteService routeService;

@Autowired

private StrategyService strategyService;

@RequestMapping(“/”)

public String index(Model model) {

List top10Hotel = reserveService.getTop10Hotel();

List top10Attractions = reserveService.getTop10Attractions();

List top10Route = routeService.findTop10Route();

List top10Strategy = strategyService.findTop10Strategy();

model.addAttribute(“top10Strategy”, top10Strategy);

model.addAttribute(“top10Route”, top10Route);

model.addAttribute(“top10Hotel”, top10Hotel);

model.addAttribute(“top10Attractions”, top10Attractions);

return “index”;

}

}

LoginController


package com.sjsq.travel.controller;

import com.sjsq.travel.core.Result;

import com.sjsq.travel.model.User;

import com.sjsq.travel.service.LoginService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

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

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

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@Controller

public class LoginController {

@Autowired

private LoginService loginService;

@RequestMapping(“/loginUI”)

public String loginUI() {

return “login/index-login”;

}

@RequestMapping(“/login”)

@ResponseBody

public Result login(Model model, User user, HttpServletResponse response) {

return loginService.login(user, response);

}

@RequestMapping(“/logout”)

public String logout(HttpServletRequest request, HttpServletResponse response) {

loginService.logout(request, response);

//SpringMVC重定向

return “redirect:/”;

}

@RequestMapping(“/registerUI”)

public String registerUI() {

return “login/index-register”;

}

@RequestMapping(“/register”)

@ResponseBody

public Result register(Model model, User user) {

return loginService.register(user);

}

}

ReserveController


package com.sjsq.travel.controller;

import com.sjsq.travel.core.Result;

import com.sjsq.travel.model.Attractions;

import com.sjsq.travel.model.Hotel;

import com.sjsq.travel.model.UserAttractions;

import com.sjsq.travel.model.UserHotel;

import com.sjsq.travel.service.ReserveService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.Pageable;

import org.springframework.data.web.PageableDefault;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

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

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

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

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

import javax.servlet.http.HttpServletRequest;

import java.util.List;

@Controller

@RequestMapping(“/reserve”)

public class ReserveController {

@Autowired

private ReserveService reserveService;

@RequestMapping(“/reserveHotelListUI”)

public String reserveHotelListUI(Model model, @ModelAttribute(“searchName”) String searchName, @PageableDefault(size = 10) Pageable pageable) {

Page page = reserveService.reserveHotelListUI(searchName, pageable);

List top10Hotel = reserveService.getTop10Hotel();

List top10Attractions = reserveService.getTop10Attractions();

model.addAttribute(“top10Hotel”, top10Hotel);

model.addAttribute(“top10Attractions”, top10Attractions);

model.addAttribute(“page”, page);

return “reserve/reserve-hotel”;

}

@RequestMapping(“/hotelDetailsUI”)

public String hotelDetailsUI(Model model, HttpServletRequest request, @RequestParam(name = “id”) String id) {

Hotel hotel = reserveService.findHotelById(id);

//如果用户显示已经预约,就是查看预约列表

Boolean flag = reserveService.isReserveHotel(request, id);

List top10Hotel = reserveService.getTop10Hotel();

List top10Attractions = reserveService.getTop10Attractions();

model.addAttribute(“top10Hotel”, top10Hotel);

model.addAttribute(“top10Attractions”, top10Attractions);

model.addAttribute(“hotel”, hotel);

model.addAttribute(“flag”, flag);

return “reserve/reserve-hotel-details”;

}

@RequestMapping(“/reserveManageUI”)

public String reserveManageUI(Model model, HttpServletRequest request) {

List userHotelList = reserveService.getReserveHotelByUser(request);

List userAttractionsList = reserveService.getReserveAttractionsByUser(request);

model.addAttribute(“userHotelList”, userHotelList);

model.addAttribute(“userAttractionsList”, userAttractionsList);

return “reserve/reserve-user-manage”;

}

@RequestMapping(“/cancelReserve”)

@ResponseBody

public Result cancelReserve(HttpServletRequest request, String id) {

return reserveService.cancelReserve(request, id);

}

@RequestMapping(“/reserveAttractionsListUI”)

public String reserveAttractionsListUI(Model model, @ModelAttribute(“searchName”) String searchName, @PageableDefault(size = 10) Pageable pageable) {

Page page = reserveService.reserveAttractionsListUI(searchName, pageable);

List top10Hotel = reserveService.getTop10Hotel();

List top10Attractions = reserveService.getTop10Attractions();

model.addAttribute(“top10Hotel”, top10Hotel);

model.addAttribute(“top10Attractions”, top10Attractions);

model.addAttribute(“page”, page);

return “reserve/reserve-attractions”;

}

@RequestMapping(“/attractionsDetailsUI”)

public String attractionsDetailsUI(Model model, HttpServletRequest request, @RequestParam(name = “id”) String id) {

Attractions attractions = reserveService.findAttractionsById(id);

//如果用户显示已经预约,就是查看预约列表

Boolean flag = reserveService.isReserveAttractions(request, id);

List top10Hotel = reserveService.getTop10Hotel();

List top10Attractions = reserveService.getTop10Attractions();

model.addAttribute(“top10Hotel”, top10Hotel);

model.addAttribute(“top10Attractions”, top10Attractions);

model.addAttribute(“attractions”, attractions);

model.addAttribute(“flag”, flag);

return “reserve/reserve-attractions-details”;

}

@RequestMapping(“/cancelAttractionsReserve”)

@ResponseBody

public Result cancelAttractionsReserve(HttpServletRequest request, String id) {

return reserveService.cancelAttractionsReserve(request, id);

}

}

RouteController


package com.sjsq.travel.controller;

import com.sjsq.travel.core.Result;

import com.sjsq.travel.model.TravelRoute;

import com.sjsq.travel.model.UserRoute;

import com.sjsq.travel.service.RouteService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.Pageable;

import org.springframework.data.web.PageableDefault;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

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

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

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

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

import javax.servlet.http.HttpServletRequest;

import java.util.List;

@Controller

@RequestMapping(“/route”)

public class RouteController {

@Autowired

private RouteService routeService;

@RequestMapping(“/travelRouteListUI”)

public String travelRouteListUI(Model model, @ModelAttribute(“searchName”) String searchName, @PageableDefault(size = 10) Pageable pageable) {

Page page = routeService.TravelRouteListUI(searchName, pageable);

List top10Route = routeService.findTop10Route();

model.addAttribute(“top10Route”, top10Route);

model.addAttribute(“page”, page);

return “route/travelRoute”;

}

@RequestMapping(“/travelRouteDetailsUI”)

public String travelRouteDetailsUI(Model model, HttpServletRequest request, @RequestParam(name = “id”) String id) {

TravelRoute travelRoute = routeService.findTravelRouteById(id);

//如果用户显示已经关注,就是查看关注列表

Boolean flag = routeService.isRoute(request, id);

List top10Route = routeService.findTop10Route();

model.addAttribute(“top10Route”, top10Route);

model.addAttribute(“travelRoute”, travelRoute);

model.addAttribute(“flag”, flag);

return “route/travelRoute-details”;

}

@RequestMapping(“/routeManageUI”)

public String routeManageUI(Model model, HttpServletRequest request) {

List userRouteList = routeService.getTravelRouteByUser(request);

model.addAttribute(“userRouteList”, userRouteList);

return “route/route-user-manage”;

}

@RequestMapping(“/cancelTravelRouteReserve”)

@ResponseBody

public Result cancelTravelRouteReserve(HttpServletRequest request, String id) {

return routeService.cancelTravelRouteReserve(request, id);

}

}

StrategyController


package com.sjsq.travel.controller;

import com.sjsq.travel.core.Result;

import com.sjsq.travel.model.TravelStrategy;

import com.sjsq.travel.model.UserStrategy;

import com.sjsq.travel.service.StrategyService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.Pageable;

import org.springframework.data.web.PageableDefault;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

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

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

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

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

import javax.servlet.http.HttpServletRequest;

import java.util.List;

@Controller

@RequestMapping(“/strategy”)

public class StrategyController {

@Autowired

private StrategyService strategyService;

@RequestMapping(“/travelStrategyListUI”)

public String travelStrategyListUI(Model model, @ModelAttribute(“searchName”) String searchName, @PageableDefault(size = 10) Pageable pageable) {

Page page = strategyService.TravelStrategyListUI(searchName, pageable);

List top10Strategy = strategyService.findTop10Strategy();

model.addAttribute(“top10Strategy”, top10Strategy);

model.addAttribute(“page”, page);

return “strategy/travelStrategy”;

}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

image

image

其实面试这一块早在第一个说的25大面试专题就全都有的。以上提及的这些全部的面试+学习的各种笔记资料,我这差不多来回搞了三个多月,收集整理真的很不容易,其中还有很多自己的一些知识总结。正是因为很麻烦,所以对以上这些学习复习资料感兴趣
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
me") String searchName, @PageableDefault(size = 10) Pageable pageable) {

Page page = strategyService.TravelStrategyListUI(searchName, pageable);

List top10Strategy = strategyService.findTop10Strategy();

model.addAttribute(“top10Strategy”, top10Strategy);

model.addAttribute(“page”, page);

return “strategy/travelStrategy”;

}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-SAr5tCuM-1713396585999)]

[外链图片转存中…(img-f4ljjGWo-1713396586000)]

[外链图片转存中…(img-0v2JeIDb-1713396586000)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

[外链图片转存中…(img-IdPWuXy7-1713396586001)]

[外链图片转存中…(img-byKYCacl-1713396586001)]

其实面试这一块早在第一个说的25大面试专题就全都有的。以上提及的这些全部的面试+学习的各种笔记资料,我这差不多来回搞了三个多月,收集整理真的很不容易,其中还有很多自己的一些知识总结。正是因为很麻烦,所以对以上这些学习复习资料感兴趣
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我将为你展示如何实现一个基于Spring BootMybatis-Plus、Thymeleaf和Bootstrap的留言板。 1. 创建Spring Boot项目 首先,我们需要创建一个Spring Boot项目。你可以直接在IDE中创建,也可以使用Spring Boot CLI。这里我使用IDEA创建一个Maven项目。 2. 配置pom.xml 在pom.xml文件中添加以下依赖: ``` <dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Thymeleaf --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- MyBatis-Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version> </dependency> <!-- MySQL Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency> <!-- Bootstrap --> <dependency> <groupId>org.webjars</groupId> <artifactId>bootstrap</artifactId> <version>4.5.0</version> </dependency> <!-- Webjars Locator --> <dependency> <groupId>org.webjars</groupId> <artifactId>webjars-locator</artifactId> <version>0.40</version> </dependency> </dependencies> ``` 这里使用了Spring Boot、Thymeleaf、Mybatis-Plus、MySQL Connector、Bootstrap以及Webjars Locator。 3. 配置数据库 我们需要在application.properties文件中配置数据库连接信息。 ``` spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 这里使用MySQL作为数据库,数据库名为test,用户名和密码均为root。 4. 创建留言实体类 我们需要创建一个留言实体类,用于映射数据库中的留言表。 ``` public class Message { private Long id; private String username; private String content; private Date createTime; // 省略getter和setter方法 } ``` 5. 创建Mapper 我们需要创建一个Mapper接口,用于操作留言表。 ``` @Mapper public interface MessageMapper extends BaseMapper<Message> { List<Message> selectAll(); } ``` 这里使用了Mybatis-Plus提供的BaseMapper作为父接口,简化了Mapper的编写。 6. 创建Controller 我们需要创建一个Controller,用于处理请求。 ``` @Controller public class MessageController { @Autowired private MessageMapper messageMapper; @GetMapping("/") public String index(Model model) { List<Message> messages = messageMapper.selectAll(); model.addAttribute("messages", messages); return "index"; } @PostMapping("/") public String addMessage(Message message) { message.setCreateTime(new Date()); messageMapper.insert(message); return "redirect:/"; } } ``` 这里使用了@Autowired注解注入了MessageMapper。在index方法中,我们查询了所有留言,并将其存入Model中,然后返回index视图。在addMessage方法中,我们添加了一条留言,并重定向到首页。 7. 创建视图 我们需要创建一个视图,用于显示留言列表和添加留言。 ``` <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" xmlns:webjars="http://www.thymeleaf.org/extras/webjar"> <head> <title>留言板</title> <!-- Bootstrap --> <link rel="stylesheet" href="/webjars/bootstrap/4.5.0/css/bootstrap.min.css" /> </head> <body> <div class="container"> <h1>留言板</h1> <hr/> <form method="post"> <div class="form-group"> <label for="username">用户名:</label> <input type="text" class="form-control" id="username" name="username" required="required" /> </div> <div class="form-group"> <label for="content">留言内容:</label> <textarea class="form-control" id="content" name="content" required="required"></textarea> </div> <button type="submit" class="btn btn-primary">提交留言</button> </form> <hr/> <table class="table table-striped"> <thead> <tr> <th>用户名</th> <th>留言内容</th> <th>留言时间</th> </tr> </thead> <tbody> <tr th:each="message : ${messages}"> <td th:text="${message.username}"></td> <td th:text="${message.content}"></td> <td th:text="${#dates.format(message.createTime, 'yyyy-MM-dd HH:mm:ss')}"></td> </tr> </tbody> </table> </div> <!-- Bootstrap --> <script src="/webjars/bootstrap/4.5.0/js/bootstrap.min.js"></script> </body> </html> ``` 这里使用了Thymeleaf模板引擎,使用了Bootstrap样式。在表格中,我们使用了th:each指令循环遍历留言列表,使用了#dates.format方法格式化留言时间。 8. 运行项目 现在,我们可以运行项目并访问http://localhost:8080来查看留言板了。 以上就是一个简单的Spring BootMybatis-Plus、Thymeleaf和Bootstrap留言板的实现过程。希望对你有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值