基于javaweb+mysql的jsp+servlet旅游管理系统(java+jsp+html+bootstrap+servlet+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的JSP+Servlet旅游管理系统(java+jsp+html+bootstrap+servlet+mysql)
项目介绍
本项目分为前台与后台,前台为游客浏览,后台为管理员管理;
管理员角色包含以下功能: 管理员登录,管留言信息修改,景点管理,资讯管理,图片库管理,留言管理,管理员管理等功能。
用户角色包含以下功能: 用户首页,景点介绍,人文地理,地区资讯,留言等功能。
环境需要
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版本; 6.是否Maven项目:否;
技术栈
HTML5+Ajax+CSS+JavaScript+BootStrap+jQuery+servlet+mysql
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中util/db.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,前台运行地址输入http://localhost:8080/travel 登录 后台运行地址输入http://localhost:8080/travel/admin 登录 管理员账号/密码:admin/admin
@WebServlet("/admin/ScenEdit")
public class ScenEdit extends HttpServlet {
private static final long serialVersionUID = 1L;
ScenOperator scenOperator=new ScenOperator();
/**
* @see HttpServlet#HttpServlet()
*/
public ScenEdit() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 上下文
PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true,
8 * 1024, true);
// 上传到目录个数
int count = 0;
int scenid=0;
String scenname = null;// 名表横
String scenintro = null;// 介绍
String scenlevel = null;// 星级
String scentitle = null;// 标题
String scenfeature = null;// 特色
String scentraff = null;// 交通
String scenmap = null;// 地图
String picpath = null;// 图片
String scenadd = null;// 地址
String scennameen = null;// 英文名
int scenorder=0;
String scenurl=null;
// 景点对象
Scen scen=null;
json.put("info_date", info.getInfo_date());
System.out.println("InfoShow---:"+info.getInfo_date());
json.put("info_order", info.getInfo_order());
// 将Json对象放入数组
infoMore.add(json);
}
// 传到页面
out.print(infoMore);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
/**
* Servlet implementation class BannerDel
* 根据Id删除轮播图片
*/
@WebServlet("/admin/BannerDel")
public class BannerDel extends HttpServlet {
private static final long serialVersionUID = 1L;
BanOperator banOperator = new BanOperator();
/**
* Servlet implementation class BannerAdd
*/
@WebServlet("/admin/BannerAdd")
public class BannerAdd extends HttpServlet {
private static final long serialVersionUID = 1L;
BanOperator banOperator = new BanOperator();
/**
* @see HttpServlet#HttpServlet()
*/
public BannerAdd() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 获取要删除的ID
int banid = Integer.parseInt(request.getParameter("banid"));
// 删除的文件的路径
String banpath = request.getParameter("banpath");
System.out.println("删除轮播图" + banid);
if (banOperator.delBan(banid)) {
// 获取要删除的图片或者文件的绝对路径
File file = new File(request.getServletContext().getRealPath(getServletInfo()) + "/" + banpath);
// 路径和文件名称
System.out.println(file.getPath());
System.out.println(file.getName());
// 如果文件存在
if (file.exists()) {
//file.delete();
System.out.println("删除成功");
out.flush();// 清空缓存
out.println("<script>");// 输出script标签
out.println("alert('删除成功!');");// js语句:输出alert语句
out.println("history.back();");// js语句:输出网页回退语句
out.println("</script>");// 输出script结尾标签
} else {
System.out.println("删除失败,文件不存在!");
out.flush();// 清空缓存
out.println("<script>");// 输出script标签
out.println("alert('删除失败,文件不存在!');");// js语句:输出alert语句
out.print(scenMore);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
/**
* Servlet implementation class UserList
*/
@WebServlet("/admin/UserList")
public class UserList extends HttpServlet {
private static final long serialVersionUID = 1L;
UserOperator userOperator=new UserOperator();
/**
* @see HttpServlet#HttpServlet()
*/
public UserList() {
super();
// TODO Auto-generated constructor stub
* 删除景点
*/
@WebServlet("/admin/ScenDel")
public class ScenDel extends HttpServlet {
private static final long serialVersionUID = 1L;
ScenOperator scenOperator=new ScenOperator();
/**
* @see HttpServlet#HttpServlet()
*/
public ScenDel() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
//获取要删除的景点ID
int scenid=Integer.parseInt(request.getParameter("scenid"));
//景点图片
String scenpic=request.getParameter("scenpic");
System.out.println("/admin/ScenDel");
if (scenOperator.delScen(scenid)) {
//获取要删除的图片或者文件的绝对路径
File file = new File(request.getServletContext().getRealPath(getServletInfo())+"/"+scenpic);
//路径和文件名称
System.out.println(file.getPath());
System.out.println(file.getName());
//如果文件存在
if (file.exists()) {
//file.delete();
System.out.println("删除成功");
out.flush();// 清空缓存
out.println("<script>");// 输出script标签
out.println("alert('删除成功!');");// js语句:输出alert语句
out.println("history.back();");// js语句:输出网页回退语句
out.println("</script>");// 输出script结尾标签
}
else {
System.out.println("删除失败,文件不存在!");
out.flush();// 清空缓存
out.println("<script>");// 输出script标签
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//删除资讯的ID
int infoid = Integer.parseInt(request.getParameter("infoid"));
//删除的文件名称
String infopic=request.getParameter("infopic");
System.out.println("/admin/InfoDel:" + infoid);
if (infoOperator.delInfo(infoid)) {
//获取要删除的图片或者文件的绝对路径
File file = new File(request.getServletContext().getRealPath(getServletInfo())+"/"+infopic);
//路径和文件名称
System.out.println(file.getPath());
System.out.println(file.getName());
//如果文件存在
if (file.exists()) {
//file.delete();
System.out.println("删除成功");
out.flush();// 清空缓存
out.println("<script>");// 输出script标签
out.println("alert('删除成功!');");// js语句:输出alert语句
out.println("history.back();");// js语句:输出网页回退语句
out.println("</script>");// 输出script结尾标签
}
else {
System.out.println("删除失败,文件不存在!");
out.flush();// 清空缓存
out.println("<script>");// 输出script标签
out.println("alert('删除失败,文件不存在!');");// js语句:输出alert语句
out.println("history.back();");// js语句:输出网页回退语句
out.println("</script>");// 输出script结尾标签
}
}
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
// 上传到目录个数
int count = 0;
String info_title = null;
String info_txt = null;
String info_tag = null;
String info_pic = null;
String info_url = null;
int info_order = 0;
// 资讯实体对象
Info info = null;
System.out.println("资讯图片上传--/admin/InfoAdd");
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 上传初始化
su.initialize(pageContext);
// 设置上传限制
// 1.限制每个上传文件的最大长度为10MB
su.setMaxFileSize(10 * 1024 * 1024);
// 2.限制总上传文件的长度
su.setTotalMaxFileSize(30 * 1024 * 1024);
// 3.设定允许上传的文件
su.setAllowedFilesList("gif,jpg,png,jpeg,bmp,ico");
// 4.设定禁止上传的文件
try {
su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("不允许上传此类文件");
e.printStackTrace();
}
// 上传文件
try {
su.upload();
} catch (SmartUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// request.getRemoteAddr();
System.out.println("*--------------------------------------------------*");
System.out.println("新增留言:MsgAdd");
String author = null;
String msg_text = null;
String msg_ip = null;
String email = null;
author = request.getParameter("author");
email = request.getParameter("email");
msg_text = request.getParameter("msg_text");
msg_ip = getIpAddress(request);
System.out.println("IpAddr" + msg_ip);
Msg msg = new Msg(author, msg_text, msg_ip, msg_ip, email);
if (msgOperator.addMsg(msg)) {
System.out.println("留言成功!");
out.flush();// 清空缓存
out.println("<script>");// 输出script标签
out.println("alert('留言成功!');");// js语句:输出alert语句
out.println("history.back();");// js语句:输出网页回退语句
out.println("</script>");// 输出script结尾标签
}
else {
System.out.println("留言失败!");
out.flush();// 清空缓存
out.println("<script>");// 输出script标签
out.println("alert('留言失败!');");// js语句:输出alert语句
out.println("history.back();");// js语句:输出网页回退语句
out.println("</script>");// 输出script结尾标签
}
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String info_date = null;
int info_order = 0;
// 资讯实体对象
Info info = null;
System.out.println("资讯图片上传");
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 上传初始化
su.initialize(pageContext);
// 设置上传限制
// 1.限制每个上传文件的最大长度为10MB
su.setMaxFileSize(10 * 1024 * 1024);
// 2.限制总上传文件的长度
su.setTotalMaxFileSize(30 * 1024 * 1024);
// 3.设定允许上传的文件
su.setAllowedFilesList("gif,jpg,png,jpeg,bmp,ico");
// 4.设定禁止上传的文件
try {
su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("不允许上传此类文件");
e.printStackTrace();
}
// 上传文件
try {
su.upload();
} catch (SmartUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 将上传的文件全部保存到指定目录
// 图片轮播的路径
try {
count = su.save("/image/info");
} catch (SmartUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
json.put("info_pic", info.getInfo_pic());
json.put("info_url", info.getInfo_url());
json.put("info_date", info.getInfo_date());
System.out.println("InfoShow---:"+info.getInfo_date());
json.put("info_order", info.getInfo_order());
// 将Json对象放入数组
infoMore.add(json);
}
// 传到页面
out.print(infoMore);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
/**
* Servlet implementation class BannerDel
* 根据Id删除轮播图片
/**
* Servlet implementation class InfoEdit
*/
@WebServlet("/admin/InfoEdit")
public class InfoEdit extends HttpServlet {
private static final long serialVersionUID = 1L;
InfoOperator infoOperator = new InfoOperator();
/**
* @see HttpServlet#HttpServlet()
*/
public InfoEdit() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 上下文
PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true,
8 * 1024, true);
// 上传到目录个数
int count = 0;
//遍历该集合
for (int i = 0; i < list.size(); i++) {
// Json对象
JSONObject json=new JSONObject();
// 查询结果集
Scen scen = list.get(i);
//讲遍历对象的值分别放进json对象
json.put("scenid", scen.getScenid());
json.put("scenname", scen.getScenname());
json.put("scenlevel",scen.getScenlevel());
json.put("scentitle", scen.getScentitle());
json.put("scenadd", scen.getScenadd());
json.put("scenurl", scen.getScenurl());
json.put("scenpic", scen.getPicpath());
json.put("scenfeature", scen.getScenfeature());
// 将Json对象放入数组
scenJson.add(json);
}
// 将json数组传到页面
out.print(scenJson);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("不允许上传此类文件");
e.printStackTrace();
}
// 上传文件
try {
su.upload();
} catch (SmartUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 将上传的文件全部保存到指定目录
// 图片轮播的路径
try {
count = su.save("/image/scen");
} catch (SmartUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(count + "个文件上传成功!");
// 利用Request对象获取参数之值
// 逐一提取上传文件信息,同时可保存文件
for (int i = 0; i < su.getFiles().getCount(); i++) {
File file = su.getFiles().getFile(i);
// 若文件不存在则继续
if (file.isMissing()) {
continue;
}
scenname = su.getRequest().getParameter("scen-name");
scenintro = su.getRequest().getParameter("scen-intro");
scenlevel = su.getRequest().getParameter("scen-level");
scentitle = su.getRequest().getParameter("scen-title");
scenfeature = su.getRequest().getParameter("scen-feature");
scentraff = su.getRequest().getParameter("scen-traff");
scenmap = su.getRequest().getParameter("scen-map");
picpath = "image/scen/" + file.getFileName();
scenadd = su.getRequest().getParameter("scen-add");
scennameen = su.getRequest().getParameter("scen-name-en");
scenorder=Integer.parseInt(su.getRequest().getParameter("scen-order"));
scenurl=su.getRequest().getParameter("scen-url");
scen = new Scen(scenname, scenintro, scenlevel, scentitle, scenfeature, scentraff, scenmap, picpath, scenadd, scennameen, scenorder, scenurl);
if (scenOperator.addScen(scen)) {
/*---------------------------------------------------------*/
*/
public ScenEdit() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 上下文
PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true,
8 * 1024, true);
// 上传到目录个数
int count = 0;
int scenid=0;
String scenname = null;// 名表横
String scenintro = null;// 介绍
String scenlevel = null;// 星级
String scentitle = null;// 标题
String scenfeature = null;// 特色
String scentraff = null;// 交通
String scenmap = null;// 地图
String picpath = null;// 图片
String scenadd = null;// 地址
String scennameen = null;// 英文名
int scenorder=0;
String scenurl=null;
// 景点对象
Scen scen=null;
System.out.println("景点图片上传");
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 上传初始化
su.initialize(pageContext);
// 设置上传限制
// 1.限制每个上传文件的最大长度为10MB
su.setMaxFileSize(10 * 1024 * 1024);
// 2.限制总上传文件的长度
su.setTotalMaxFileSize(30 * 1024 * 1024);
// 3.设定允许上传的文件
su.setAllowedFilesList("gif,jpg,png,jpeg,bmp,ico");
// 4.设定禁止上传的文件
try {
su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
Scen scen = list.get(i);
//讲遍历对象的值分别放进json对象
json.put("scenid", scen.getScenid());
json.put("scenname", scen.getScenname());
json.put("scenlevel",scen.getScenlevel());
json.put("scentitle", scen.getScentitle());
json.put("scenadd", scen.getScenadd());
json.put("scenurl", scen.getScenurl());
json.put("scenpic", scen.getPicpath());
json.put("scenfeature", scen.getScenfeature());
// 将Json对象放入数组
scenJson.add(json);
}
// 将json数组传到页面
out.print(scenJson);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
int banid=0;
String banname=null;
String bantitle=null;
String banpath=null;
Banner banner=null;
System.out.println("轮播图片编辑");
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 上传初始化
su.initialize(pageContext);
// 设置上传限制
// 1.限制每个上传文件的最大长度为10MB
su.setMaxFileSize(10 * 1024 * 1024);
// 2.限制总上传文件的长度
su.setTotalMaxFileSize(30 * 1024 * 1024);
// 3.设定允许上传的文件
su.setAllowedFilesList("gif,jpg,png,jpeg,bmp,ico");
// 4.设定禁止上传的文件
try {
su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("不允许上传此类文件");
e.printStackTrace();
}
// 上传文件
try {
su.upload();
} catch (SmartUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 将上传的文件全部保存到指定目录
// 图片轮播的路径
try {
count = su.save("/image/banner");
} catch (SmartUploadException e) {