临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给在家介绍一篇基于Springboot的旅游网站设计与实现。
随着我国人民生活水平的不断提高,旅游已成为人们生活的重要活动,通过旅游网站进行旅游景点查询,旅游线路预订等,可以为游客出行提供极大的方便。
旅游网站的设计是面向现实需求的一个实用系统,本课题的目标是为游客和旅游网站提供一个友好的、便捷的交流平台。能实现网站前端的相关旅游信息的查询与展示以及后端的数据库增删改查功能,能满足一般用户的旅游攻略需求。
本旅游网站基于MVC模式开发,分为前端和后端。前端是一个信息展示网站,可以给用户提供基本的旅游信息查询功能,主要分为五个模块:旅游咨询模块,旅游线路模块,线路查询模块,热点线路模块;后端是管理模块,可以实现对前端网站的模块管理、内容管理和用户管理等功能。
登录注册界面:
用户首页
后端功能截图
B/S架构即浏览器/服务器结构,Browser指的是Web浏览器,很少数的事务逻辑是在前端中实现的,主要的事务逻辑是在服务器端中实现,B/S架构的系统不需要特别的安装,有Web浏览器就可以。
B/S架构的分层:
与C/S架构的两层不同,B/S架构有三层,分别为:表现层、逻辑层和数据层。
(1)表现层:完成用户和后台的交互实现最终查询结果的输出。
(2)逻辑层:利用服务器实现客户端的应用逻辑。
(3)数据层:接受客户端请求后独立的进行各种计算。
B/S架构图如下图2.2所示。
图2.2 B/S架构图
B/S架构的优点:
(1)客户端上免安装,有Web浏览器即可。
(2)可直接放在广域网上,实现多用户访问的目的,交互性强。
(3)BS架构不用升级客户端,升级服务器就行。
B/S架构的缺点:
(1)在跨浏览器上,B/S架构不太优秀。
(2)在速度以及安全性上需花费巨额设计成本。
(3)BS的交互是请求-响应模式,需要刷新页面。
public Result login(SysUser sysUser, HttpServletResponse response) {
SysUser sysUserByUsrname = sysUserRepository.findSysUserByUsername(sysUser.getUsername());
if (sysUserByUsrname == null) {
return ResultGenerator.genFailResult("用户名错误!");
} else {
if (sysUser.getPassword().equals(sysUserByUsrname.getPassword())) {
CookieUitl.set(response, "sysUsername", sysUser.getUsername(), 3600);
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult("密码错误");
}
}
}
public void logout(HttpServletRequest request, HttpServletResponse response) {
Cookie cookie = CookieUitl.get(request, "sysUsername");
if (cookie != null) {
CookieUitl.set(response, "sysUsername", null, 0);
}
}
public Page<User> getUserPage(Pageable pageable) {
Page<User> userPage = userRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("id")));
return null;
}, pageable);
return userPage;
}
@Transactional(rollbackFor = Exception.class)
public Result saveUser(User user) {
System.out.println(user.getId());
if (StringUtils.isEmpty(user.getId())) {//没有id的情况
user.setId(IdGenerator.id());
} else {
User oldUser = getUserById(user.getId());
user.setUsername(oldUser.getUsername());
user.setName(oldUser.getName());
oldUser.setPassword(user.getPassword());
}
userRepository.saveAndFlush(user);
return ResultGenerator.genSuccessResult();
}
public User getUserById(String id) {
User user = userRepository.findById(id).orElseThrow(() -> new ServiceException("用户ID错误"));
return user;
}
public Page<Hotel> getHotelPage(Pageable pageable) {
Page<Hotel> hotelPage = hotelRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return hotelPage;
}
@Transactional(rollbackFor = Exception.class)
public Result saveHotel(Hotel hotel) {
if (StringUtils.isEmpty(hotel.getId())) {//没有id的情况
hotel.setId(IdGenerator.id());
hotel.setStatus(StatusEnum.DOWM_STATUS.getCode());
hotel.setCreateDate(new Date());
int i = random.nextInt(100);
hotel.setImage("MY_kezhan_0" + (i % 8 + 1));
} else {
//有id的情况
Hotel oldHotel = getHotelById(hotel.getId());
hotel.setStatus(oldHotel.getStatus());
hotel.setCreateDate(oldHotel.getCreateDate());
hotel.setImage(oldHotel.getImage());
}
hotelRepository.saveAndFlush(hotel);
return ResultGenerator.genSuccessResult();
}
public Hotel getHotelById(String id) {
Hotel hotel = hotelRepository.findById(id).orElseThrow(() -> new ServiceException("酒店ID错误!"));
return hotel;
}
public Result updateStatus(String id) {
Hotel hotel = getHotelById(id);
if (hotel.getStatus().equals(StatusEnum.DOWM_STATUS.getCode())) {
//改变状态
hotel.setStatus(StatusEnum.UP_STATUS.getCode());
} else {
hotel.setStatus(StatusEnum.DOWM_STATUS.getCode());
}
hotelRepository.saveAndFlush(hotel);
return ResultGenerator.genSuccessResult();
}
public Page<Attractions> getAttractionsPage(Pageable pageable) {
Page<Attractions> attractionsPage = attractionsRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return attractionsPage;
}
public Attractions getAttractionsById(String id) {
Attractions attractions = attractionsRepository.findById(id).orElseThrow(() -> new ServiceException("景点ID错误"));
return attractions;
}
public Result updateAttractionsStatus(String id) {
Attractions attractions = getAttractionsById(id);
if (attractions.getStatus().equals(StatusEnum.DOWM_STATUS.getCode())) {
//改变状态
attractions.setStatus(StatusEnum.UP_STATUS.getCode());
} else {
attractions.setStatus(StatusEnum.DOWM_STATUS.getCode());
}
attractionsRepository.saveAndFlush(attractions);
return ResultGenerator.genSuccessResult();
}
eclipse、idea运行启动
系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.7版本以上版本数据库,创建数据库并执行脚本创建表;
在IDEA中编辑进行打包;
下载并配置Tomcat8.0服务器,配置系统服务,上传项目打包文件
(1)开发工具:ideal、tomcat
(2)使用的语言:Java、JSP、Javascript、html、CSS
(3)操作系统:windows操作系统
(4)数据库:Mysql
此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。
开发工具 Eclipse/IDEA
语言 JDK1.8 、jsp、Springboot 、mybatis
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;