作者主页:源码空间站2022

简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

本项目分为前后台,前台为普通用户登录,后台为管理员登录;
用户角色包含以下功能:
用户登录,查看首页,提交留言,查看商品详情,查看购物车,提交订单,查看我的订单,添加租赁人信息,修改会员资料等功能。

管理员角色包含以下功能:
管理员登录,会员信息管理,用户信息管理,资讯管理,友情链接管理,滚动图片管理,关于我们管理,服装类别管理,租赁方式管理,服装管理,库存管理,订单管理,留言管理等功能。

环境需要

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

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目;
3. 将项目中util/SimpleDataSource.java配置文件中的数据库配置改为自己的配置;

运行截图

前台界面-用户角色

后台界面-管理员角色

相关代码

登录控制器

public class LoginFilter implements Filter {public void destroy() {// TODO Auto-generated method stub}public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stubHttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) res;HttpSession session = request.getSession();// 如果session不为空,则可以浏览其他页面String url = request.getServletPath();//System.out.println(url);String path = request.getRequestURI();//这里判断目录,后缀名,当然也可以写在web.xml中,用url-pattern进行拦截映射if ((!request.getServletPath().equals("/admin/login.action"))&& (!request.getServletPath().equals("/admin/login.jsp"))&& (!request.getServletPath().equals("/admin/relogin.jsp"))&& (!request.getServletPath().equals("/admin/lib/font-awesome/css/font-awesome.css"))&& (!request.getServletPath().equals("/admin/lib/bootstrap/js/bootstrap.js"))&& (!request.getServletPath().equals("/admin/lib/jquery-1.7.2.min.js"))&& (!request.getServletPath().equals("/admin/stylesheets/theme.css"))&& (!request.getServletPath().equals("/admin/lib/bootstrap/css/bootstrap.css"))) {// 登陆页面无需过滤if(path.indexOf("/admin/login.jsp") > -1) {chain.doFilter(request, response);return;}if (session.getAttribute("admin") == null) {session.invalidate();response.setContentType("text/html;charset=gb2312");PrintWriter out = response.getWriter();out.println("<script language='javascript' type='text/javascript'>");out.println("alert('由于你长时间没有操作,导致Session失效!请你重新登录!');parent.location.href='" + request.getContextPath() + "/admin/login.jsp'");out.println("</script>");} else {chain.doFilter(request, response);}} else {chain.doFilter(request, response);}}public void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}

分页管理控制器

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;/** 仅仅只是加到路径中去*/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"));} 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语句* */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() {StringBuffer buf = new StringBuffer();buf.append("<font color='#1157B7'>共").append(count);buf.append("条");buf.append("&nbsp;&nbsp;");buf.append("第").append(this.currentPage).append("/").append(this.pageNumber).append("页");buf.append("&nbsp;&nbsp;&nbsp;&nbsp;");if (this.currentPage == 1)buf.append("首页");elsebuf.append("<a href='").append(this.path).append("&currentPage=1").append(parameter).append("' class='ls'>").append("首页").append("</a>");// #1157B7buf.append("&nbsp;&nbsp;&nbsp;");if (this.currentPage > 1) {buf.append("<a href='").append(this.path).append("&currentPage=").append(currentPage - 1).append(parameter).append("' class='ls'>").append("上页").append("</a>");} else {buf.append("上页");}buf.append("&nbsp;&nbsp;");int currentSegment = this.currentPage % segment == 0 ? this.currentPage/ segment : this.currentPage / segment + 1;/*for (int i = 1; i <= this.pageNumber; i++) {if (this.currentPage == i)buf.append("<font color='red'>").append(i).append("</font>");elsebuf.append("<a href='").append(this.path).append("&currentPage=").append(i).append(parameter).append("' class='ls'>[").append(i).append("]</a>");}*/buf.append("&nbsp;&nbsp;");if (this.currentPage < this.pageNumber) {buf.append("<a href='").append(this.path).append("&currentPage=").append(currentPage + 1).append(parameter).append("' class='ls'>").append("下页").append("</a>");} else {buf.append("下页");}buf.append("&nbsp;&nbsp;&nbsp;&nbsp;");if (this.currentPage == this.pageNumber)buf.append("末页&nbsp;&nbsp;");elsebuf.append("<a href='").append(this.path).append("&currentPage=").append(this.pageNumber).append(parameter).append("' class='ls'>").append("末页").append("</a></font>&nbsp;&nbsp;");// // for (int i = 0; i < this.pageNumber; i++) {// if (this.currentPage == i + 1) {// buf.append("<font color=red>[" + (i + 1) + "]</font>").append(// "&nbsp;");// } else {// buf.append("<a href='").append(this.path).append(// "&currentPage=").append(i + 1).append(parameter)// .append("' style='TEXT-DECORATION:none'>").append(// "[" + (i + 1) + "]").append("</a>&nbsp;");// }// }buf.append("<select class='input-xlarge' onchange=\"javascript:window.location='").append(this.path).append("&currentPage='+").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>");elsebuf.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 class StrUtil {private static int idSequence=10000;public static String checkStr(Object obj) {if(obj==null){return "";}else{return obj.toString();}      }public synchronized static String generalSrid() {StringBuffer ret = new StringBuffer(20);     ret.append(StrUtil.getFormatDate("yyyyMMddHHmmss"));      idSequence++;if(idSequence>20000)idSequence-=10000;ret.append(String.valueOf(idSequence).substring(1));//System.out.println("生成ID="+ret);return ret.toString();}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 static String parseOS(String agent) {String system="Other";if(agent.indexOf("Windows NT 5.2")!=-1) system="Win2003";else if(agent.indexOf("Windows NT 5.1")!=-1) system="WinXP";else if(agent.indexOf("Windows NT 5.0")!=-1) system="Win2000";else if(agent.indexOf("Windows NT")!=-1) system="WinNT";else if(agent.indexOf("Windows 9")!=-1) system="Win9x";else if(agent.indexOf("unix")!=-1) system="unix";else if(agent.indexOf("SunOS")!=-1) system="SunOS";else if(agent.indexOf("BSD")!=-1) system="BSD";else if(agent.indexOf("linux")!=-1) system="linux";else if(agent.indexOf("Mac")!=-1) system="Mac";elsesystem = "Other";      return system;}/*** 得到当前日期的格式化字符串* * @param formatString* 如:yyyy(年)-MM(月)-dd(日)-HH(时)-mm(分)-ss(秒)-SSS(毫秒)* @return 格式化过的当前日期字符串*/public static String getFormatDate(String formatString) {Date now =new Date(System.currentTimeMillis());SimpleDateFormat sdf=new SimpleDateFormat(formatString);String ret=sdf.format(now);return ret;}    /*** @param 无* @return 当前日期*/public static Date getCurrentDate() {Date now =new Date(System.currentTimeMillis());return now;}/*** 将格式化的日期字符串转换为日期。* * @param formatString* 如:yyyy(年)-MM(月)-dd(日)-HH(时)-mm(分)-ss(秒)-SSS(毫秒)* @return 字符串转换后的日期。*/public static Date formatDate(String dateString) {try {SimpleDateFormat sdf=new SimpleDateFormat();    Date date=sdf.parse(dateString);return date;} catch (ParseException e) {           return new Date();}     }public static String nowdate(){SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式return df.format(new Date());// new Date()为获取当前系统时间}public static int parseInt(String numberStr) {//Pattern pattern=Pattern.compile("[0-9]*");//Pattern pattern=Pattern.compile("^[\\-\\d][0-9]*[\\.]{0,1}[0-9]+$");if(numberStr==null)return 0;Pattern pattern=Pattern.compile("^[\\-]{0,1}[0-9]+$");Matcher matcher = pattern.matcher(numberStr);if(matcher.find()){return Integer.parseInt(numberStr);}else{return 0;}         }public static String szqc(String[] src) {List<String> numList = new ArrayList<String>();for (String i : src)numList.add(i);Collections.reverse(numList);String result = "";for (String str : numList) {result += str+",";}result = result.substring(0,result.length() - 1);return result;}}

如果也想学习本系统,下面领取。关注并回复:139jsp

Java项目:JSP汉服服饰租赁展示商城项目相关推荐

