基于javaweb+mysql的jsp+servlet家政服务系统(java+jsp+jquery+servlet+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的JSP+Servlet家政服务系统(java+jsp+jquery+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项目:否;
技术栈
JSP+CSS+JavaScript+jquery+Servlet+mysql
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中dao/CommDAO.java配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/jsp_jzfw_site 登录
if(FileUpload.isMultipartContent(requestContext)){
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File(request.getRealPath("/upfile/")+"/"));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(100*1024*1024);
List items = new ArrayList();
items = upload.parseRequest(request);
FileItem fileItem = (FileItem) items.get(0);
if(fileItem.getName()!=null && fileItem.getSize()!=0)
{
if(fileItem.getName()!=null && fileItem.getSize()!=0){
File fullFile = new File(fileItem.getName());
filename = Info.generalFileName(fullFile.getName());
File newFile = new File(request.getRealPath("/upfile/")+"/" + filename);
try {
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
}else{
}
}
}
go("/js/uploadimg3.jsp?filename="+filename, request, response);
} catch (Exception e1) {
e1.printStackTrace();
}
}
if(ac.equals("uploadimg4"))
{
try {
String filename="";
request.setCharacterEncoding("UTF-8");
RequestContext requestContext = new ServletRequestContext(request);
if(FileUpload.isMultipartContent(requestContext)){
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File(request.getRealPath("/upfile/")+"/"));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(100*1024*1024);
List items = new ArrayList();
{
request.getSession(). setAttribute("username", userlist1.get(0).get("username"));
request.getSession(). setAttribute("cx", userlist1.get(0).get("cx"));
gor("main.jsp", request, response);
}else{
request.setAttribute("error", "");
go("/login.jsp", request, response);
}
}
}
//修改密码
if(ac.equals("uppass"))
{
String olduserpass = request.getParameter("ymm");
String userpass = request.getParameter("xmm1");
String copyuserpass = request.getParameter("xmm2");
HashMap m = dao.getmaps("yonghuming",(String)request.getSession().getAttribute("username"), "yonghuzhuce");
if(!(((String)m.get("mima")).equals(olduserpass)))
{
request.setAttribute("error", "");
go("mod2.jsp", request, response);
}else{
//String id = (String)user.get("id");
String sql = "update yonghuzhuce set mima='"+userpass+"' where yonghuming='"+(String)request.getSession().getAttribute("username")+"'";
dao.commOper(sql);
request.setAttribute("suc", "");
go("mod2.jsp", request, response);
}
}
//修改密码
if(ac.equals("adminuppass"))
{
String olduserpass = request.getParameter("ymm");
String userpass = request.getParameter("xmm1");
String copyuserpass = request.getParameter("xmm2");
//println(Info.getUser(request).get("id").toString());
HashMap m = dao.getmaps("username",(String)request.getSession().getAttribute("username"), "allusers");
if(!(((String)m.get("pwd")).equals(olduserpass)))
{
request.setAttribute("error", "");
go("mod.jsp", request, response);
}else{
//String id = (String)user.get("id");
String sql = "update allusers set pwd='"+userpass+"' where username='"+(String)request.getSession().getAttribute("username")+"'";
dao.commOper(sql);
request.setAttribute("suc", "");
go("mod.jsp", request, response);
done = false;
}
} else {
end = end + to.length();
subLowcase2 = sourceLowcase.substring(end, source.length());
sub2 = source.substring(end, source.length());
sourceLowcase = subLowcase1 + subLowcase2;
source = sub1 + sub2;
}
//System.out.println(start+" "+end);
}
return source;
}
public static void delPic(String path, String img) {
if (img != null) {
if (!img.equals("")) {
File file1 = new File(path + "/" + img);
if (file1.exists()) {
file1.deleteOnExit();
// file1.delete();
}
}
}
}
}
public class PageManager {
private PageManager() {
}
// 默认一页最大记录数
public static final int DEFAULTPAGESIZE = 20;
// 分页段
public static final int segment = 10;
// 当前页数
protected int currentPage;
// 一页长度
protected int pageSize;
// 总页数
protected long pageNumber;
// 总记录数
protected long count;
// 数据
protected Collection collection;
// 数据查询对象
protected CommDAO dao = new CommDAO();
// 表现层代码
protected String info;
// 请求路径
protected String path;
// 服务器请求对象
protected HttpServletRequest request;
/*
* 仅仅只是加到路径中去
*/
if (source == null) return null;
if (from == null || from.equals("") || to == null || to.equals(""))
return source;
while (done) {
start = sourceLowcase.indexOf(from, start);
if (start == -1) {
break;
}
subLowcase1 = sourceLowcase.substring(0, start);
sub1 = source.substring(0, start);
end = sourceLowcase.indexOf(to, start);
if (end == -1) {
end = sourceLowcase.indexOf("/>", start);
if (end == -1) {
done = false;
}
} else {
end = end + to.length();
subLowcase2 = sourceLowcase.substring(end, source.length());
sub2 = source.substring(end, source.length());
sourceLowcase = subLowcase1 + subLowcase2;
source = sub1 + sub2;
}
//System.out.println(start+" "+end);
}
return source;
}
public static void delPic(String path, String img) {
if (img != null) {
if (!img.equals("")) {
File file1 = new File(path + "/" + img);
if (file1.exists()) {
file1.deleteOnExit();
// file1.delete();
}
}
}
}
}
if (utype.equals("注册用户"))
{
request.getSession(). setAttribute("username", userlist1.get(0).get("yonghuming"));
}
else
{
request.getSession(). setAttribute("username", userlist1.get(0).get("gonghao"));
}
request.getSession(). setAttribute("cx", utype);
gor("index.jsp", request, response);
}else{
request.setAttribute("error", "");
go("/index.jsp", request, response);
}
}
}
if(ac.equals("adminlogin"))
{
String username = request.getParameter("username");
String password = request.getParameter("pwd");
String utype = request.getParameter("cx");
String pagerandom = request.getParameter("pagerandom")==null?"":request.getParameter("pagerandom");
String random = (String)request.getSession().getAttribute("random");
if(!pagerandom.equals(random)&&request.getParameter("a")!=null)
{
request.setAttribute("random", "");
go("/login.jsp", request, response);
}
else{
String sql1 = "select * from allusers where username='"+username+"' and pwd='"+password+"' ";
List<HashMap> userlist1 = dao.select(sql1);
if(userlist1.size()==1)
{
request.getSession(). setAttribute("username", userlist1.get(0).get("username"));
request.getSession(). setAttribute("cx", userlist1.get(0).get("cx"));
gor("main.jsp", request, response);
}else{
request.setAttribute("error", "");
go("/login.jsp", request, response);
jscode += " {\n";
jscode += " if(radios[i].value==\"" + str2 + "\")\n";
jscode += " {\n";
jscode += " radios[i].checked=\"checked\";\n";
jscode += " }\n";
jscode += " }\n";
jscode += " }\n";
jscode += " if(radios[0].type=='checkbox'){\n";
jscode += " for(var i=0;i<radios.length;i++)\n";
jscode += " {\n";
jscode += " if(\"" + str2 + "\".indexOf(radios[i].value)>-1&&radios[i].id.indexOf('choosebox')==-1)\n";
jscode += " {\n";
jscode += " radios[i].checked=\"checked\";\n";
if (str2.indexOf(" - ") > -1) {
for (String strch : str2.split(" ~ ")) {
String strchname = strch.substring(0, strch.lastIndexOf(" - "));
jscode += " if(document.getElementsByName('" + strchname + "').length>0)\n";
jscode += " {\n";
jscode += " document.getElementsByName('" + strchname + "')[0].value='" + strch.substring(strch.lastIndexOf(":") + 1) + "';\n";
jscode += " }\n";
}
}
jscode += " }\n";
jscode += " }\n";
jscode += " }\n";
jscode += " if(radios.type=='select'){\n";
jscode += " " + formname + "." + str1 + ".value=\"" + str2 + "\";\n";
jscode += " }\n";
jscode += " }else{\n";
jscode += " if(" + formname + "." + str1 + ")\n";
jscode += "{\n";
jscode += "" + formname + "." + str1 + ".value=\"" + str2 + "\";\n";
jscode += "}\n";
jscode += "}\n";
jscode += "if(document.getElementById(\"txt\"))\n";
jscode += "{\n";
jscode += "document.getElementById(\"txt\").src=\"upfile/" + map.get("filename") + "\";\n";
e.printStackTrace();
}
String str = "";
if (!reflush)
str += "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> \n";
str += "<script language=javascript>\n";
if (alert) {
str += "alert('操作成功');\n";
}
if (tzurl.equals("")) {
if (reflush) {
str += "parent.location=parent.location;\n";
} else {
str += "window.location=String(window.location).replace(new RegExp('f=f', 'g'), '');";
}
} else {
str += "location.href='" + tzurl + "';\n";
}
str += "</script>";
PrintWriter wrt = null;
try {
wrt = response.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
wrt.write(str);
}
return "";
}
public void delete(HttpServletRequest request, String tablename) {
int i = 0;
try {
String did = request.getParameter("did");
if (did == null) did = request.getParameter("scid");
if (did != null) {
if (did.length() > 0) {
Statement st = conn.createStatement();
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next()) {
List<String> list2 = new ArrayList();
int i = rsmd.getColumnCount();
for (int j = 1; j <= i; j++) {
if (!rsmd.getColumnName(j).equals("ID")) {
String str = rs.getString(j) == null ? "" : rs.getString(j);
if (str.equals("null")) str = "";
list2.add(str);
} else
list2.add(rs.getString(j));
}
list.add(list2);
}
rs.close();
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
public void close() {
}
/**
* 执行一条查询sql,以 List<hashmap> 的形式返回查询的记录,记录条数,和从第几条开始,由参数决定,主要用于翻页
* pageno 页码 rowsize 每页的条数
*/
public List<HashMap> select(String sql, int pageno, int rowsize) {
List<HashMap> list = new ArrayList<HashMap>();
List<HashMap> mlist = new ArrayList<HashMap>();
try {
list = this.select(sql);
int min = (pageno - 1) * rowsize;
int max = pageno * rowsize;
for (int i = 0; i < list.size(); i++) {
if (!(i < min || i > (max - 1))) {
mlist.add(list.get(i));
}
}
} catch (RuntimeException re) {
re.printStackTrace();
throw re;
}
// Put your code here
}
}
public class SetChar extends HttpServlet implements Filter {
private FilterConfig filterConfig;
// Handle the passed-in FilterConfig
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
// Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {
//request.setCharacterEncoding("UTF-8");
HttpServletRequest req = (HttpServletRequest) request;
if (req.getMethod().equalsIgnoreCase("get")) {
this.encoding(req);
}
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
}
private void encoding(HttpServletRequest request) {
Iterator iter = request.getParameterMap().values().iterator();
while (iter.hasNext()) {
String[] parames = (String[]) iter.next();
for (int i = 0; i < parames.length; i++) {
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
}
}
response.setContentType("text/plain");
response.setHeader("Location",filename);
response.reset();
response.setHeader("Cache-Control", "max-age=0" );
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
try {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
OutputStream fos = null;
// File f = new File(request.getRealPath("/upfile/")+"/"+filename);
//System.out.println(f);
bis = new BufferedInputStream((InputStream)new FileInputStream(request.getRealPath("/upfile/")+"/"+filename));
fos = response.getOutputStream();
bos = new BufferedOutputStream(fos);
int bytesRead = 0;
byte[] buffer = new byte[5 * 1024];
while ((bytesRead = bis.read(buffer)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.close();
bis.close();
fos.close();
new Info().delPic(request.getRealPath("/upfile/")+"/", filename);
} catch (Exception e) {
}finally{
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
.append("\">");
for (int i = 0; i < this.pageNumber; i++) {
if (this.currentPage == i + 1)
buf.append("<option value=" + (i + 1)
+ " selected=\"selected\">" + (i + 1) + "</option>");
else
buf.append("<option value=" + (i + 1) + ">" + (i + 1)
+ "</option>");
}
buf.append("</select>");
this.info = buf.toString();
}
public Collection getCollection() {
return collection;
}
public long getCount() {
return count;
}
public int getCurrentPage() {
return currentPage;
}
public long getPageNumber() {
return pageNumber;
}
public int getPageSize() {
return pageSize;
}
public String getInfo() {
return info;
}
public static ArrayList<HashMap> getPages(String url,int pagesize,String sql,HttpServletRequest request )
{
PageManager pageManager = PageManager.getPage(url, pagesize, request);
pageManager.doList(sql);
PageManager bean = (PageManager) request.getAttribute("page");
ArrayList<HashMap> nlist = (ArrayList) bean.getCollection();
return nlist;
}
}
if (!str1.equals("content")) {
jscode += " if(document.getElementsByName(\"" + str1 + "\").length>1)\n";
jscode += " {\n";
jscode += " var radios = document.getElementsByName(\"" + str1 + "\");\n";
jscode += " if(radios[0].type=='radio'){\n";
jscode += " for(var i=0;i<radios.length;i++)\n";
jscode += " {\n";
jscode += " if(radios[i].value==\"" + str2 + "\")\n";
jscode += " {\n";
jscode += " radios[i].checked=\"checked\";\n";
jscode += " }\n";
jscode += " }\n";
jscode += " }\n";
jscode += " if(radios[0].type=='checkbox'){\n";
jscode += " for(var i=0;i<radios.length;i++)\n";
jscode += " {\n";
jscode += " if(\"" + str2 + "\".indexOf(radios[i].value)>-1&&radios[i].id.indexOf('choosebox')==-1)\n";
jscode += " {\n";
jscode += " radios[i].checked=\"checked\";\n";
if (str2.indexOf(" - ") > -1) {
for (String strch : str2.split(" ~ ")) {
String strchname = strch.substring(0, strch.lastIndexOf(" - "));
jscode += " if(document.getElementsByName('" + strchname + "').length>0)\n";
jscode += " {\n";
jscode += " document.getElementsByName('" + strchname + "')[0].value='" + strch.substring(strch.lastIndexOf(":") + 1) + "';\n";
jscode += " }\n";
}
}
jscode += " }\n";
jscode += " }\n";
ArrayList<String> collist = new ArrayList();
String sql = "update " + tablename + " set ";
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from " + tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
System.out.println(i);
for (int j = 1; j <= i; j++) {
if (rsmd.getColumnName(j).equals("id")) continue;
if (rsmd.getColumnName(j).equals("ID")) continue;
if (rsmd.getColumnName(j).equals("Id")) continue;
if (rsmd.getColumnName(j).equals("iD")) continue;
typemap.put(rsmd.getColumnName(j) + "---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
if (names.indexOf("," + rsmd.getColumnName(j) + ",") > -1) {
String[] values = request.getParameterValues(rsmd.getColumnName(j));
String value = "";
for (String vstr : values) {
if (vstr == null) vstr = "";
if (vstr.equals("null")) vstr = "";
if (vstr.trim().equals("")) continue;
if (request.getParameter(vstr) != null && !"".equals(request.getParameter(vstr)) && request.getParameter("dk-" + rsmd.getColumnName(j) + "-value") != null) {
String dkv = request.getParameter(vstr);
String dknamevalue = request.getParameter("dk-" + rsmd.getColumnName(j) + "-value");
vstr += " - " + dknamevalue + ":" + dkv;
System.out.println(vstr);
}
//if(vstr.length()<)
value += vstr + " ~ ";
}
if (value == null) value = "";
if (value.equals("null")) value = "";
if (value.length() > 0) value = value.substring(0, value.length() - 3);
if (rsmd.getColumnTypeName(j).equals("int")) {
sql += rsmd.getColumnName(j) + "=" + value + ",";
} else {
sql += rsmd.getColumnName(j) + "='" + value + "',";
}
} else {
if (extmap.get(rsmd.getColumnName(j)) != null) {
if (rsmd.getColumnTypeName(j).equals("int")) {
sql += rsmd.getColumnName(j) + "=" + extmap.get(rsmd.getColumnName(j)) + ",";
} else {
sql += rsmd.getColumnName(j) + "='" + extmap.get(rsmd.getColumnName(j)) + "',";
}
}
}
*/
protected PageManager(String path, int pageSize, HttpServletRequest request) {
// 任意一个dao都行
this.currentPage = 1;
this.pageNumber = 1;
this.count = 0;
this.pageSize = pageSize <= 0 ? DEFAULTPAGESIZE : pageSize;
this.request = request;
this.path = path;
request.setAttribute("page", this);
try {
this.currentPage = Integer.parseInt(request
.getParameter("currentPage")) <= 0 ? 1 : Integer
.parseInt(request.getParameter("currentPage"));
} catch (Exception e) {
try {
this.currentPage = Integer.parseInt((String) request
.getSession().getAttribute("currentPage"));
} catch (Exception e1) {
this.currentPage = 1;
}
}
}
/**
*
* @param 下一页的分页链接
* @param 一页最大记录数
* @param 当前HttpServletRequest对象
* @param 数据库操作对象
*/
public static PageManager getPage(String path, int pageSize,
HttpServletRequest request) {
return new PageManager(path, pageSize, request);
// .append("' style='TEXT-DECORATION:none'>").append(
// "[" + (i + 1) + "]").append("</a> ");
// }
// }
buf.append("<select οnchange=\"javascript:window.location='").append(
this.path).append("¤tPage='+").append(
"this.options[this.selectedIndex].value").append(parameter)
.append("\">");
for (int i = 0; i < this.pageNumber; i++) {
if (this.currentPage == i + 1)
buf.append("<option value=" + (i + 1)
+ " selected=\"selected\">" + (i + 1) + "</option>");
else
buf.append("<option value=" + (i + 1) + ">" + (i + 1)
+ "</option>");
}
buf.append("</select>");
this.info = buf.toString();
}
public Collection getCollection() {
return collection;
}
public long getCount() {
return count;
}
public int getCurrentPage() {
return currentPage;
}
public long getPageNumber() {
return pageNumber;
}
public int getPageSize() {
return pageSize;
}
dao.close();
out.flush();
out.close();
}
public void init() throws ServletException {
// Put your code here
}
}
public class PageManager {
private PageManager() {
}
// 默认一页最大记录数
public static final int DEFAULTPAGESIZE = 20;
// 分页段
public static final int segment = 10;
// 当前页数
protected int currentPage;
// 一页长度
protected int pageSize;
// 总页数
protected long pageNumber;
// 总记录数
protected long count;