作者主页:夜未央5788
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
项目介绍
网上花店销售系统采用JSP+Servlet+JavaBean的MVC模式,将数据对象、业务逻辑以及用户界面分离。该系统分为用户和管理员两个角色。用户注册登录后可以浏览鲜花,浏览公告,购买鲜花,管理员登录后可以对系统进行管理和维护。
由于本程序规模不大,可供课程设计,毕业设计学习演示之用。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目: 否;
技术栈
Servlet、JSP、JDBC、MySQL5.7、Tomcat8
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,然后运行;
3. 将项目中src/com/dao/DB.java配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入地址;
前台地址:http://localhost:8080/flowerstore/
普通社员账号:zhangsan 密码:123456
后台地址:http://localhost:8080/flowerstore/manage/login.jsp
管理员账号:admin 密码:123456
运行截图
用户角色






管理员界面





相关代码
管理端控制器
//后台servlet,用于处理前台的所有请求
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void destroy() {
super.destroy();
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置获取的参数的编码格式
request.setCharacterEncoding("utf-8");
//获取绝对地址
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
//设置响应输出的字符串格式
response.setCharacterEncoding("utf-8");response.setContentType("text/html; charset=utf-8");
//获取输出对象
PrintWriter writer = response.getWriter();
//获取页面请求地址
String uri = request.getRequestURI();
String[] s = uri.split("/");
String method = s[3];
//初始化跳转的地址
String url ="";
int pagenum = 1;//当前页
int pagesize = 15;//每页显示的数量
//初始化调用的数据库操作对象
UserDao userDao = new UserDao();
ProductDao productDao = new ProductDao();
GonggaoDao gonggaoDao = new GonggaoDao();
GouwucheDao gouwucheDao = new GouwucheDao();
DingdanDao dingdanDao = new DingdanDao();
//新用户注册
if("register".equals(method)){
//从jsp页面获取用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
String xingming = request.getParameter("xingming");
String dianhua = request.getParameter("dianhua");
String dizhi = request.getParameter("dizhi");
//查询该用户名是否已经注册
User bean = userDao.selectBean(" where username='"+username+"' ");
if(bean==null){
bean = new User();
bean.setDianhua(dianhua);
bean.setDizhi(dizhi);
bean.setPassword(password);
bean.setRole(0);
bean.setUsername(username);
bean.setXingming(xingming);
userDao.insertBean(bean);
writer.print("<script language='javascript'>alert('注册成功,请妥善保管您的账户');window.location.href='"+basePath+"login.jsp'; </script>");
}else{
writer.print("<script language='javascript'>alert('该用户名已经被注册,请重新注册!');window.location.href='"+basePath+"register.jsp';</script>");
}
}
//用户登录
else if("login".equals(method)){
//从jsp页面获取用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
//查询用户名和密码是否匹配
User bean = userDao.selectBean(" where username='"+username+"' and password ='"+password+"' and role=0 ");
if(bean!=null){
HttpSession session = request.getSession();
session.setAttribute("user", bean);
writer.print("<script language='javascript'>alert('登录成功');window.location.href='"+basePath+".'; </script>");
}else{
writer.print("<script language='javascript'>alert('用户名或者密码错误');window.location.href='"+basePath+"login.jsp';</script>");
}
}
//退出操作
else if("loginout".equals(method)){
HttpSession session =request.getSession();
session.removeAttribute("user");
writer.print("<script language='javascript'>alert('退出成功');window.location.href='"+basePath+".';</script>");
}
//修改密码操作
else if("passwordupdate2".equals(method)){
//从JSP获取信息
String password1 = request.getParameter("password1");
String password2 = request.getParameter("password2");
HttpSession session = request.getSession();
User user = (User)session.getAttribute("user");
User u = userDao.selectBean(" where username='"+user.getUsername()+"' and password='"+password1+"' ");
if(u!=null){
u.setPassword(password2);
userDao.updateBean(u);
writer.print("<script language='javascript'>alert('操作成功');window.location.href='"+basePath+"passwordupdate.jsp'; </script>");
}else{
writer.print("<script language='javascript'>alert('操作失败,原密码错误!');window.location.href='"+basePath+"passwordupdate.jsp'; </script>");
}
}
//跳转到修改个人信息页面
else if("userupdate".equals(method)){
//通过ID获取对象
HttpSession session = request.getSession();
User user = (User)session.getAttribute("user");
User bean = userDao.selectBean(" where id= "+user.getId());
//把对象传给jsp页面
request.setAttribute("bean", bean);
request.setAttribute("url", "indexServlet/userupdate2?id="+bean.getId());
RequestDispatcher dispatcher = request.getRequestDispatcher("/userupdate.jsp");
dispatcher.forward(request, response);
}
//修改个人信息操作
else if("userupdate2".equals(method)){
//从JSP获取信息
String xingming = request.getParameter("xingming");
String dianhua = request.getParameter("dianhua");
String dizhi = request.getParameter("dizhi");
//通过ID获取对象
String id = request.getParameter("id");
User bean = userDao.selectBean(" where id= "+id);
//更新对象属性
bean.setXingming(xingming);
bean.setDianhua(dianhua);
bean.setDizhi(dizhi);
//更新操作
userDao.updateBean(bean);
writer.print("<script language='javascript'>alert('操作成功');window.location.href='"+basePath+"indexServlet/userupdate'; </script>");
}
//跳转到查看商品详情页面
else if("productupdate".equals(method)){
//通过ID获取对象
String id = request.getParameter("id");
Product bean = productDao.selectBean(" where id= "+id);
//把对象传给jsp页面
bean.setDianjishu(bean.getDianjishu()+1);
productDao.updateBean(bean);
request.setAttribute("bean", bean);
RequestDispatcher dispatcher = request.getRequestDispatcher("/product.jsp");
dispatcher.forward(request, response);
}
//跳转到查看公告页面
else if("gonggaoupdate".equals(method)){
//通过ID获取对象
String id = request.getParameter("id");
Gonggao bean = gonggaoDao.selectBean(" where id= "+id);
//把对象传给jsp页面
request.setAttribute("bean", bean);
RequestDispatcher dispatcher = request.getRequestDispatcher("/gonggao.jsp");
dispatcher.forward(request, response);
}
//添加商品到购物车操作
else if("gouwucheadd2".equals(method)){
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
if (user == null) {
writer.print("<script language='javascript'>alert('请先登录');window.location.href='"+basePath+"login.jsp';</script>");
return ;
}
Product pro = productDao.selectBean(" where id= "+request.getParameter("pid"));
Gouwuche bean = gouwucheDao.selectBean(" where userid="+user.getId()+" and pid="+pro.getId()+" ");
if(bean!=null){
writer.print("<script language='javascript'>alert('该商品已经添加到购物车,请勿重复添加');window.location.href='"+basePath+"indexServlet/gouwuchelist';</script>");
return ;
}
bean = new Gouwuche();
bean.setJiage(pro.getJiage());
bean.setPid(pro.getId());
bean.setPname(pro.getPname());
bean.setShuliang(1);
bean.setUserid(user.getId());
gouwucheDao.insertBean(bean);
writer.print("<script language='javascript'>alert('添加成功');window.location.href='"+basePath+"indexServlet/gouwuchelist';</script>");
}
//我的购物车列表
else if("gouwuchelist".equals(method)){
//定义跳转的地址
url = "indexServlet/gouwuchelist";
//组装查询的SQL语句
StringBuffer sb = new StringBuffer();
sb.append(" where ");
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
sb.append(" userid="+user.getId()+" order by id desc ");
String where = sb.toString();
//获取当前的页数
if(request.getParameter("pagenum")!=null){
pagenum = Integer.parseInt(request.getParameter("pagenum"));
}
//从数据库查询列表信息,带分页功能
Map<String,List<Gouwuche>> map = gouwucheDao.getList(1,999,url,where);
String pagerinfo = map.keySet().iterator().next();
List<Gouwuche> list = map.get(pagerinfo);
//返回给jsp页面的信息
request.setAttribute("pagerinfo", pagerinfo);
request.setAttribute("list", list);
double zongjia = 0;
for(Gouwuche g:list){
zongjia = zongjia+(g.getJiage()*g.getShuliang());
}
request.setAttribute("zongjia", zongjia);
//定义跳转的地址
RequestDispatcher dispatcher = request.getRequestDispatcher("/gouwuchelist.jsp");
//跳转操作
dispatcher.forward(request, response);
}
//修改购物商品数量操作
else if("gouwucheupdate2".equals(method)){
String id = request.getParameter("id");
String number = request.getParameter("number");
Gouwuche bean = gouwucheDao.selectBean(" where id= "+id);
bean.setShuliang(Integer.parseInt(number));
gouwucheDao.updateBean(bean);
writer.print("<script language='javascript'>alert('变更成功');window.location.href='"+basePath+"indexServlet/gouwuchelist';</script>");
}
//删除购买的商品操作
else if("gouwuchedelete".equals(method)){
String id = request.getParameter("id");
Gouwuche bean = gouwucheDao.selectBean(" where id= "+id);
gouwucheDao.deleteBean(bean);
writer.print("<script language='javascript'>alert('删除成功');window.location.href='"+basePath+"indexServlet/gouwuchelist';</script>");
}
//跳转到生成订单页面
else if("dingdanadd".equals(method)){
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
User bean = userDao.selectBean(" where id= "+user.getId());
request.setAttribute("bean", bean);
RequestDispatcher dispatcher = request.getRequestDispatcher("/dingdanadd.jsp");
dispatcher.forward(request, response);
}
//生成订单操作
else if("dingdanadd2".equals(method)){
//从JSP获取信息
String userid = request.getParameter("userid");
String xingming = request.getParameter("xingming");
String dianhua = request.getParameter("dianhua");
String dizhi = request.getParameter("dizhi");
String beizhu = request.getParameter("beizhu");
Dingdan bean = new Dingdan();
bean.setBeizhu(beizhu);
bean.setDianhua(dianhua);
bean.setDizhi(dizhi);
bean.setOrderid(Util.getTime2());
bean.setShijian(Util.getTime());
bean.setStatus("未处理");
bean.setUserid(Integer.parseInt(userid));
bean.setXingming(xingming);
//组装查询的SQL语句
StringBuffer sb = new StringBuffer();
sb.append(" where ");
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
sb.append(" userid="+user.getId()+" order by id desc ");
String where = sb.toString();
//获取当前的页数
if(request.getParameter("pagenum")!=null){
pagenum = Integer.parseInt(request.getParameter("pagenum"));
}
//从数据库查询列表信息,带分页功能
Map<String,List<Gouwuche>> map = gouwucheDao.getList(1,999,url,where);
String pagerinfo = map.keySet().iterator().next();
List<Gouwuche> list = map.get(pagerinfo);
StringBuffer sbsb = new StringBuffer();
double zongjia = 0;
for(Gouwuche g:list){
sbsb.append("商品名:"+g.getPname()+",单价:"+g.getJiage()+",购买数量:"+g.getShuliang()+",小计:"+(g.getJiage()*g.getShuliang())+"<br/>");
zongjia = zongjia+(g.getJiage()*g.getShuliang());
Product p =productDao.selectBean(" where id= "+g.getPid());
p.setXiaoliang(p.getXiaoliang()+g.getShuliang());
productDao.updateBean(p);
gouwucheDao.deleteBean(g);
}
bean.setZongjia(zongjia);
bean.setXiangqing(sbsb.toString());
dingdanDao.insertBean(bean);
//返回给JSP页面
writer.print("<script language='javascript'>alert('操作成功');window.location.href='"+basePath+"indexServlet/orderlist'; </script>");
}
//我的订单列表
else if("orderlist".equals(method)){
//定义跳转的地址
url = "indexServlet/orderlist";
//获取查询的信息
String orderid = request.getParameter("orderid");
String status = request.getParameter("status");
//组装查询的SQL语句
StringBuffer sb = new StringBuffer();
sb.append(" where ");
if(orderid!=null&&!"".equals(orderid)){
sb.append(" orderid like '%"+orderid+"%' ");
sb.append(" and ");
request.setAttribute("orderid", orderid);
}
if(status!=null&&!"".equals(status)){
sb.append(" status like '%"+status+"%' ");
sb.append(" and ");
request.setAttribute("status", status);
}
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
sb.append(" userid="+user.getId()+" order by id desc ");
String where = sb.toString();
//获取当前的页数
if(request.getParameter("pagenum")!=null){
pagenum = Integer.parseInt(request.getParameter("pagenum"));
}
//从数据库查询列表信息,带分页功能
Map<String,List<Dingdan>> map = dingdanDao.getList(pagenum,pagesize,url,where);
String pagerinfo = map.keySet().iterator().next();
List<Dingdan> list = map.get(pagerinfo);
//返回给jsp页面的信息
request.setAttribute("pagerinfo", pagerinfo);
request.setAttribute("list", list);
//定义跳转的地址
RequestDispatcher dispatcher = request.getRequestDispatcher("/orderlist.jsp");
//跳转操作
dispatcher.forward(request, response);
}
//跳转查看订单详情页面
else if("dingdanupdate3".equals(method)){
Dingdan bean = dingdanDao.selectBean(" where id= "+request.getParameter("id"));
request.setAttribute("bean", bean);
RequestDispatcher dispatcher = request.getRequestDispatcher("/dingdanupdate3.jsp");
dispatcher.forward(request, response);
}
}
}
首页管理控制器
//首页Servlet
public class ShouyeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void destroy() {
super.destroy();
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置获取的参数的编码格式
request.setCharacterEncoding("utf-8");
//分页页数定义
int pagenum =1;//当前页
int pagesize = 10;//每页显示的数量
ProductDao ProductDao = new ProductDao();
String pname = request.getParameter("pname");
String fenleiid = request.getParameter("fenleiid");
String tuijian = request.getParameter("tuijian");
String jiage1 = request.getParameter("jiage1");
String jiage2 = request.getParameter("jiage2");
String url = "shouye";
if(request.getParameter("pagenum")!=null){
pagenum = Integer.parseInt(request.getParameter("pagenum"));
}
StringBuffer sb = new StringBuffer();
sb.append(" where ");
if(jiage1!=null&&!"".equals(jiage1)){
sb.append(" jiage >= "+jiage1+"");
sb.append(" and ");
request.setAttribute("jiage1", jiage1);
}
if(jiage2!=null&&!"".equals(jiage2)){
sb.append(" jiage <= "+jiage2+"");
sb.append(" and ");
request.setAttribute("jiage2", jiage2);
}
if(pname!=null&&!"".equals(pname)){
sb.append(" pname like '%"+pname+"%' ");
sb.append(" and ");
request.setAttribute("pname", pname);
}
if(fenleiid!=null&&!"".equals(fenleiid)){
sb.append(" fenleiid like '%"+fenleiid+"%' ");
sb.append(" and ");
request.setAttribute("fenleiid", fenleiid);
}
if(tuijian!=null&&!"".equals(tuijian)){
sb.append(" tuijian = '已推荐' ");
sb.append(" and ");
request.setAttribute("tuijian", tuijian);
}
sb.append(" 1=1 order by id desc ");
String where = sb.toString();
Map<String,List<Product>> map = ProductDao.getList(pagenum,pagesize,url,where);
String pagerinfo = map.keySet().iterator().next();
List<Product> list = map.get(pagerinfo);
request.setAttribute("pagerinfo", pagerinfo);
request.setAttribute("list", list);
RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp");
dispatcher.forward(request, response);
}
}
如果也想学习本系统,下面领取。关注并回复:133jsp
版权声明:本文为hanyunlong1989原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。