基于javaweb+mysql的ssm+maven在线旅游系统(java+jsp+ssm+spring+mysql+maven)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM+Maven在线旅游系统(java+jsp+ssm+spring+mysql+maven)
一、项目简述
功能:用户的登录注册,旅游景点的展示,旅游预订,收藏,购买,以及酒店住宿留言等等,后台管理员,订单管理,景点管理,留言管理,分类管理吗,以及系统管理等等。
二、项目运行
环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Idea2019(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等
/**
* @Description: TODO(景点商家信息)
*/
@Controller
@RequestMapping("/sellers")
public class SellerController {
@Autowired
private ISellerService iSellerService;
@Autowired
private IUserService iUserService;
@RequestMapping("/findBySid.do")
@PreAuthorize("hasAnyAuthority('/sellers/findBySid.do')")
public ModelAndView findBySid(Integer sid) throws Exception {
ModelAndView mv = new ModelAndView();
Seller seller = iSellerService.findBySid(sid);
mv.addObject("sellerInfo",seller);
List<User> list = iUserService.findAll(1,1000,"%%");
mv.addObject("UList",list);
mv.setViewName("seller-update");
return mv;
}
@RequestMapping("/findUsers.do")
@PreAuthorize("hasAnyAuthority('/sellers/findUsers.do')")
public ModelAndView findUsers() throws Exception{
List<User> list = iSellerService.findUsers();
ModelAndView mv = new ModelAndView();
}
}
/**
* @Description: TODO(我的收藏)
*/
@WebServlet("/personal/*")
public class PersonalServlet extends BaseServlet {
private IPersonalService personalService = new PersonalServiceImpl();
/**
* 根据分页查询我的收藏
* @param request
* @param response
* @throws IOException
*/
public void findFavoriteByPage(HttpServletRequest request, HttpServletResponse response) throws IOException{
//1.获取参数
String uidStr = request.getParameter("uid");
String currentPageStr = request.getParameter("currentPage");
String pageSizeStr = request.getParameter("pageSize");
//2.处理参数
int uid = 0;
if (uidStr != null && uidStr.length() > 0 && !"null".equals(uidStr)){
uid = Integer.parseInt(uidStr);
}
int currentPage = 1;//当前页码,如果不传递,则默认为第一页
if(currentPageStr != null && currentPageStr.length() > 0){
currentPage = Integer.parseInt(currentPageStr);
}
int pageSize = 8;//每页显示条数,如果不传递,默认每页显示5条记录
if(pageSizeStr != null && pageSizeStr.length() > 0){
pageSize = Integer.parseInt(pageSizeStr);
}
//3.调用service查询PageBean对象
PageBean<Route> pb = personalService.pageQuery(uid, currentPage, pageSize);
//4. 将pageBean对象序列化为json,返回
writeValue(pb,response);
}
/**
private IPersonalService personalService = new PersonalServiceImpl();
/**
* 根据分页查询我的收藏
* @param request
* @param response
* @throws IOException
*/
public void findFavoriteByPage(HttpServletRequest request, HttpServletResponse response) throws IOException{
//1.获取参数
String uidStr = request.getParameter("uid");
String currentPageStr = request.getParameter("currentPage");
String pageSizeStr = request.getParameter("pageSize");
//2.处理参数
int uid = 0;
if (uidStr != null && uidStr.length() > 0 && !"null".equals(uidStr)){
uid = Integer.parseInt(uidStr);
}
int currentPage = 1;//当前页码,如果不传递,则默认为第一页
if(currentPageStr != null && currentPageStr.length() > 0){
currentPage = Integer.parseInt(currentPageStr);
}
int pageSize = 8;//每页显示条数,如果不传递,默认每页显示5条记录
if(pageSizeStr != null && pageSizeStr.length() > 0){
pageSize = Integer.parseInt(pageSizeStr);
}
//3.调用service查询PageBean对象
PageBean<Route> pb = personalService.pageQuery(uid, currentPage, pageSize);
//4. 将pageBean对象序列化为json,返回
writeValue(pb,response);
}
/**
* 查询我的留言
* @param request
* @param response
* @throws IOException
*/
public void findMessageByPage(HttpServletRequest request, HttpServletResponse response) throws IOException{
//1.获取参数
String uidStr = request.getParameter("uid");
String currentPageStr = request.getParameter("currentPage");
String pageSizeStr = request.getParameter("pageSize");
//2.处理参数
}
/**
* @Description: TODO(酒店相关操作)
*/
@WebServlet("/hotel/*")
public class HotelServlet extends BaseServlet {
private IHotelService hotelService = new HotelServiceImpl();
/**
* 分页查询酒店
* @param request
* @param response
* @throws IOException
*/
public void pageQuery(HttpServletRequest request, HttpServletResponse response) throws IOException {
//1.接受参数
String currentPageStr = request.getParameter("currentPage");
String pageSizeStr = request.getParameter("pageSize");
int currentPage = 0;//当前页面,如果不传递,则默认为第一页
if (currentPageStr != null && currentPageStr.length() > 0){
currentPage = Integer.parseInt(currentPageStr);
}else{
currentPage = 1;
}
int pageSize = 0;//每页显示条数,如果不传递,默认每页显示5条数记录
if (pageSizeStr != null && pageSizeStr.length() > 0){
pageSize = Integer.parseInt(pageSizeStr);
/**
* @Description: TODO(注册、登录、退出)
*/
@WebServlet("/user/*")
public class UserServlet extends BaseServlet {
//声明UserService业务对象
private IUserService service = new UserServiceImpl();
/**
* 校验验证码
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public boolean checkCodeMethod(HttpServletRequest request, HttpServletResponse response) throws IOException {
String check = request.getParameter("check");
//从sesion中获取验证码
HttpSession session = request.getSession();
String checkcode_server = (String)session.getAttribute("CHECKCODE_SERVER");
session.removeAttribute("CHECKCODE_SERVER");//为了保证验证码只能使用一次
if(checkcode_server == null || !checkcode_server.equalsIgnoreCase(check)){
ResultInfo info = new ResultInfo();
//验证码错误
if ("".equals(check)){
info.setErrorMsg("验证码不能为空");
}else{
info.setErrorMsg("验证码错误");
}
info.setFlag(false);
//将info对象序列化为json,响应数据
response.setContentType("application/json;charset=utf-8");
String json = writeValueAsString(info);
response.getWriter().write(json);
return false;
}
return true;
}
/**
* 注册功能
/**
* @Description: TODO(用户操作)
*/
@Controller
@RequestMapping("/users")
public class UserController {
@Autowired
private IUserService userService;
//给用户添加角色
@RequestMapping("/addRoleToUser.do")
@PreAuthorize("hasAnyAuthority('/users/addRoleToUser.do')")
public String addRoleToUser(@RequestParam(name = "userId", required = true) Integer userId, @RequestParam(name = "ids", required = true) int[] roleIds) throws Exception {
userService.addRoleToUser(userId, roleIds);
return "redirect:findAll.do";
}
//查询用户以及用户可以添加的角色
@RequestMapping("/findUserByIdAndAllRole.do")
@PreAuthorize("hasAnyAuthority('/users/findUserByIdAndAllRole.do')")
public ModelAndView findUserByIdAndAllRole(@RequestParam(name = "id", required = true) Integer uid) throws Exception {
ModelAndView mv = new ModelAndView();
//1.根据用户id查询用户
User user = userService.findByUid(uid);
//2.根据用户id查询可以添加的角色
List<Role> otherRoles = userService.findOtherRoles(uid);
mv.addObject("user", user);
mv.addObject("roleList", otherRoles);
public ModelAndView findAll(
@RequestParam(name = "page",defaultValue = "1")Integer page,
@RequestParam(name = "size",defaultValue = "10")Integer size,
@RequestParam(name = "search",defaultValue = "")String search
) throws Exception{
ModelAndView mv = new ModelAndView();
List<Hotel> list = hotelService.findAll(page,size,"%"+search+"%");
PageInfo pageInfo = new PageInfo(list);
mv.addObject("pageInfo",pageInfo);
mv.setViewName("hotel-list");
return mv;
}
}
/**
* @Description: TODO(用户操作)
*/
@Controller
@RequestMapping("/users")
public class UserController {
@Autowired
private IUserService userService;
//给用户添加角色
@RequestMapping("/addRoleToUser.do")
@PreAuthorize("hasAnyAuthority('/users/addRoleToUser.do')")
public String addRoleToUser(@RequestParam(name = "userId", required = true) Integer userId, @RequestParam(name = "ids", required = true) int[] roleIds) throws Exception {
userService.addRoleToUser(userId, roleIds);
return "redirect:findAll.do";
}
//查询用户以及用户可以添加的角色
@RequestMapping("/findUserByIdAndAllRole.do")
@PreAuthorize("hasAnyAuthority('/users/findUserByIdAndAllRole.do')")
public ModelAndView findUserByIdAndAllRole(@RequestParam(name = "id", required = true) Integer uid) throws Exception {
ModelAndView mv = new ModelAndView();
//1.根据用户id查询用户
User user = userService.findByUid(uid);
public void writeValue(Object obj,HttpServletResponse response) throws IOException {
ObjectMapper mapper = new ObjectMapper();
response.setContentType("application/json;charset=utf-8");
mapper.writeValue(response.getOutputStream(),obj);
}
/**
* 将传入的对象序列化为json,返回
* @param obj
* @return
*/
public String writeValueAsString(Object obj) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(obj);
}
}
/**
* @Description: TODO(收藏排行榜)
*/
@WebServlet("/favoriteTop/*")
public class TopServlet extends BaseServlet {
private ITopService topService = new TopServiceImpl();
public void pageQuery(HttpServletRequest request, HttpServletResponse response) throws IOException {
//获取参数
String currentPageStr = request.getParameter("currentPage");
String rname = request.getParameter("rname");
String smoneyStr = request.getParameter("smoney");
String emoneyStr = request.getParameter("emoney");
String pageSizeStr = request.getParameter("pageSize");
mv.setViewName("route-add");
return mv;
}
//新增景点线路
@RequestMapping("/save.do")
@PreAuthorize("hasAnyAuthority('/routes/save.do')")
public String save(Route route) throws Exception{
if (route.getRimageStr()!=null){
String filename = Upload.uploadImg(RIMAGE,route.getRimageStr());
route.setRimage("img/product/small/"+filename);
routeService.saveRoute(route);
}
return "redirect:findAll.do";
}
//删除景点线路
@RequestMapping("/delete.do")
@PreAuthorize("hasAnyAuthority('/routes/delete.do')")
public String delete(Integer rid) throws Exception{
routeService.delete(rid);
return "redirect:findAll.do";
}
//修改景点线路
@RequestMapping("/update.do")
@PreAuthorize("hasAnyAuthority('/routes/update.do')")
public String update(Route route) throws Exception{
if (route.getRimageStr().getSize()!=0&&route.getRimageStr()!=null){//修改过图片
String filename = Upload.uploadImg(RIMAGE,route.getRimageStr());
route.setRimage("img/product/small/"+filename);
routeService.update(route);
}else{//未修改图片
routeService.update(route);
}
return "redirect:findAll.do";
}
//根据rid查询线路信息
@RequestMapping("/findByRid.do")
@PreAuthorize("hasAnyAuthority('/routes/findByRid.do')")
public ModelAndView findByRid(Integer rid) throws Exception{
ModelAndView mv = new ModelAndView();
Route route = routeService.findByRid(rid);
mv.addObject("routeInfo",route);
List<Category> clist = categoryService.findAllCName();
List<Seller> slist = sellerService.findAll();
mv.addObject("CList",clist);
mv.addObject("SList",slist);
mv.setViewName("route-update");
return mv;
}
User user = userService.findByUid(uid);
mv.addObject("user", user);
mv.setViewName("user-details");
return mv;
}
//查询用户相关信息
@RequestMapping("/findAll.do")
@PreAuthorize("hasAnyAuthority('/users/findAll.do')")
public ModelAndView findAll(
@RequestParam(name="page",required = true, defaultValue = "1") Integer page,
@RequestParam(name="size",required = true, defaultValue = "6") Integer size,
@RequestParam(name="username",required = true, defaultValue = "") String username
) throws Exception{
ModelAndView mv = new ModelAndView();
List<User> userList = userService.findAll(page,size,"%"+username+"%");
PageInfo pageInfo = new PageInfo(userList);
mv.addObject("pageInfo",pageInfo);
mv.setViewName("user-list");
return mv;
}
}
/**
* @Description: TODO(角色信息)
*/
@Controller
@RequestMapping("/roles")
public class RoleController {
@Autowired
private IRoleService roleService;
//添加一个角色
@RequestMapping("/save.do")
@PreAuthorize("hasAnyAuthority('/roles/save.do')")
public String save(Role role) throws Exception {
public String delete(Integer rid) throws Exception{
routeService.delete(rid);
return "redirect:findAll.do";
}
//修改景点线路
@RequestMapping("/update.do")
@PreAuthorize("hasAnyAuthority('/routes/update.do')")
public String update(Route route) throws Exception{
if (route.getRimageStr().getSize()!=0&&route.getRimageStr()!=null){//修改过图片
String filename = Upload.uploadImg(RIMAGE,route.getRimageStr());
route.setRimage("img/product/small/"+filename);
routeService.update(route);
}else{//未修改图片
routeService.update(route);
}
return "redirect:findAll.do";
}
//根据rid查询线路信息
@RequestMapping("/findByRid.do")
@PreAuthorize("hasAnyAuthority('/routes/findByRid.do')")
public ModelAndView findByRid(Integer rid) throws Exception{
ModelAndView mv = new ModelAndView();
Route route = routeService.findByRid(rid);
mv.addObject("routeInfo",route);
List<Category> clist = categoryService.findAllCName();
List<Seller> slist = sellerService.findAll();
mv.addObject("CList",clist);
mv.addObject("SList",slist);
mv.setViewName("route-update");
return mv;
}
//查询所有线路
@RequestMapping("/findAll.do")
@PreAuthorize("hasAnyAuthority('/routes/findAll.do')")
public ModelAndView findAll(
@RequestParam(name="page",required = true, defaultValue = "1") Integer page,
@RequestParam(name="size",required = true, defaultValue = "10") Integer size,
@RequestParam(name="rname",required = true, defaultValue = "") String rname
) throws Exception{
ModelAndView mv = new ModelAndView();
List<Route> list = routeService.findAll(page,size,"%"+rname+"%");
PageInfo pageInfo = new PageInfo(list);
mv.addObject("pageInfo",pageInfo);
mv.setViewName("route-list");
return mv;
}
//修改酒店信息
@RequestMapping("/findU.do")
public ModelAndView findU(Integer hid) throws Exception{
ModelAndView mv = new ModelAndView();
Hotel hotel = hotelService.findByHid(hid);
mv.addObject("hotel",hotel);
List<User> list = iUserService.findAll(1,100,"%%");
mv.addObject("UList",list);
mv.setViewName("hotel-update");
return mv;
}
@RequestMapping("/update.do")
public String update(Hotel hotel) throws Exception{
if (hotel.getHimageFile().getSize()!=0&&hotel.getHimageFile()!=null){//修改过图片
String filename = Upload.uploadImg(HIMAGE,hotel.getHimageFile());
hotel.setHimage("img/hotel/"+filename);
hotelService.update(hotel);
}else{//未修改图片
hotelService.update(hotel);
}
return "redirect:findAll.do";
}
//查询所有订单
@RequestMapping("/findAll.do")
public ModelAndView findAll(
@RequestParam(name = "page",defaultValue = "1")Integer page,
@RequestParam(name = "size",defaultValue = "10")Integer size,
@RequestParam(name = "search",defaultValue = "")String search
) throws Exception{
ModelAndView mv = new ModelAndView();
List<Hotel> list = hotelService.findAll(page,size,"%"+search+"%");
PageInfo pageInfo = new PageInfo(list);
mv.addObject("pageInfo",pageInfo);
mv.setViewName("hotel-list");
return mv;
}
}
user_cookie.setPath("/");
response.addCookie(user_cookie);
pswd_cookie.setMaxAge(0);
pswd_cookie.setPath("/");
response.addCookie(pswd_cookie);
reme_cookie.setMaxAge(0);
reme_cookie.setPath("/");
response.addCookie(reme_cookie);
}
if (!checkCodeMethod(request,response)){
return;
}
request.getSession().setAttribute("user",u);//登录成功标记
//登录成功
info.setFlag(true);
}
//响应数据
writeValue(info,response);
}
/**
* 查询一个
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void findOne(HttpServletRequest request, HttpServletResponse response) throws IOException {
//从session中获取登录用户
Object user = request.getSession().getAttribute("user");
//将user写回客户端
writeValue(user,response);
}
/**
* 退出功能
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void exit(HttpServletRequest request, HttpServletResponse response) throws IOException {
return;
}
//1.获取数据,封装对象
Map<String, String[]> map = request.getParameterMap();
User user = new User();
try {
BeanUtils.populate(user,map);
} catch (Exception e) {
e.printStackTrace();
}
//2.调用service完成注册
boolean flag = false;
if (user.getUsername() != null){
flag = service.regist(user);
}
ResultInfo info = new ResultInfo();
if(flag){//注册成功
info.setFlag(true);
}else {//注册失败
info.setFlag(false);
info.setErrorMsg("用户名已存在!");
}
//3.将info对象序列化为json,响应数据
String json = writeValueAsString(info);
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);
}
/**
* 登录功能
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void login(HttpServletRequest request, HttpServletResponse response) throws Exception {
//1.获取用户名和密码数据
String username = request.getParameter("username");
String password = request.getParameter("password");
String remember = request.getParameter("remember");
username = username != null ? username : "";
password = password != null ? password : "";
remember = remember != null ? remember : "";
User user = new User();
user.setUsername(username);
user.setPassword(password);
//3.调用Service查询
@RequestParam(name="search",required = true, defaultValue = "") String search
)throws Exception{
ModelAndView mv = new ModelAndView();
List<Seller> list = iSellerService.findAlls(page,size,"%"+search+"%");
PageInfo pageInfo = new PageInfo(list);
mv.addObject("pageInfo",pageInfo);
mv.setViewName("seller-list");
return mv;
}
//删除商家
@RequestMapping("/delete.do")
@PreAuthorize("hasAnyAuthority('/sellers/delete.do')")
public String delete(Integer sid) throws Exception{
iSellerService.delete(sid);
return "redirect:findAlls.do";
}
//修改商家
@RequestMapping("/update.do")
@PreAuthorize("hasAnyAuthority('/sellers/update.do')")
public String update(Seller seller) throws Exception{
iSellerService.update(seller);
return "redirect:findAlls.do";
}
}
/**
}
}
/**
* @Description: TODO(景点分类)
*/
@Controller
@RequestMapping("/cates")
public class CategoryController {
@Autowired
private ICategoryService categoryService;
//新增分类
@RequestMapping("/save.do")
@PreAuthorize("hasAnyAuthority('/cates/save.do')")
public String save(Category category) throws Exception{
categoryService.save(category);
return "redirect:findAll.do";
}
//删除分类
@RequestMapping("/delete.do")
@PreAuthorize("hasAnyAuthority('/cates/delete.do')")
public String delete(Integer cid) throws Exception{
categoryService.delete(cid);
return "redirect:findAll.do";
}
//修改分类
/**
* @Description: TODO(我的收藏)
*/
@WebServlet("/personal/*")
public class PersonalServlet extends BaseServlet {
private IPersonalService personalService = new PersonalServiceImpl();
/**
* 根据分页查询我的收藏
* @param request
* @param response
* @throws IOException
*/
public void findFavoriteByPage(HttpServletRequest request, HttpServletResponse response) throws IOException{
//1.获取参数
String uidStr = request.getParameter("uid");
String currentPageStr = request.getParameter("currentPage");
String pageSizeStr = request.getParameter("pageSize");
//2.处理参数
int uid = 0;
if (uidStr != null && uidStr.length() > 0 && !"null".equals(uidStr)){
uid = Integer.parseInt(uidStr);
}
int currentPage = 1;//当前页码,如果不传递,则默认为第一页
if(currentPageStr != null && currentPageStr.length() > 0){
currentPage = Integer.parseInt(currentPageStr);
}
int pageSize = 8;//每页显示条数,如果不传递,默认每页显示5条记录
if(pageSizeStr != null && pageSizeStr.length() > 0){
pageSize = Integer.parseInt(pageSizeStr);
}
//3.调用service查询PageBean对象
PageBean<Route> pb = personalService.pageQuery(uid, currentPage, pageSize);
//4. 将pageBean对象序列化为json,返回
writeValue(pb,response);
}
/**
* 查询我的留言
* @param request
* @param response