——————————DescriptionStart——————————
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明









基于javaweb的SSM+Maven旅游资讯门票网站系统(java+ssm+jsp+mysql+bootstrap)
前台用户:
user1 123456
景点查看,购票、美食查看等
后台管理员:
admin 123456
功能:景点管理、门票管理、美食管理、订单管理、用户管理
注意:本项目图片是上传在编译后目录(target)下的,如果希望项目迁移过程中图片不丢失,上传后要即时从target目录中拷贝放到源码目录里
毕业设计——旅游网站的设计与实现
1、本系统是一个地方性旅游网站,后台基于SSM框架,前台使用BootStrap、js、jsp实现,数据库试用mysql;
2、功能点分析
1)注册成功会发送邮件,封装了邮件的工具类;
2)注册时候会对密码进行MD5加密;同样每次对密码操作都要先加密;
3)分页使用的是jsp自定义标签;
4)上传图片到项目也是封装好了工具类;
5)自定义拦截器对为登陆用户进行拦截;
6)复杂的业务在于一个景点对应多个门票,想要门票显示在对应的景点下方,要先查询出来景点,再对它遍历,根据id去 寻找门票,当时没有对应所有的景点都设置门票,报了空指针异常
7)通过代码上传图片到项目需要手动刷新,否则访问就是404错误
——————————CodeStart——————————
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| /** * 显示格式 上一页 1 2 3 4 5 下一页 */ public class NavigationTag extends TagSupport { static final long serialVersionUID = 2372405317744358833L; /** * request 中用于保存Page<E> 对象的变量名,默认为“page” */ private String bean = "page"; /** * 分页跳转的url地址,此属性必须 */ private String url = null; /** * 显示页码数量 */ private int number = 5; @Override public int doStartTag() throws JspException { JspWriter writer = pageContext.getOut(); HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); Page page = (Page)request.getAttribute(bean); if (page == null) return SKIP_BODY; url = resolveUrl(url, pageContext); try { //计算总页数 int pageCount = page.getTotal() / page.getSize(); if (page.getTotal() % page.getSize() > 0) { pageCount++; } writer.print("<nav><ul class=\"pagination\">"); //显示“上一页”按钮 if (page.getPage() > 1) { String preUrl = append(url, "page", page.getPage() - 1); preUrl = append(preUrl, "rows", page.getSize());
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| return "redirect:/managerLoginPage"; }
@RequestMapping(value = "/managerLogout") public String logout(HttpServletRequest request){ HttpSession session = request.getSession(); session.removeAttribute("user"); return "manage/login"; } }
@Controller public class TicketController { @Autowired TicketService ticketService; @Autowired ScenicService scenicService;
@RequestMapping(value = "/manageTicket") public String getTicketPage(Model model,QueryVo vo){ Page<Ticket> page = ticketService.selectTicketPageByQueryVo(vo); model.addAttribute("page", page); model.addAttribute("name",vo.getName()); return "manage/ticket"; }
@RequestMapping(value = "/deleteTicket")
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| * @param activeCode * @return */ @RequestMapping(value = "/active", method = RequestMethod.GET) public String active(Model model,String activeCode){ int i = userService.active(activeCode); if(i==1) { return "user/login"; } return "user/register"; }
@RequestMapping(value = "/logout") public String logout(HttpServletRequest request, HttpServletResponse response){ HttpSession session = request.getSession(); session.removeAttribute("user");
Cookie cookie_username = new Cookie("cookie_username",""); cookie_username.setMaxAge(0); Cookie cookie_password = new Cookie("cookie_password",""); cookie_password.setMaxAge(0);
response.addCookie(cookie_username); response.addCookie(cookie_password);
return "user/login"; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| @RequestMapping(value = "/manageTicket") public String getTicketPage(Model model,QueryVo vo){ Page<Ticket> page = ticketService.selectTicketPageByQueryVo(vo); model.addAttribute("page", page); model.addAttribute("name",vo.getName()); return "manage/ticket"; }
@RequestMapping(value = "/deleteTicket") public @ResponseBody String deleteScenic(Integer id){ ticketService.deleteById(id); return "OK"; }
@RequestMapping(value = "/addTicket") public String insert(Ticket ticket){ ticketService.addTicket(ticket); return "redirect:/manageTicket"; }
@RequestMapping(value = "/updateTicket") public @ResponseBody String update(Ticket ticket){ ticketService.updateTicket(ticket); return "OK"; }
@RequestMapping(value = "/getTicketById") public @ResponseBody Ticket getTicketById(Integer id){ return ticketService.getTicketById(id);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| } //显示“下一页”按钮 if (page.getPage() < pageCount) { String nextUrl = append(url, "page", page.getPage() + 1); nextUrl = append(nextUrl, "rows", page.getSize()); writer.print("<li><a href=\"" + nextUrl + "\">下一页</a></li>"); } else { writer.print("<li class=\"disabled\"><a href=\"#\">下一页</a></li>"); } writer.print("</nav>"); } catch (IOException e) { e.printStackTrace(); } return SKIP_BODY; }
private String append(String url, String key, int value) {
return append(url, key, String.valueOf(value)); }
/** * 为url 参加参数对儿 * * @param url * @param key * @param value * @return */ private String append(String url, String key, String value) { if (url == null || url.trim().length() == 0) { return ""; }
if (url.indexOf("?") == -1) { url = url + "?" + key + "=" + value; } else { if(url.endsWith("?")) { url = url + key + "=" + value; } else { url = url + "&" + key + "=" + value; } } return url; }
/** * 为url 添加翻页请求参数 *
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| * * @param response * @param session */ @RequestMapping("/getImage") public void generate(HttpServletResponse response, HttpSession session) { ByteArrayOutputStream output = new ByteArrayOutputStream(); String verifyCodeValue = drawImg(output);
session.setAttribute("verifyCodeValue", verifyCodeValue);
try { ServletOutputStream out = response.getOutputStream(); output.writeTo(out); } catch (IOException e) { e.printStackTrace(); } }
private String drawImg(ByteArrayOutputStream output) { String code = ""; for (int i = 0; i < 4; i++) { code += randomChar(); } int width = 70; int height = 25; BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); Font font = new Font("Times New Roman", Font.PLAIN, 20); Graphics2D g = bi.createGraphics(); g.setFont(font); Color color = new Color(66, 2, 82); g.setColor(color); g.setBackground(new Color(226, 226, 240)); g.clearRect(0, 0, width, height); FontRenderContext context = g.getFontRenderContext();
|
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=162123140509201ek
https://javayms.pages.dev?id=162123140509201ek