作者主页:夜未央5788
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
项目介绍
管理员角色包含以下功能:
管理员登录,用户管理,客机管理,航班管理,机票管理,密码修改等功能。
用户角色包含以下功能:
查看所有机票,用户登录注册,机票预订,查看我的订单等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
技术栈
1. 后端:Spring+SpringMVC+Mybatis
2. 前端:HTML+CSS+JavaScript+jsp
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/ 登录
运行截图
相关代码
登录控制器
package com.shop.controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;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.RequestParam;import com.shop.exception.zdyException;
import com.shop.po.Adminuser;
import com.shop.po.User;
import com.shop.service.UserService;@Controller
public class loginController {@Autowiredprivate UserService userService;@RequestMapping("login")public String login() {return "login";}// 用户登录@RequestMapping("/userLogin")public String userLogin(HttpServletRequest request,@RequestParam String checkImg, User user, Model model)throws zdyException, Exception {String sessionCode = (String) request.getSession().getAttribute("checkcode");if (!sessionCode.equalsIgnoreCase(checkImg)) {//model.addAttribute("message", "验证码输入错误请重新注册");//throw new zdyException("验证码输入错误请重新注册");request.getSession().setAttribute("message", "验证码输入错误请重新注册");return "redirect:login.action";}User loginUser = userService.loginFindByUnameAndPwd(user.getUsername(),user.getPassword());if (loginUser == null) {//model.addAttribute("message", "密码输入错误请重新登陆");request.getSession().setAttribute("message", "密码输入错误请重新登陆");//throw new zdyException("密码输入错误请重新登陆");return "redirect:login.action";}request.getSession().setAttribute("loginUser", loginUser);request.getSession().removeAttribute("message");return "redirect:index.action";}// 用户退出@RequestMapping("userLogout")public String userLogout(HttpServletRequest request,HttpServletResponse response, Model model) {request.getSession().removeAttribute("loginUser");response.setHeader("content-type", "text/html;charset=UTF-8");response.setHeader("refresh", "5;url=/shop/index.action");model.addAttribute("message", "退出成功,系统将在5秒之后跳转到首页......");return "msg";}//进入管理员页面@RequestMapping("/admin")public String AdminIndex(){return "admin/index";}//admin/adminUser_login.action//adminUser_login管理员登录@RequestMapping("/admin/adminUser_login")public String adminUser_login(HttpServletRequest request,Model model,@RequestParam String username,@RequestParam String password) throws Exception{Adminuser adminuserLogin = userService.adminUser_login(username,password);System.out.println(username);System.out.println(password);if(adminuserLogin == null){model.addAttribute("message", "改用户未被授予管理员身份!");return "admin/index";}request.getSession().setAttribute("adminuserLogin", adminuserLogin);
// model.addAttribute("adminuserLogin", adminuserLogin);return "admin/home";}}
注册控制器
package com.shop.controller;import java.util.ArrayList;
import java.util.List;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;import com.shop.exception.zdyException;
import com.shop.po.User;
import com.shop.service.UserService;@Controller
public class registController {@Autowiredprivate UserService userService;@RequestMapping("regist")public String regist() {return "regist";}@RequestMapping("/userRegist")public String userRegist(Model model, HttpServletRequest request,@Validated User user, BindingResult bindingResult,@RequestParam String checkImg) throws Exception {if (bindingResult.hasErrors()) {List<ObjectError> errors =bindingResult.getAllErrors();List<String> list = new ArrayList<>();for (ObjectError objectError : errors) {String str = new String(objectError.getDefaultMessage().getBytes("ISO-8859-1"), "gbk");list.add(str);}model.addAttribute("errors", list);return "regist";}// 查看验证码String sessionCode = (String) request.getSession().getAttribute("checkcode");
// System.out.println("adadadad" + sessionCode);if (!sessionCode.equalsIgnoreCase(checkImg)) {
// model.addAttribute("message", "验证码错误请重新注册");throw new zdyException("验证码错误请重新注册");}// 开始写入数据库userService.saveUser(user);//model.addAttribute("message", "注册成功请去邮箱激活");model.addAttribute("message", "注册成功请登录");return "msg";}@RequestMapping("/activeUser")public String activeUser(@RequestParam String code,Model model) throws zdyException,Exception {/** 根据传递激活码进行用户查询. 如果用户不为空: 修改用户状态 改为1 如果用户为空: 激活码被篡改了.*/User activeUser = userService.findByCode(code);if(activeUser==null){
// model.addAttribute("message", "激活码被篡改了,请重新注册");throw new zdyException("激活码被篡改了,请重新注册");}activeUser.setState(1);activeUser.setCode(null);userService.activeUser(activeUser);model.addAttribute("message", "激活码成功");return "msg";}
}
留言控制器
package com.shop.controller;import java.util.Date;import javax.servlet.http.HttpServletRequest;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.RequestParam;import com.shop.Utils.PageBean;
import com.shop.po.Message;
import com.shop.po.User;
import com.shop.service.MessageService;@Controller
public class messageController {@Autowiredprivate MessageService messageService;@RequestMapping("/saveMessage")public String saveMessage(@RequestParam String messageinfo,HttpServletRequest request,Model model) throws Exception {Message Message = new Message();User loginUser = (User) request.getSession().getAttribute("loginUser");if(loginUser==null){model.addAttribute("message", "对不起您还没有登录");return "msg";}java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Message.setMessage(messageinfo);Message.setUid(loginUser.getUid());Message.setMessagedate(sdf.format(new Date()));messageService.insertMessage(Message);request.getSession().setAttribute("Message", Message);return "redirect:/messageList.action?page=1";}// 显示留言板全部留言@RequestMapping("/messageList")public String messageList(@RequestParam int page, Model model,HttpServletRequest request) throws Exception {PageBean<Message> pageBean = messageService.findAllMessageByPage(page);model.addAttribute("pageBean", pageBean);return "messageList";}
}
首页控制器
package com.shop.controller;import java.util.ArrayList;
import java.util.List;import javax.servlet.http.HttpServletRequest;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.RequestParam;import com.shop.po.Category;
import com.shop.po.Product;
import com.shop.service.CategoryService;
import com.shop.service.ProductService;@Controller
public class indexController {@Autowiredprivate CategoryService categoryService;@Autowiredprivate ProductService productService;@RequestMapping("/index")public String index(Model model,HttpServletRequest request) throws Exception {//查询一级分类List<Category> cList = categoryService.findCategory();request.getSession().getServletContext().setAttribute("cList",cList);
// model.addAttribute("cList", cList);//查询热门商品List<Product> hList= productService.findHotProduct();model.addAttribute("hList", hList);//查询最新商品List<Product> nList = productService.findNewProduct();model.addAttribute("nList", nList);//滚动图片专用,最多显示3个商品List<Product> sList;if(hList.size()>3){sList = new ArrayList<Product>();sList.add(hList.get(0));sList.add(hList.get(1));sList.add(hList.get(2));model.addAttribute("sList", sList);}else{model.addAttribute("sList", hList);}return "index";}@RequestMapping("/about")public String about(Model model,HttpServletRequest request) throws Exception {return "about";}@RequestMapping("/contact")public String contact(Model model,HttpServletRequest request) throws Exception {return "contact";}@RequestMapping("/delivery")public String delivery(Model model,HttpServletRequest request) throws Exception {return "delivery";}//@RequestMapping("/searchProduct")public String searchProduct(@RequestParam String condition,Model model,HttpServletRequest request) throws Exception {//查询一级分类List<Category> cList = categoryService.findCategory();request.getSession().getServletContext().setAttribute("cList",cList); //查询商品List<Product> hList= productService.findHotProduct();model.addAttribute("hList", hList);//搜索商品List<Product> srList = productService.searchProduct(condition);model.addAttribute("srList", srList);//滚动图片专用,最多显示3个商品List<Product> sList;if(hList.size()>3){sList = new ArrayList<Product>();sList.add(hList.get(0));sList.add(hList.get(1));sList.add(hList.get(2));model.addAttribute("sList", sList);}else{model.addAttribute("sList", hList);}return "searchProduct";}
}
图片控制器
package com.shop.controller;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class checkImgController {@RequestMapping("checkImg")public void checkImg(HttpServletRequest request ,HttpServletResponse response) throws IOException {int width = 120;int height = 30;// 步骤一 绘制一张内存中图片BufferedImage bufferedImage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);// 步骤二 图片绘制背景颜色 ---通过绘图对象Graphics graphics = bufferedImage.getGraphics();// 得到画图对象 --- 画笔// 绘制任何图形之前 都必须指定一个颜色graphics.setColor(getRandColor(200, 250));graphics.fillRect(0, 0, width, height);// 步骤三 绘制边框graphics.setColor(Color.WHITE);graphics.drawRect(0, 0, width - 1, height - 1);// 步骤四 四个随机数字Graphics2D graphics2d = (Graphics2D) graphics;// 设置输出字体graphics2d.setFont(new Font("宋体", Font.BOLD, 18));// String words// ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";String words = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a\u7740\u4e2a\u5730\u5230\u5927\u91cc\u8bf4\u5c31\u53bb\u5b50\u5f97\u4e5f\u548c\u90a3\u8981\u4e0b\u770b\u5929\u65f6\u8fc7\u51fa\u5c0f\u4e48\u8d77\u4f60\u90fd\u628a\u597d\u8fd8";Random random = new Random();// 生成随机数// 定义StringBufferStringBuffer sb = new StringBuffer();// 定义x坐标int x = 10;for (int i = 0; i < 4; i++) {// 随机颜色graphics2d.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));// 旋转 -30 --- 30度int jiaodu = random.nextInt(60) - 30;// 换算弧度double theta = jiaodu * Math.PI / 180;// 生成一个随机数字int index = random.nextInt(words.length()); // 生成随机数 0 到 length - 1// 获得字母数字char c = words.charAt(index);sb.append(c);// 将c 输出到图片graphics2d.rotate(theta, x, 20);graphics2d.drawString(String.valueOf(c), x, 20);graphics2d.rotate(-theta, x, 20);x += 30;}// 将生成的字母存入到session中request.getSession().setAttribute("checkcode", sb.toString());System.out.println(sb.toString());// 步骤五 绘制干扰线graphics.setColor(getRandColor(160, 200));int x1;int x2;int y1;int y2;for (int i = 0; i < 30; i++) {x1 = random.nextInt(width);x2 = random.nextInt(12);y1 = random.nextInt(height);y2 = random.nextInt(12);graphics.drawLine(x1, y1, x1 + x2, x2 + y2);}// 将上面图片输出到浏览器 ImageIOgraphics.dispose();// 释放资源ImageIO.write(bufferedImage, "jpg", response.getOutputStream());}private Color getRandColor(int fc, int bc) {// 取其随机颜色Random random = new Random();if (fc > 255) {fc = 255;}if (bc > 255) {bc = 255;}int r = fc + random.nextInt(bc - fc);int g = fc + random.nextInt(bc - fc);int b = fc + random.nextInt(bc - fc);return new Color(r, g, b);}
}
如果也想学习本系统,下面领取。关注并回复:165ssm