  1. java计算机毕业设计汉服服装租赁系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计汉服服装租赁系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计汉服服装租赁系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...

  2. java计算机毕业设计汉服服装租赁系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计汉服服装租赁系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计汉服服装租赁系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B/S ...

  3. java servlet项目源码下载_java网上商城项目源码(jsp.servlet+javabean+mysql+jdbc)

    [实例简介] 网上商城所有基本功能实现. 包含所有图片等资源 包含数据库创建脚步 开发环境 jdk1.7 myeclipse10 tomcat6.0 mysql 5 [实例截图] [核心代码] 325 ...

  4. java+servlet+jsp大学生物品租赁网

    本网站包括首页.用户注册页面.用户登录页面.用户个人中心以及管理员管理界面. 1首页 为各类租赁物的展示以及交易详情,分为服装类.器材类.生活用品类以及道具类.每个大类有各个小类. 2用户注册页面 需 ...

  5. java怎么添加商品信息_Javaweb网上商城项目实战(20)添加商品到购物车

    原理分析 具体实现 准备工作 有些准备工作在之前已经实现了,这里强调一下,如果没改的自己改一下,已经完成了的也检查一下. 1.在product_list.jsp中修改链接 2.product_info ...

  6. Java进阶-案例训练(十七)(商城项目(2))

