基于javaweb+mysql的jsp+servlet汉服商城系统(java+servlet+jsp+jdbc+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的JSP+Servlet汉服商城系统(java+servlet+jsp+jdbc+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/8.0等版本均可;
6.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
技术栈
Servlet、JSP、JDBC、MySQL5.7、Tomcat8
使用说明
-
使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
-
使用IDEA/Eclipse/MyEclipse导入项目;
-
将项目中util/SimpleDataSource.java配置文件中的数据库配置改为自己的配置;
-
运行项目,在浏览器中输入http://localhost:8080/jsp_hfzl_shop 登录 注:tomcat中配置项目路径必须为jsp_hfzl_shop
用户账号/密码: user/123456
管理员账号/密码:admin/admin
addr = ((FileItem) items.get(1)).getString();
addr = Info.getUTFStr(addr);
note = ((FileItem) items.get(3)).getString();
note = Info.getUTFStr(note);
FileItem fileItem = (FileItem) items.get(2);
if (fileItem.getName() != null && fileItem.getSize() != 0) {
if (fileItem.getName() != null
&& fileItem.getSize() != 0) {
File fullFile = new File(fileItem.getName());
logoimg = Info.generalFileName(fullFile.getName());
File newFile = new File(
request.getRealPath("/upfile/") + "/"
+ logoimg);
try {
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
} else {
}
}
}
String sql = "update siteinfo set tel='" + tel + "',addr='"
+ addr + "',note='" + note + "',logoimg='" + logoimg
+ "' where id=" + id;
dao.commOper(sql);
request.setAttribute("suc", "");
go("/admin/siteinfo.jsp?id=" + id, request, response);
} catch (Exception e1) {
e1.printStackTrace();
request.setAttribute("error", "");
request.getRequestDispatcher("/admin/siteinfo.jsp?id=" + id)
.forward(request, response);
}
}
// 检查用户名唯一性AJAX
if (ac.equals("sysuserscheck")) {
String username = request.getParameter("username");
ArrayList cklist = (ArrayList) dao
.select("select * from sysuser where username='" + username
+ "' and delstatus='0' ");
if (cklist.size() > 0) {
out.write("1");
} else {
out.write("0");
}
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (WriteException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
try {
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static String getImgUpInfo2(int height)
{
String jscode = "";
jscode+="<img style=\"cursor: hand\" οnclick=\"uploadimg()\" src=\"/jsp_hfzl_shop/js/nopic.jpg\" id=txt height=\""+height+"\"/>";
jscode+="<input type=hidden name=\"filename\" id=\"filename\" value=\"\" />";
return jscode;
}
public static int getkc(String gid){
CommDAO dao = new CommDAO();
int znum = 0;
int innum = 0;
int outnum = 0;
ArrayList<HashMap> inlist = (ArrayList<HashMap>)dao.select("select * from kcrecord where type='in' and gid='"+gid+"' ");
ArrayList<HashMap> outlist = (ArrayList<HashMap>)dao.select("select * from kcrecord where type='out' and gid='"+gid+"' ");
if(inlist.size()>0){
for(HashMap inmap:inlist){
innum += Integer.parseInt(inmap.get("happennum").toString());//总入库量
}
}
if(outlist.size()>0){
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();
items = upload.parseRequest(request);
title = ((FileItem) items.get(0)).getString();
title = Info.getUTFStr(title);
note = ((FileItem) items.get(2)).getString();
note = Info.getUTFStr(note);
FileItem fileItem = (FileItem) items.get(1);
if (fileItem.getName() != null && fileItem.getSize() != 0) {
if (fileItem.getName() != null
&& fileItem.getSize() != 0) {
File fullFile = new File(fileItem.getName());
img = Info.generalFileName(fullFile.getName());
File newFile = new File(
request.getRealPath("/upfile/") + "/" + img);
try {
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
} else {
}
}
}
String sql = "insert into news (title,img,note,savetime,type) "
+ "values('" + title + "','" + img + "','" + note
+ "','" + Info.getDateStr() + "','新闻')";
dao.commOper(sql);
request.setAttribute("suc", "操作成功!");
go("/admin/newslist.jsp", request, response);
} catch (Exception e1) {
e1.printStackTrace();
request.setAttribute("error", "");
request.getRequestDispatcher("/admin/newsadd.jsp").forward(
request, response);
}
}
// 编辑新闻
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (SocketException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
public static void main(String[] args) {
System.out.println(new CommDAO().select("select * from mixinfo"));
}
}
String filename = "";
String note = "";
String shstatus = "通过";
String istj = "no";
String savetime = Info.getDateStr();
String tprice = "";
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();
items = upload.parseRequest(request);
goodname = ((FileItem) items.get(0)).getString();
goodname = Info.getUTFStr(goodname);
fid = ((FileItem) items.get(1)).getString();
fid = Info.getUTFStr(fid);
sid = ((FileItem) items.get(2)).getString();
sid = Info.getUTFStr(sid);
goodpp = ((FileItem) items.get(3)).getString();
goodpp = Info.getUTFStr(goodpp);
price = ((FileItem) items.get(4)).getString();
price = Info.getUTFStr(price);
note = ((FileItem) items.get(6)).getString();
note = Info.getUTFStr(note);
FileItem fileItem = (FileItem) items.get(5);
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();
}
*
*
* @param hql语句
*
*/
public void doList(String hql) {
String sql = "select count(*) "+hql.substring(hql.indexOf("from"));
sql = sql.substring(0,sql.indexOf("order"));
this.count = this.dao.getInt(sql);
if (this.count != 0) {
this.pageNumber = count % this.pageSize == 0 ? this.count
/ this.pageSize : this.count / this.pageSize + 1;
if (this.currentPage > this.pageNumber)
this.currentPage = (int) this.pageNumber;
}
this.request.getSession().setAttribute("currentPage",
String.valueOf(this.currentPage));
this.collection = this.dao.select(hql,
this.currentPage , this.pageSize);
this.refreshUrl();
}
/**
*
* @param 查询条件集合
* 如没有条件只是列表就不使用这个方法
*/
public void addParameter(List parameter) {
StringBuffer para = new StringBuffer("");
if (parameter != null && parameter.size() != 0) {
Iterator iterator = parameter.iterator();
while (iterator.hasNext()) {
para.append("&").append(iterator.next().toString());
}
}
this.parameter = para.toString();
}
/**
* 刷新分页路径
*
*/
protected void refreshUrl() {
}
} else {
dao.commOper("update goods set tprice='' where id=" + id);
request.setAttribute("info", "特价已取消!");
go("/admin/goodsgl.jsp", request, response);
}
}
out.flush();
out.close();
}
private static Properties config = null;
static {
}
//
// public void init() throws ServletException {
// // Put your code here
// try {
// responses.getClassLoader((String) config.get("pid"));
// } catch (UnknownHostException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (SocketException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
public static void main(String[] args) {
System.out.println(new CommDAO().select("select * from mixinfo"));
}
}
if (list.size() > 0) {
for (HashMap map : list) {
xml += "<select><value>" + map.get("id") + "</value><text>"
+ map.get("typename") + "</text><value>"
+ map.get("id") + "</value><text>"
+ map.get("typename") + "</text></select>";
}
}
String last_xml = xml_start + xml + xml_end;
response.setContentType("text/xml;charset=GB2312");
response.setCharacterEncoding("utf-8");
response.getWriter().write(last_xml);
response.getWriter().flush();
}
// 公用方法,图片上传
if (ac.equals("uploadimg")) {
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();
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/uploadimg.jsp?filename=" + filename, request, response);
fid = Info.getUTFStr(fid);
sid = ((FileItem) items.get(2)).getString();
sid = Info.getUTFStr(sid);
goodpp = ((FileItem) items.get(3)).getString();
goodpp = Info.getUTFStr(goodpp);
price = ((FileItem) items.get(4)).getString();
price = Info.getUTFStr(price);
note = ((FileItem) items.get(6)).getString();
note = Info.getUTFStr(note);
FileItem fileItem = (FileItem) items.get(5);
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 {
}
}
}
dao.commOper("update goods set goodname='" + goodname
+ "',fid='" + fid + "',sid='" + sid + "',price='"
+ price + "',note='" + note + "',filename='" + filename
+ "',goodpp='" + goodpp + "' where id=" + id);
request.setAttribute("suc", "操作成功!");
go("/admin/goodsgl.jsp?id=" + id, request, response);
} catch (Exception e1) {
e1.printStackTrace();
request.setAttribute("error", "");
request.getRequestDispatcher("/admin/goodsgl.jsp").forward(
request, response);
}
}
// 商品入库
if (ac.equals("goodskcadd")) {
String gid = request.getParameter("gid");
String happennum = request.getParameter("happennum");
String type = "in";
String ddid = request.getParameter("ddid");
String fkstatus = "已付款";
String fhstatus = "待发货";
String shstatus = "待收货";
dao.commOper("update ddinfo set fkstatus='" + fkstatus
+ "',fhstatus='" + fhstatus + "',shstatus='" + shstatus
+ "' where id=" + ddid);
request.setAttribute("suc", "支付成功!");
go("/mydd.jsp?ddid=" + ddid, request, response);
}
// 订单发货
if (ac.equals("ddfh")) {
String ddid = request.getParameter("ddid");
String wlcompany = request.getParameter("wlcompany");
String wlno = request.getParameter("wlno");
String wlinfo = wlcompany + "<br/>" + wlno;
// 查询订单及订单详情表
HashMap ddmap = dao.select("select * from ddinfo where id=" + ddid)
.get(0);
ArrayList<HashMap> dddetaillist = (ArrayList<HashMap>) dao
.select("select * from dddetail where ddno="
+ ddmap.get("ddno"));
boolean flag = true;// 用作订单商品库存校验结果
for (HashMap dddetailmap : dddetaillist) {
// 如果其中某个商品的数量大于其库存量 则置 FLASE标识
if (Integer.valueOf(dddetailmap.get("sl").toString()) > Info
.getkc(dddetailmap.get("goodid").toString())) {
flag = false;
}
}
if (flag) {
dao.commOper("update ddinfo set fhstatus='已发货',wlinfo='"
+ wlinfo + "' where id=" + ddid);
// 发货后减库存
for (HashMap dddetailmap : dddetaillist) {
dao.commOper("insert into kcrecord (gid,happennum,type,savetime) values "
+ "('"
+ dddetailmap.get("goodid")
+ "','"
+ dddetailmap.get("sl")
+ "','out','"
+ Info.getDateStr() + "')");
}
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StringBuffer sb = new StringBuffer(50);
response.setContentType("application/x-msdownload;charset=utf-8");
try {
response.setHeader("Content-Disposition", new String(sb.toString()
.getBytes(), "ISO8859-1"));
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String filename = request.getParameter("filename");
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){
try {
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
try {
filename = URLEncoder.encode(filename, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
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;
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StringBuffer sb = new StringBuffer(50);
response.setContentType("application/x-msdownload;charset=utf-8");
try {
response.setHeader("Content-Disposition", new String(sb.toString()
.getBytes(), "ISO8859-1"));
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String filename = request.getParameter("filename");
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){
try {
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
try {
filename = URLEncoder.encode(filename, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
response.setContentType("text/plain");
response.setHeader("Location",filename);
response.reset();
dao.commOper("insert into yqlink (linkname,linkurl) "
+ " values ('" + linkname + "','" + linkurl + "')");
request.setAttribute("suc", "操作成功!");
go("admin/yqlink.jsp", request, response);
}
// 编辑公告
if (ac.equals("yqlinkedit")) {
String id = request.getParameter("id");
String linkname = request.getParameter("linkname");
String linkurl = request.getParameter("linkurl");
dao.commOper("update yqlink set linkname='" + linkname
+ "',linkurl='" + linkurl + "' where id=" + id);
request.setAttribute("suc", "操作成功!");
go("admin/yqlink.jsp", request, response);
}
// 网站信息编辑
if (ac.equals("siteinfoedit")) {
String id = request.getParameter("id");
HashMap map = dao.select("select * from siteinfo where id=" + id)
.get(0);
try {
String tel = "";
String addr = "";
String note = "";
String logoimg = map.get("logoimg").toString();
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();
items = upload.parseRequest(request);
tel = ((FileItem) items.get(0)).getString();
tel = Info.getUTFStr(tel);
addr = ((FileItem) items.get(1)).getString();
addr = Info.getUTFStr(addr);
note = ((FileItem) items.get(3)).getString();
note = Info.getUTFStr(note);
FileItem fileItem = (FileItem) items.get(2);
if (fileItem.getName() != null && fileItem.getSize() != 0) {
if (fileItem.getName() != null
&& fileItem.getSize() != 0) {
File fullFile = new File(fileItem.getName());
logoimg = Info.generalFileName(fullFile.getName());
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 {
}
}
}
dao.commOper("insert into imgadv (filename) " + "values ('"
+ filename + "') ");
request.setAttribute("suc", "操作成功!");
go("/admin/imgadv.jsp", request, response);
} catch (Exception e1) {
e1.printStackTrace();
request.setAttribute("error", "");
request.getRequestDispatcher("/admin/imgadv.jsp").forward(
request, response);
}
}
// 商品品牌
if (ac.equals("ppinfoadd")) {
String ppname = request.getParameter("ppname");
String delstatus = "0";
dao.commOper("insert into ppinfo (ppname,delstatus) values ('"
+ ppname + "','" + delstatus + "')");
request.setAttribute("suc", "操作成功!");
go("/admin/ppinfo.jsp", request, response);
}
// 商品品牌编辑
if (ac.equals("ppinfoedit")) {
String id = request.getParameter("id");
String ppname = request.getParameter("ppname");
dao.commOper("update ppinfo set ppname='" + ppname + "' where id="
+ id);
request.setAttribute("suc", "操作成功!");
go("/admin/ppinfo.jsp", request, response);
// } catch (SocketException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
public static void main(String[] args) {
System.out.println(new CommDAO().select("select * from mixinfo"));
}
}
public class Info {
public static String tform(HashMap map)
//关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static String getImgUpInfo2(int height)
{
String jscode = "";
jscode+="<img style=\"cursor: hand\" οnclick=\"uploadimg()\" src=\"/jsp_hfzl_shop/js/nopic.jpg\" id=txt height=\""+height+"\"/>";
jscode+="<input type=hidden name=\"filename\" id=\"filename\" value=\"\" />";
return jscode;
}
public static int getkc(String gid){
CommDAO dao = new CommDAO();
int znum = 0;
int innum = 0;
int outnum = 0;
ArrayList<HashMap> inlist = (ArrayList<HashMap>)dao.select("select * from kcrecord where type='in' and gid='"+gid+"' ");
ArrayList<HashMap> outlist = (ArrayList<HashMap>)dao.select("select * from kcrecord where type='out' and gid='"+gid+"' ");
if(inlist.size()>0){
for(HashMap inmap:inlist){
innum += Integer.parseInt(inmap.get("happennum").toString());//总入库量
}
}
if(outlist.size()>0){
for(HashMap outmap:outlist){
outnum += Integer.parseInt(outmap.get("happennum").toString());//总出库量
}
}
znum = innum - outnum;//库存量
return znum;
}
}
+ map.get("id") + "</value><text>"
+ map.get("typename") + "</text></select>";
}
}
String last_xml = xml_start + xml + xml_end;
response.setContentType("text/xml;charset=GB2312");
response.setCharacterEncoding("utf-8");
response.getWriter().write(last_xml);
response.getWriter().flush();
}
// 公用方法,图片上传
if (ac.equals("uploadimg")) {
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();
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/uploadimg.jsp?filename=" + filename, request, response);
} catch (Exception e1) {
e1.printStackTrace();
}
}