Java项目:52 springboot基于SpringBoot的旅游网站的设计与实现013

news/2024/7/7 16:23:34 标签: java, spring boot, 旅游
作者主页:源码空间codegym

简介:Java领域优质创作者、Java项目、学习资料、技术互助

文中获取源码

项目介绍

旅游网站主要功能如下:

1.用户管理:注册、登录、退出、修改密码;

2.分类显示:显示旅游路线的分类;

3.旅游路线显示:按分类查询旅游路线、通过关键字搜索旅游路线、查看旅游路线的详细信息;

4.购物车管理:向购物车中添加旅游路线、修改购物车中旅游路线数量、删除购物车中旅游路线、我的购物车;

5.订单管理:通过购物车中生成订单、查看我的订单、查看某个订单的详细、订单支付、取消未付款订单。

6.首页:提供一个网站首页,该网站用户的登录,注册,所有旅游路线的一级分类,热门旅游路线和最新旅游路线的展示等。

7.旅游路线管理:旅游路线的上架、下架。

环境要求

1.运行环境:最好是java jdk1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;

3.tomcat环境:Tomcat7.x,8.X,9.x版本均可

4.硬件环境:windows7/8/10 4G内存以上;或者Mac OS;

5.是否Maven项目:是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven.项目

6.数据库:MySql5.7/8.0等版本均可;

技术栈

运行环境:jdk8 + tomcat9 + mysql5.7 + windows10

服务端技术:Spring Boot+ Mybatis +VUE

使用说明

1.使用Navicati或者其它工具,在mysql中创建对应sq文件名称的数据库,并导入项目的sql文件;

2.使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;

3.将项目中config-propertiesi配置文件中的数据库配置改为自己的配置,然后运行;

运行指导

idea导入源码空间站顶目教程说明(Vindows版)-ssm篇:

http://mtw.so/5MHvZq

源码地址:http://codegym.top

运行截图

文档截图微信截图_20240309164034

项目截图

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

代码

package com.work.controller;

import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.work.common.utils.BaseUtil;
import com.work.common.utils.JsonUtil;
import com.work.common.utils.MD5Util;
import com.work.pojo.SystemUpset;
import com.work.pojo.User;
import com.work.service.SystemUpsetService;
import com.work.service.UserService;

@Controller
@RequestMapping("/manager/login")
public class ManagerLoginController extends BaseUtil {
	@Resource
	private UserService userService;
	@Resource
	private SystemUpsetService systemUpsetService;
	/**
	 * 管理后台登陆接口
	 * 
	 * @param request
	 * @param response
	 * @param ga
	 */
	@RequestMapping("/dologin")
	public void doLogin(HttpServletRequest request, HttpServletResponse response, User user) throws Exception {
		User serverUser = (User) request.getSession().getAttribute("serverUser");
		if(serverUser == null){
			if(user.getUserId() == null){
	        	  output(response,JsonUtil.buildFalseJson(1,"账号不能为空"));
	          }else{
	        	  if(user.getPassword().equals("") || user.getPassword() == null){
	        		  output(response,JsonUtil.buildFalseJson(1,"密码不能为空"));
	        	  }else{
	        		  User userInfo = userService.getUserById(user.getUserId());
	        		  if(userInfo == null || userInfo.getUserLeven() != 1){
	        			  output(response,JsonUtil.buildFalseJson(1,"账号不正确或系统不存在该用户"));
	        		  }else{
	        			  if(!userInfo.getPassword().equals(MD5Util.MD5Encode(user.getPassword(),"utf-8"))){
	        				  output(response,JsonUtil.buildFalseJson(1,"您输入的密码不正确,请重试")); 
	        			  }else{
	        				  //判断账号是否被禁用
	        				  if(userInfo.getIsEffect() != 1){
	        					  output(response,JsonUtil.buildFalseJson(1,"对不起您的账号已被禁用"));
	        				  }else{
	        					  //执行登陆后台的逻辑
	        					  request.getSession().setAttribute("serverUser",userInfo);
	        					  output(response, JsonUtil.buildFalseJson(0, "登陆成功,欢迎登录兼职平台管理系统"));
	        				  }
	        			  }
	        		  }
	        	  }
	          }
		}else{
			output(response, JsonUtil.buildFalseJson(0, "登陆成功,欢迎登录兼职平台管理系统"));
		}
		
	}