    文章目录 一.登录权限校验 二.七天内自动登录(分两步走) 2.1 第一步(存放到cookie中) 2.2 第二步(再次登录用户名密码还在输入框) 三.权限修改 四.批量删除 五.分类分页查询 六.分 ...

  7. java 前台商品展示模块_SSH框架网上商城项目第10战之搭建商品类基本模块

    前面我们完成了与商品类别相关的业务逻辑,接下来我们开始做具体商品部分. 1. 数据库建表并映射Model首先我们在数据库中新建一张表,然后使用逆向工程将表映射成Model类,表如下: /*====== ...

  8. 基于JAVA+Servlet+JSP+MYSQL的在线鲜花商城系统

    项目功能: 页面效果:

  9. 基于java(jsp)校园水果鲜花商城设计与实现毕业设计毕设参考

    功能介绍 本次论文研究的内容主要模块包括以下几点: 用户首次登陆系统需要注册一个用户账号,用户在登录平台后,可以进行平台的操作. (1)登录功能:注册普通账号登录:登录后可以修改用户的基本信息,也可以 ...

最新文章

  1. 我在旷视研究院做检测 | 技术头条
  2. PYTHON编程导论群【提问与解惑】数据统计
  3. LeetCode 148. Sort List--面试算法题--C++,Python解法
  4. Silverlight获取WebHost配置信息--WebClient和XmlSerializer模拟
  5. 欢迎使用markdown编辑器20181206
  6. 剑指Offer:剪绳子(动态规划、贪婪算法)
  7. java抽象类异常_求教JAVA里面的错误继承抽象类我都已经看傻了。
  8. python 代码行数统计工具_使用Python设计一个代码统计工具
  9. 【数据结构与算法】车辆路径问题(Vehicle Routing Problem,VRP)
  10. 创建oracle本地数据库步骤详解
  11. caxa发生文件读写异常_文件和异常
  12. mac电脑usb连接android手机,【已解决】安卓手机小米9如何连接到Mac电脑中去拷贝手机中图片...
  13. java的create vm_JNI_CreateJavaVM(Runtime::Create())
  14. nice计算机英语,不错的英文,nice的三种意思?
  15. 基于51单片机的四位共阴数码管秒表proteus仿真
  16. 用Excel完成专业化数据统计、分析工作
  17. 如何获取当前配置的IPV6地址的前缀长度(掩码)
  18. BAT脚本,批量替换文件名的指定字符
  19. ODFM详解(原理+调制解调)
  20. html搜索框怎么设置透明度

热门文章

  1. Nginx静态资源配置
  2. java图片上传保存至服务器并返回可下载的URL
  3. 2019年定制安卓app开发的五大优势
  4. 业务运营管理系统OESOP v1.0
  5. 源码分析学习记录(5)——骨骼存储与建立
  6. Asp.Net Core 入门(四)—— Model、View、Controller
  7. MATLAB-中值滤波原理、实现及应用
  8. 简单的nginx安装配置,如何查看访问运行状态
  9. 最全网络安全框架及模型介绍
  10. gitLab ssh密匙配置