基于javaweb+mysql的jsp+servlet球队nba及其周边商城系统(java+jdbc+servlet+jsp+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的JSP+Servlet球队nba及其周边商城系统(java+jdbc+servlet+jsp+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配置文件中的数据库配置改为自己的配置;
-
运行项目,输入localhost:8080/jsp_zhctms_site 登录 注:tomcat中配置项目路径必须为jsp_zhctms_site
用户账号/密码: user/123456
管理员账号/密码:admin/admin
public class Info {
public static String tform(HashMap map)
{
if(map.get("isgood")!=null){
map.remove("note");
}
String jscode = "";
try{
jscode+="<script type=\"text/javascript\">\n";
jscode+="function getPvalue()\n";
jscode+="{\n";
Set set = map.entrySet();
Iterator it = set.iterator();
while(it.hasNext())
{
String pm=((Object)it.next()).toString();
String str1 = "";
public class Info {
public static String tform(HashMap map)
{
if(map.get("isgood")!=null){
map.remove("note");
}
String jscode = "";
try{
jscode+="<script type=\"text/javascript\">\n";
jscode+="function getPvalue()\n";
jscode+="{\n";
Set set = map.entrySet();
Iterator it = set.iterator();
while(it.hasNext())
{
String pm=((Object)it.next()).toString();
String fid = "";
String sid = "";
String goodpp = "";
String price = "";
String note = "";
String filename = map.get("filename").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);
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();
}
} else {
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;
}
}
public class PageManager {
private PageManager() {
}
// 默认一页最大记录数
public static final int DEFAULTPAGESIZE = 20;
jscode+="if(document.getElementById(\"txt\"))\n";
jscode+="{\n";
jscode+="document.getElementById(\"txt\").src=\"/jsp_nbashop/upfile/"+map.get("filename")+"\";\n";
jscode+="}\n";
}
jscode+="}\n";
jscode+=" getPvalue();\n";
jscode+="</script>\n";
}catch (Exception e) {
e.printStackTrace();
}
return jscode;
}
public static String generalFileName(String srcFileName) {
try{
int index=srcFileName.lastIndexOf(".");
return StrUtil.generalSrid()+srcFileName.substring(index).toLowerCase();
}catch(Exception e){
return StrUtil.generalSrid();
}
}
public synchronized static String getID() {
Random random = new Random();
StringBuffer ret = new StringBuffer(20);
String rand = String.valueOf(Math.abs(random.nextInt()));
ret.append(getDateStr());
ret.append(rand.substring(0,6));
return ret.toString();
}
public synchronized static String subStr(String source,int length) {
if(source.length()>length)
{
source=source.substring(0,length)+"...";
}
return source;
}
public static String getDateStr(){
String dateString="";
try{//yyyyMMddHHmmss
java.text.SimpleDateFormat formatter=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
request.setAttribute("error", "");
request.getRequestDispatcher("/admin/newsedit.jsp?id=" + id)
.forward(request, response);
}
}
// 新增公告
if (ac.equals("noticesadd")) {
String title = request.getParameter("title");
String note = request.getParameter("note");
String savetime = Info.getDateStr();
String type = "公告";
dao.commOper("insert into news (title,note,savetime,type) "
+ " values ('" + title + "','" + note + "','" + savetime
+ "','" + type + "')");
request.setAttribute("suc", "");
go("admin/noticesadd.jsp", request, response);
}
// 编辑公告
if (ac.equals("noticesedit")) {
String id = request.getParameter("id");
String title = request.getParameter("title");
String note = request.getParameter("note");
dao.commOper("update news set title='" + title + "',note='" + note
+ "' where id=" + id);
request.setAttribute("suc", "");
go("admin/noticesedit.jsp?id=" + id, request, response);
}
// 新增链接
if (ac.equals("yqlinkadd")) {
String linkname = request.getParameter("linkname");
String linkurl = request.getParameter("linkurl");
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);
// 总页数
protected long pageNumber;
// 总记录数
protected long count;
// 数据
protected Collection collection;
// 数据查询对象
protected CommDAO dao = new CommDAO();
// 表现层代码
protected String info;
// 请求路径
protected String path;
// 服务器请求对象
protected HttpServletRequest request;
/*
* 仅仅只是加到路径中去
*/
protected String parameter = "";
/**
*
* @param 下一页的分页链接
* @param 一页最大记录数
* @param 当前HttpServletRequest对象
* @param 数据库操作对象
*/
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"));
request.setAttribute("suc", "留言成功!");
go("/msg.jsp", request, response);
}
if (ac.equals("msghf")) {
String id = request.getParameter("id");
String hfmsg = request.getParameter("hfmsg");
dao.commOper("update chat set hfmsg='" + hfmsg + "' where id="
+ id);
request.setAttribute("suc", "回复成功!");
go("/admin/msglist.jsp", request, response);
}
if (ac.equals("goodstjset")) {
String id = request.getParameter("id");
String tprice = request.getParameter("tprice") == null ? ""
: request.getParameter("tprice");
if (!tprice.equals("")) {
HashMap map = dao.select("select * from goods where id=" + id)
.get(0);
if (Double.valueOf(tprice) >= Double.valueOf(map.get("price")
.toString())) {
request.setAttribute("info", "特价必须低于原价!");
go("/admin/goodstjset.jsp?id=" + id, request, response);
} else {
dao.commOper("update goods set tprice='" + tprice
+ "' where id=" + id);
request.setAttribute("suc", "特价设置成功!");
go("/admin/goodsgl.jsp", request, response);
}
} 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
+ fkstatus
+ "','"
+ shrname + "','" + shrtel + "','" + shraddr + "')");
dao.commOper("insert into dddetail (ddno,goodid,sl) values ('"
+ ddno + "','" + gid + "','" + sl + "') ");
out.print("true");
}
} else {
out.print("false");
}
// request.setAttribute("suc", "");
// go("/tocar.jsp?gid="+gid, request, response);
}
// 购物车内商品数量修改
if (ac.equals("updatecart")) {
String id = request.getParameter("carid");
int sl = Integer.valueOf(request.getParameter("sl"));
dao.commOper("update car set sl=" + sl + " where id=" + id);
out.print("true");
}
// 购物车内商品总价
if (ac.equals("updatetprice")) {
ArrayList<HashMap> goodlist = (ArrayList<HashMap>) dao
.select("select *,a.id as aid,b.id as bid from car a,goods b where a.gid=b.id and a.mid='"
+ member.get("id")
+ "' and b.delstatus='0' order by a.id desc");
double totalprice = 0.0;
for (HashMap carmap : goodlist) {
if (carmap.get("tprice") != null
&& !carmap.get("tprice").equals("")) {
totalprice += Double.valueOf(carmap.get("tprice")
.toString())
* Integer.valueOf(carmap.get("sl").toString());
} else {
totalprice += Double
.valueOf(carmap.get("price").toString())
* Integer.valueOf(carmap.get("sl").toString());
}
}
out.print(totalprice);
}
// 提交生成订单 填写收货信息
if (ac.equals("submitorder")) {
request.setAttribute("suc", "");
go("/admin/sysuseradd.jsp", request, response);
}
// 编辑管理员
if (ac.equals("sysuseredit")) {
String id = request.getParameter("id");
String userpwd = request.getParameter("userpwd");
String realname = request.getParameter("realname");
String sex = request.getParameter("sex");
String idcard = request.getParameter("idcard");
String tel = request.getParameter("tel");
String email = request.getParameter("email");
String addr = request.getParameter("addr");
dao.commOper("update sysuser set userpwd='" + userpwd
+ "',realname='" + realname + "',sex='" + sex
+ "',idcard='" + idcard + "',tel='" + tel + "',email='"
+ email + "',addr='" + addr + "' where id=" + id);
request.setAttribute("suc", "");
go("/admin/sysuseredit.jsp?id=" + id, request, response);
}
// 商品类别新增
if (ac.equals("protypeadd")) {
String typename = request.getParameter("typename");
String fatherid = request.getParameter("fatherid");
dao.commOper("insert into protype (typename,fatherid,delstatus) values ('"
+ typename + "','" + fatherid + "','0') ");
request.setAttribute("suc", "操作成功!");
go("/admin/protype.jsp", request, response);
}
// 商品类别编辑
if (ac.equals("protypeedit")) {
String id = request.getParameter("id");
String typename = request.getParameter("typename");
dao.commOper("update protype set typename='" + typename
+ "' where id=" + id);
request.setAttribute("suc", "操作成功!");
go("/admin/protype.jsp?id=" + id, request, response);
}
// 商品属性新增
if (ac.equals("propertyadd")) {
String propertyname = request.getParameter("propertyname");
dao.commOper("insert into property (propertyname,delstatus) values ('"
+ propertyname + "','0') ");
request.setAttribute("suc", "");
go("/admin/propertyadd.jsp", request, response);
}
// 商品属性编辑
if (ac.equals("propertyedit")) {
String id = request.getParameter("id");
String propertyname = request.getParameter("propertyname");
dao.commOper("update property set propertyname='" + propertyname
+ "' where id=" + id);
request.setAttribute("suc", "");
go("/admin/propertyedit.jsp?id=" + id, request, response);
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");
}
}
// 新增管理员
if (ac.equals("sysuseradd")) {
String usertype = "管理员";
String username = request.getParameter("username");
String userpwd = request.getParameter("userpwd");
String realname = request.getParameter("realname");
String sex = request.getParameter("sex");
if (ac.equals("tobuy")) {
String gid = request.getParameter("gid");
int sl = Integer.valueOf(request.getParameter("sl"));
String ddno = Info.getAutoNo();
String shrname = "";
String shrtel = "";
String shraddr = request.getParameter("addr");
double ddprice = 0.0;
String fhstatus = "待发货";
String shstatus = "待收货";
String fkstatus = "待付款";
String wlinfo = "暂无物流信息";
String savetime = Info.getDateStr();
if (member != null) {
String memberid = member.get("id").toString();
ArrayList<HashMap> addrlist = (ArrayList<HashMap>) dao
.select("select * from addr where delstatus='0' and memberid="
+ member.get("id"));
if (addrlist.size() == 0) {
out.print("false");
} else {
shraddr = addrlist.get(0).get("id").toString();
HashMap gmap = dao.select(
"select * from goods where id=" + gid).get(0);
String price = gmap.get("price").toString();
if (gmap.get("tprice") != null
&& !gmap.get("tprice").equals("")) {
price = gmap.get("tprice").toString();
}
ddprice = Double.valueOf(price) * sl;
// 直接生成订单
dao.commOper("insert into ddinfo (ddno,memberid,ddprice,fhstatus,savetime,shstatus,wlinfo,fkstatus,shrname,shrtel,shraddr) values "
+ "('"
+ ddno
+ "','"
+ memberid
+ "','"
+ ddprice
+ "','"
+ fhstatus
+ "','"
+ savetime
+ "','"
+ shstatus
+ "','"
+ wlinfo
+ "','"
+ fkstatus
+ "','"
+ shrname + "','" + shrtel + "','" + shraddr + "')");
dao.commOper("insert into dddetail (ddno,goodid,sl) values ('"
public class MainCtrl extends HttpServlet {
public MainCtrl() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
MainMethod responses = new MainMethod();
public void go(String url, HttpServletRequest request,
HttpServletResponse response) {
try {
request.getRequestDispatcher(url).forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void gor(String url, HttpServletRequest request,
HttpServletResponse response) {
try {
/**
* 比较时间大小
*
*/
public static String compare_datezq(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
return "big";
} else if (dt1.getTime() < dt2.getTime()) {
return "small";
} else {
return "den";
}
} catch (Exception exception) {
exception.printStackTrace();
}
return "den";
}
/**
* 过滤html代码
*
*/
public static String filterStrIgnoreCase(String source, String from, String to){
String sourceLowcase=source.toLowerCase();
String sub1,sub2,subLowcase1,subLowcase2;
sub1=sub2=subLowcase1=subLowcase2="";
int start=0,end;
boolean done=true;
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);
public static String generalFileName(String srcFileName) {
try{
int index=srcFileName.lastIndexOf(".");
return StrUtil.generalSrid()+srcFileName.substring(index).toLowerCase();
}catch(Exception e){
return StrUtil.generalSrid();
}
}
public synchronized static String getID() {
Random random = new Random();
StringBuffer ret = new StringBuffer(20);
String rand = String.valueOf(Math.abs(random.nextInt()));
ret.append(getDateStr());
ret.append(rand.substring(0,6));
return ret.toString();
}
public synchronized static String subStr(String source,int length) {
if(source.length()>length)
{
source=source.substring(0,length)+"...";
}
return source;
}
public static String getDateStr(){
String dateString="";
try{//yyyyMMddHHmmss
java.text.SimpleDateFormat formatter=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date currentTime_1=new java.util.Date();
dateString=formatter.format(currentTime_1);
}catch(Exception e){
}
return dateString;
}
public static String getAutoNo(){
String dateString="";
go("/admin/kcout.jsp", request, response);
}
}
// 新增图片
if (ac.equals("imgadvaddold")) {
try {
String img = "";
String imgtype = "";
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);
imgtype = ((FileItem) items.get(1)).getString();
imgtype = Info.getUTFStr(imgtype);
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());
img = Info.generalFileName(fullFile.getName());
File newFile = new File(
request.getRealPath("/upfile/") + "/" + img);
try {
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
} else {
}
}
}
String cksql = "select * from imgadv where imgtype='banner'";
ArrayList cklist = (ArrayList) dao.select(cksql);
if (imgtype.equals("banner") && cklist.size() != 0) {
request.setAttribute("no", "");
go("/admin/imgadvadd.jsp", request, response);
} else {
String sql = "insert into imgadv (filename,imgtype) "
+ "values('" + img + "','" + imgtype + "')";
.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);
}
/**
*
*
* @param hql语句
*