	@RequestMapping("/goIndex")
	public ModelAndView goHome(ModelAndView mv, HttpServletRequest request,SystemUpset systemUpset) {
		User serverUser = (User) request.getSession().getAttribute("serverUser");
		if (serverUser == null) { // 已退出
			mv.setViewName("server/login");
		} else {
			List<SystemUpset> systems = systemUpsetService.getSystemUpsetList(systemUpset, 0, 10);
			if(systems.size() > 0){
				mv.addObject("system", systems.get(0));
			}else{
				mv.addObject("system", null);
			}
			mv.setViewName("server/index");
		}
		mv.addObject("serverUser", serverUser);
		return mv;
	}

	@RequestMapping("/goServerLogin")
	public ModelAndView goHome(ModelAndView mv) {
		mv.setViewName("server/login");
		return mv;
	}

	@RequestMapping("/goMain")
	public ModelAndView goMain(ModelAndView mv, HttpServletRequest request) {
		mv.setViewName("server/main");
		return mv;
	}

	@RequestMapping("/dologout")
	public void managerLogOut(ModelAndView modelView, HttpServletRequest request, HttpServletResponse response) {
		request.getSession().invalidate();
		output(response, JsonUtil.buildFalseJson(0, "退出成功"));
	}

	@RequestMapping("/goUpdatePassword")
	public ModelAndView goUpdatePassword(HttpServletRequest request, ModelAndView mv) {
		mv.setViewName("server/updatePwd");
		return mv;
	}
	
	//修改密码
	@RequestMapping("/updatePassword") 
	public void updatePassword(HttpServletRequest request,HttpServletResponse response,String rePassword, String password){
		User serverUser = (User) request.getSession().getAttribute("serverUser");
		User user = new User();
		if(password.equals(rePassword)){
			user.setUserId(serverUser.getUserId());
			user.setPassword(MD5Util.MD5Encode(password,"utf-8"));
			userService.updateUser(user);
			request.getSession().invalidate();
			output(response,JsonUtil.buildFalseJson(0, "修改密码成功"));
		}else{
			output(response,JsonUtil.buildFalseJson(1, "前后密码不一致"));
		}
	}
}


http://www.niftyadmin.cn/n/5431530.html

相关文章

PyTorch Dataset、DataLoader长度

pytorch 可以直接对 Dataset 对象用 len() 求数据集大小&#xff0c;而 DataLoader 对象也可以用 len()&#xff0c;不过求得的是用这个 loader 在一个 epoch 能有几多 iteration&#xff0c;容易混淆。本文记录几种情况的对比。 from torch.utils.data import Dataset, DataL…

maya自动重定向测试

目录 maya导入bvh maya python脚本测试 maya python脚本调用 maya重定向 Pose-to-Motion: Cross-Domain Motion Retargeting with Pose Prior maya导入bvh GitHub - jhoolmans/mayaImporterBVH: Importer script for BVH maya python脚本测试 首先打开MAYA&#xff0c;然…

SCUI Admin:快速构建企业级中后台前端的利器 让前端开发更快乐。

欢迎加入我们的前端组件学习交流群&#xff0c;可添加群主微信&#xff0c;审核通过后入群。 随着Web技术的不断发展&#xff0c;中后台前端解决方案在各类企业级应用中扮演着越来越重要的角色。SCUI Admin正是一款基于Vue3和elementPlus的WebUI前端框架&#xff0c;旨在帮助开…

PyQt5使用

安装Pyqt5信号与槽使用可视化界面编辑UI (Pyside2)ui生成之后的使用(两种方法)1 ui转化为py文件 进行import2 动态调用UI文件 安装Pyqt5 pip install pyqt5-tools这时候我们使用纯代码实现一个简单的界面 from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButto…

【vue.js】文档解读【day 5】| ref模板引用

如果阅读有疑问的话&#xff0c;欢迎评论或私信&#xff01;&#xff01; 本人会很热心的阐述自己的想法&#xff01;谢谢&#xff01;&#xff01;&#xff01; 文章目录 模板引用前言访问模板引用模板引用与v-if、v-show的结合v-for中的模板引用函数模板引用 模板引用 前言 …

2024三掌柜赠书活动第十七期:数据结构与算法(Rust语言描述)

目录 目录 前言 数据结构的选择 常见算法实现 实际应用 关于《数据结构与算法&#xff08;Rust语言描述&#xff09;》 编辑推荐 作者简介 图书目录 书中前言/序言 《数据结构与算法&#xff08;Rust语言描述&#xff09;》全书速览 结束语 前言 作为开发者&#x…

python adb脚本

Python调用adb shell ls&#xff0c;取前5个字符存放&#xff0c;并打印出来 import subprocess def run_adb_shell_command_and_get_first_chars(command, num_chars): # 设置adb的路径&#xff0c;根据您的实际情况进行修改 adb_path adb # 使用subprocess运行adb shel…

SpringBoot集成Redisson实现接口限流

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Dat…