基于javaweb+mysql的ssm+maven旅游管理系统(前台、后台)(java+jsp+ssm+maven+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
分为前台用户和后台管理员功能
管理员
- 登录、管理用户、管理景点、管理酒店、管理论坛帖子、管理评论等
用户端
- 登录、注册、景点、酒店、论坛、评论等功能的浏览和评论等
idea运行/eclipse/MyEclipse运行
前台
后台
技术框架
JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) Maven MySQL jQuery JavaScript CSS
基于javaweb+mysql的SSM+Maven旅游管理系统(前台、后台)(java+jsp+ssm+maven+mysql)
* 跳转首页
*/
@RequestMapping(value = {"", "index"}, method = RequestMethod.GET)
public String index(ViewPointExample example, Model model) {
HotelExample hotelExample = new HotelExample();
//显示首页的景点
String prefix = "/static/upload/viewavatar/";
//酒店
String prefixHotel = "/static/upload/hotelAvatar/";
example.setOrderByClause("tp_vid desc");
List<ViewPoint> viewPoints = viewPointService.selectByExample(example);
for (ViewPoint viewPoint : viewPoints) {
String suffix = viewPoint.getTpVpic();
viewPoint.setTpVpic(prefix + suffix);
}
//酒店
hotelExample.setOrderByClause("hid desc");
List<Hotel> hotels = hotelDao.selectByExample(hotelExample);
for (Hotel hotel : hotels) {
String suffix = hotel.getImgUrl();
hotel.setImgUrl(prefixHotel + suffix);
}
//传送景点
model.addAttribute("viewPoints", viewPoints);
model.addAttribute("hotels", hotels);
return "index";
}
}
model.addAttribute("msg", Msg.success(lw_id + "号删除成功!"));
return "redirect:wordsList";
}
/**
* 跳转回复列表
* @return
*/
@RequestMapping(value = "replyList", method = RequestMethod.GET)
public String ReplyList(Model model) {
List<Reply> replys = viewPointService.findByReply();
model.addAttribute("replys", replys);
return "admin/reply_list";
}
/**
* 回复批量删除
* @return
*/
@ResponseBody
@RequestMapping(value = "replyMutiDelete", method = RequestMethod.GET)
public String replyMutiDelete(Integer[] lr_ids, Model model) {
for (Integer lr_id : lr_ids){
replyDao.deleteByPrimaryKey(lr_id);
}
model.addAttribute("msg", Msg.success(Arrays.toString(lr_ids) + "号删除成功!"));
return "1";
}
/**
* 单击删除
* @return
*/
@RequestMapping(value = "replyDelete", method = RequestMethod.GET)
public String replyDelete(Integer lr_id, Model model) {
replyDao.deleteByPrimaryKey(lr_id);
model.addAttribute("msg", Msg.success(lr_id + "号删除成功!"));
return "redirect:replyList";
}
}
Forum forum = forumDao.selectByPrimaryKey(tpFid);
model.addAttribute("forum",forum);
return "proscenium/forum/content";
}
/**
* 后台论坛模糊搜索
*/
@RequestMapping(value = "forumPointSearch", method = RequestMethod.GET)
public String forumPointSearch(String keyword, Model model) {
Forum forum = new Forum();
forum.setTpTag(keyword);
forum.setTpTitle(keyword);
forum.setTpSubTitle(keyword);
forum.setTpAuthor(keyword);
List<Forum> forums = forumDao.forumPointSearch(forum);
model.addAttribute("forums", forums);
model.addAttribute("msg", Msg.success("论坛查询成功!"));
return "proscenium/forum/index";
}
/**
* 发帖功能 跳转编辑页面
*/
@RequestMapping(value = "issue", method = RequestMethod.GET)
public String issue(Integer uid, Model model){
if (uid != null){
return "proscenium/forum/edit";
}
example.setOrderByClause("tp_fid desc");
List<Forum> forums = forumDao.selectByExampleWithBLOBs(example);
model.addAttribute("forums",forums);
model.addAttribute("msg", Msg.fail("您还未登录!"));
return "proscenium/forum/index";
}
/**
* 编辑页面
public String userSearch(String keyword, HttpSession session) {
//System.out.println(keyword);
//List<ViewPoint> users = viewPoint();
//session.setAttribute("users", users);
return "admin/view/user_list";
}
/**
* 景点内容 跳转
*/
@RequestMapping(value = "content", method = RequestMethod.GET)
public String viewContent(Integer tpVid, Model model) {
//封装留言信息
List<Words> lw_list = viewPointService.findByWords();
model.addAttribute("lw_list",lw_list);
//封装回复信息
List<Reply> lr_list = viewPointService.findByReply();
model.addAttribute("lr_list",lr_list);
ViewPoint viewPoint = viewPointService.selectByPrimaryKey(tpVid);
model.addAttribute("viewPoint", viewPoint);
return "proscenium/viewpoint/content";
}
/**
* 前台景点模糊搜索
*/
@RequestMapping(value = "viewPointSearch", method = RequestMethod.GET)
public String viewPointSearch(String keyword, Model model) {
String prefix = "/static/upload/viewavatar/";
ViewPoint viewPoint = new ViewPoint();
viewPoint.setTpVname(keyword);
viewPoint.setTpVtype(keyword);
viewPoint.setTpLocation(keyword);
List<ViewPoint> viewPoints = viewPointDao.viewPointSearch(viewPoint);
for (ViewPoint vp : viewPoints){
String imgUrl = vp.getTpVpic();
/**
* 后台酒店模糊搜索
*/
@RequestMapping(value = "hotelPointSearch", method = RequestMethod.GET)
public String hotelPointSearch(String keyword, Model model) {
String prefix = "/static/upload/hotelAvatar/";
Hotel hotel = new Hotel();
hotel.setLocal(keyword);
hotel.setHouseType(keyword);
hotel.setBedType(keyword);
List<Hotel> hotels = hotelDao.hotelPointSearch(hotel);
for (Hotel hotelForEach : hotels){
String imgUrl = hotelForEach.getImgUrl();
hotelForEach.setImgUrl(prefix + imgUrl);
}
model.addAttribute("hotels", hotels);
model.addAttribute("msg", Msg.success("酒店查询成功!"));
return "admin/hotel_list";
}
/**
* 后台论坛模糊搜索
*/
@RequestMapping(value = "forumPointSearch", method = RequestMethod.GET)
public String forumPointSearch(String keyword, Model model) {
Forum forum = new Forum();
forum.setTpTag(keyword);
forum.setTpTitle(keyword);
forum.setTpSubTitle(keyword);
forum.setTpAuthor(keyword);
List<Forum> forums = forumDao.forumPointSearch(forum);
model.addAttribute("forums", forums);
model.addAttribute("msg", Msg.success("论坛查询成功!"));
return "admin/forum_list";
* 登录逻辑
* handle
*
* @param aemail 用户邮箱
* @param apwd 密码
* @return String
*/
@RequestMapping(value = "login", method = RequestMethod.POST)
// @RequestParam(required = true) 为true时意思为不可缺省
public String login(String aemail, String apwd, HttpSession session) {
Admin admin = adminService.login(aemail, apwd);
String timestamp = TimeStampUtil.getTimeFormat();
//登录失败
if (admin == null) {
session.setAttribute("msg", Msg.fail("邮箱或者密码错误!"));
return login();
}
//登录成功
else {
// 将登录信息放入session
session.setAttribute("msg", Msg.success());
session.setAttribute("timestamp", timestamp);
session.setAttribute("admin", admin);
// 明日任务,获取域对象传送user信息
return "redirect:main";
}
}
/**
* 后台注销
*/
@RequestMapping(value = "loginout", method = RequestMethod.GET)
public String loginOut(HttpSession session) {
//销毁session
session.invalidate();
return login();
}
//**********login end***************
} else {
session.setAttribute("msg", Msg.fail("还未注册或邮箱密码错误,请重新输入!"));
return "redirect:/index";
}
}
/**
* 前台用户注销
*
* @return
*/
@RequestMapping(value = "loginout", method = RequestMethod.GET)
public String loginOut() {
session.invalidate();
return "redirect:/index";
}
/**
* 跳转注册用户
*
* @return
*/
@RequestMapping(value = "regst", method = RequestMethod.GET)
public String regst() {
return "proscenium/user/regst";
}
@RequestMapping(value = "regstform", method = RequestMethod.POST)
public String regst(String uname, String uemail, String upwd, String reupwd, Model model) {
if (uemail == null || upwd == null || uemail.trim().equals("") || upwd.trim().equals("")) {
model.addAttribute("msg", Msg.fail("用户名或密码不可为空,请重新输入!"));
} else if (!reupwd.equals(upwd)) {
model.addAttribute("msg", Msg.fail("密码不正确请重新输入!"));
} else {
userService.insertUser(uname, uemail, upwd);
model.addAttribute("msg", Msg.success("用户注册成功!"));
}
System.out.println(!uemail.trim().equals(""));
return "proscenium/user/regst";
}
/**
* 跳转个人信息
*/
@RequestMapping(value = "info", method = RequestMethod.GET)
public String info(String uid) {
User user = userService.userGet(uid);
*/
@RequestMapping(value = "viewsectiondelete", method = RequestMethod.GET)
@ResponseBody//返回给前端
public String viewSectionDelete(Integer[] tpVids) {
for (Integer tpVid : tpVids) {
viewPointService.deleteviews(tpVid);
}
session.setAttribute("msg", Msg.success(Arrays.toString(tpVids) + "号景点批量删除成功!"));
return "1";
}
/**
* 景点查看
*/
@RequestMapping(value = "viewcontent", method = RequestMethod.GET)
public String viewcontent(Integer tpVid, Model model) {
ViewPoint viewPoint = viewPointService.selectByPrimaryKey(tpVid);
String prefix = "/static/upload/viewavatar/";
String suffix = viewPoint.getTpVpic();
//前端img标签路径
viewPoint.setTpVpic(prefix + suffix);
model.addAttribute("viewPoint", viewPoint);
return "admin/view_content";
}
/**
* 用户单个单击删除
*/
@RequestMapping(value = "viewdelete", method = RequestMethod.GET)
public String viewDelete(Integer tpVid) {
viewPointService.deleteviews(tpVid);
session.setAttribute("msg", Msg.success(tpVid + "号用户删除成功!"));
return "redirect:viewlist";
}
/**
* 景点新增表单跳转
*/
@RequestMapping(value = "viewform", method = RequestMethod.GET)
public String viewForm() {
return "admin/view_form";
}
/**
* 景点新增
*/
@RequestMapping(value = "viewinsert", method = RequestMethod.POST)
public String viewInsert(ViewPoint viewPoint) {
if (viewPoint.getTpVid() == null) {
if (hotel.getHid() == null) {
hotelDao.insertSelective(hotel);
model.addAttribute("msg", Msg.success("新增景点成功!"));
return "redirect:hotellist";
}
model.addAttribute("msg", Msg.fail("新增景点失败!"));
return "redirect:hoteledit";
}
/**
* content
*/
@RequestMapping(value = "forumList", method = RequestMethod.GET)
public String forumList(Model model) {
ForumExample example = new ForumExample();
example.setOrderByClause("tp_fid desc");
List<Forum> forums = forumDao.selectByExample(example);
model.addAttribute("forums", forums);
return "admin/forum_list";
}
/**
*
* @param tpFids
* @param model
* @return
*/
@ResponseBody//返回给前端
@RequestMapping(value = "forumMutiDelete", method = RequestMethod.GET)
public String forumMutiDelete(Integer[] tpFids, Model model) {
for (Integer tpFid : tpFids) {
forumDao.deleteByPrimaryKey(tpFid);
}
session.setAttribute("msg", Msg.success(Arrays.toString(tpFids) + "号批量删除成功!"));
return "1";
}
/**
* forummutidelete
*/
/**
* 前台用户注销
*
* @return
*/
@RequestMapping(value = "loginout", method = RequestMethod.GET)
public String loginOut() {
session.invalidate();
return "redirect:/index";
}
/**
* 跳转注册用户
*
* @return
*/
@RequestMapping(value = "regst", method = RequestMethod.GET)
public String regst() {
return "proscenium/user/regst";
}
@RequestMapping(value = "regstform", method = RequestMethod.POST)
public String regst(String uname, String uemail, String upwd, String reupwd, Model model) {
if (uemail == null || upwd == null || uemail.trim().equals("") || upwd.trim().equals("")) {
model.addAttribute("msg", Msg.fail("用户名或密码不可为空,请重新输入!"));
} else if (!reupwd.equals(upwd)) {
model.addAttribute("msg", Msg.fail("密码不正确请重新输入!"));
} else {
userService.insertUser(uname, uemail, upwd);
model.addAttribute("msg", Msg.success("用户注册成功!"));
}
System.out.println(!uemail.trim().equals(""));
return "proscenium/user/regst";
}
/**
* 跳转个人信息
*/
@RequestMapping(value = "info", method = RequestMethod.GET)
public String info(String uid) {
User user = userService.userGet(uid);
String prefix = "/static/upload/useravatar/";
String suffix = user.getUpic();
user.setUpic(prefix+suffix);
session.setAttribute("user", user);
System.out.println(user);
}
//酒店
hotelExample.setOrderByClause("hid desc");
List<Hotel> hotels = hotelDao.selectByExample(hotelExample);
for (Hotel hotel : hotels) {
String suffix = hotel.getImgUrl();
hotel.setImgUrl(prefixHotel + suffix);
}
//传送景点
model.addAttribute("viewPoints", viewPoints);
model.addAttribute("hotels", hotels);
return "index";
}
}
@Controller
@RequestMapping(value = "traffic")
public class TrafficController {
@Autowired
TrafficDao trafficDao;
/**
*
* @param currentCity
* @param desCity
* @param model
* @return
*/
@ResponseBody
@RequestMapping(value = "selectByCurrentAndDestination", method = RequestMethod.GET)
if (uid != null){
return "proscenium/forum/edit";
}
model.addAttribute("msg", Msg.fail("您还未登录!"));
return "redirect:index";
}
/**
* content
*/
@RequestMapping(value = "savecontent", method = RequestMethod.POST)
public String saveContent(Forum forum, Model model){
forumDao.insert(forum);
model.addAttribute("msg", Msg.success("发帖成功"));
return "redirect:index";
}
/*############后台开始##############*/
}
@Controller
@RequestMapping(value = "view")
public class ViewPointController {
@Autowired
private ViewPointService viewPointService;
private HttpSession session;
@Autowired
private ViewPointExample viewPointExample;
@Autowired
private ViewPointDao viewPointDao;
/**
* 旅游景点跳转
/**
* 文件上传控制器
*/
@RequestMapping(value = "upload")
@Controller
public class UploadController {
@Autowired
private UserService userService;
@Autowired
private ViewPointService viewPointService;
/**
* 文件上传
* @param dropFile
* @param request
* @return
*/
@ResponseBody
@RequestMapping(value = "viewAvatar", method = RequestMethod.POST)
public Map<String, Object> viewAvatar(MultipartFile dropFile, HttpServletRequest request) {
Map<String, Object> result = new HashMap<>();
//文件存放路径
String filePath = "/static/upload/viewavatar/";
//获取文件后缀
String fileName = dropFile.getOriginalFilename();
String fileSuffix = fileName.substring(fileName.lastIndexOf('.'));
//文件存放路径
String realPath = request.getSession().getServletContext().getRealPath(filePath);
File file = new File(realPath);
//判断文件是否存在
//判断文件是否存在
if (!file.exists()){
file.mkdir();
}
file = new File(realPath, UUID.randomUUID() + fileSuffix);
try {
dropFile.transferTo(file);
} catch (IOException e) {
e.printStackTrace();
}
//传到前端
result.put("errno",0);
result.put("data",new String[] {prefix + file.getName()});
return result;
}
}
@Controller
@RequestMapping(value = "user")
public class UserController {
@Autowired
private UserService userService;
@Autowired
private HttpSession session;
@Autowired
private ForumDao forumDao;
@Autowired
}
}
/**
* 保存论坛留言信息
*/
@RequestMapping(value="/saveHotelWords")
public String saveHotelWords(Words words){
if(words != null){
String hid = words.getLw_hotel_id();
viewPointService.saveWords(words);
return "redirect:toHotelArticleView.do?hid=" + hid;
}else{
return null;
}
}
/**
* 跳转到论坛
*/
@RequestMapping(value="/toHotelArticleView")
public String toHotelArticleView(@RequestParam int hid, Model model){
//封装留言信息
lw_list = viewPointService.findByWords();
model.addAttribute("lw_list",lw_list);
//封装回复信息
lr_list = viewPointService.findByReply();
model.addAttribute("lr_list",lr_list);
//查询文章信息
Hotel hotel = hotelDao.selectByPrimaryKey(hid);
System.out.println("查询到当前文章的ID值:" + hotel.getHid());
if (hotel != null) {
model.addAttribute("hotel", hotel);
return "proscenium/hotel/content";
} else {
return null;
}
}
}
if(words != null){
String forumId = words.getLw_forumId();//获取什么类型的ID
viewPointService.saveWords(words);
return "redirect:toForumArticleView.do?tpFid=" + forumId;
}else{
return null;
}
}
/**
* 跳转到论坛
*/
@RequestMapping(value="/toForumArticleView")
public String toForumArticleView(@RequestParam int tpFid, Model model){
//封装留言信息
lw_list = viewPointService.findByWords();
model.addAttribute("lw_list",lw_list);
//封装回复信息
lr_list = viewPointService.findByReply();
model.addAttribute("lr_list",lr_list);
//查询文章信息
Forum forum = forumDao.selectByPrimaryKey(tpFid);
System.out.println("查询到当前文章的ID值:" + forum.getTpFid());
if (forum != null) {
model.addAttribute("forum", forum);
return "proscenium/forum/content";
} else {
return null;
}
}
/**
* 保存论坛回复信息
*/
return "admin/hotel_list";
}
/**
* 跳转
* 酒店管理列表
*/
@RequestMapping(value = "hotelcontent", method = RequestMethod.GET)
public String hotelContent(Integer hid, Model model) {
Hotel hotel = hotelDao.selectByPrimaryKey(hid);
String prefix = "/static/upload/hotelAvatar/";
String suffix = hotel.getImgUrl();
//前端img标签路径
hotel.setImgUrl(prefix + suffix);
model.addAttribute("hotel", hotel);
return "admin/hotel_content";
}
/**
* 跳转
* 酒店编辑
*/
@RequestMapping(value = "hoteledit", method = RequestMethod.GET)
public String hotelEdit(Integer hid, Model model) {
Hotel hotel = hotelDao.selectByPrimaryKey(hid);
model.addAttribute("hotel", hotel);
return "admin/hotel_edit";
}
/**
* 跳转景点更新业务
*/
@RequestMapping(value = "hoteledithandle", method = RequestMethod.POST)
public String hotelEditHandle(Hotel hotel) {
hotelDao.updateByPrimaryKeySelective(hotel);
session.setAttribute("msg", Msg.success("酒店信息保存成功!"));
return "redirect:hotellist";
}
/**
* 跳转景点更新业务
*/
*/
@RequestMapping(value = "wordsList", method = RequestMethod.GET)
public String wordsList(Model model) {
List<Words> byWords = viewPointService.findByWords();
model.addAttribute("byWords", byWords);
return "admin/words_list";
}
/**
* 留言批量删除
* @return
*/
@ResponseBody
@RequestMapping(value = "wordsMutiDelete", method = RequestMethod.GET)
public String wordsMutiDelete(Integer[] lw_ids, Model model) {
for (Integer lw_id : lw_ids){
wordsDao.deleteByPrimaryKey(lw_id);
}
model.addAttribute("msg", Msg.success(Arrays.toString(lw_ids) + "号删除成功!"));
return "1";
}
/**
* 单击删除
* @return
*/
@RequestMapping(value = "wordsDelete", method = RequestMethod.GET)
public String wordsDelete(Integer lw_id, Model model) {
wordsDao.deleteByPrimaryKey(lw_id);
model.addAttribute("msg", Msg.success(lw_id + "号删除成功!"));
return "redirect:wordsList";
}
/**
* 跳转回复列表
* @return
*/
@RequestMapping(value = "replyList", method = RequestMethod.GET)
public String ReplyList(Model model) {
List<Reply> replys = viewPointService.findByReply();
model.addAttribute("replys", replys);
return "admin/reply_list";
}
/**
* 回复批量删除
* @return
*/
@ResponseBody