JavaWeb购物商城

2023-11-18

 系统前台

 

前台用户操作:

    账号:test密码:test

  1.  登录页面
  2. 商品浏览
  3. 商品详情
  4. 购物车
  5. 订单页面


 
系统后台

 

 

后台用户操作:

    账号:admin密码:admin

  1.  用户登录页面
  2. 后台主页
  3. 添加商品
  4. 编辑商品
  5. 删除商品

数据库

 

 

 

 


 部分代码

 login.jsp

        用户登录页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>用户登录页面</title>

<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">  
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>

</head>
<body background="images/login.jpg">
<div class="container" style="height:auto;width:auto;margin:auto 24%  auto 30%;">
<h1 class="text-center" style="margin-top: 5%;">用户登录</h1>
	<form class="form-horizontal" role="form" name="form1" method="post" action="Login" style="margin-top: 10%;margin-left: 10%;">
		<div class="form-group">
			<label for="user" class="col-sm-2 control-label">用户名:</label>
			<div class="col-sm-6">
				<input name="user_name" type="text" class="form-control" id="user" style="background-color: transparent;"/>
			</div>
		</div>
			<div class="form-group">
				<label for="password" class="col-sm-2 control-label">密码:</label>
			<div class="col-sm-6">
				<input name="user_password" type="password" class="form-control" id="password" style="background-color: transparent;"/>
			<c:choose>
				<c:when test="${param.loginInfo eq 'wrong'}">
					<strong  style="color:red">用户名或密码错误!</strong>
				</c:when>
				<c:when test="${param.loginInfo eq 'no'}">
					<strong  style="color:red">请先登录!</strong>
				</c:when>
			</c:choose>
			</div>
		</div>
				
		<div class="form-group">
			<div class="col-sm-offset-4 col-sm-10">
				<button type="submit" class="btn btn-default btn-lg" style="background:rgba(255, 251, 240, 0.4);">
				<span class="glyphicon glyphicon-log-in"></span> 登录</button>
			</div>
		</div>
	</form>
</div>

</body>
</html>

 LoginServlet.java

        登录后端代码

package servlet;

import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import domain.User;
import service.UserService;



/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/Login")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    UserService userService=new UserService();
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("UTF-8");//解决post方式的汉字请求乱码
		response.setContentType("text/html;charset=utf-8");
		String name =request.getParameter("user_name");//获得参数,name=""
		String pwd = request.getParameter("user_password");
		System.out.println("账号:"+name+"密码:"+pwd);
		try{
			if(userService.login(name,pwd)){
				User user = new User();
				user.setUsername(name);
				HttpSession session =request.getSession();//获取session对象
				session.setAttribute("user", user);//设置属性名user,保存user对象
				if(userService.isadmin(name)){
					response.sendRedirect("productServlet?method=admin");
				}else{
					response.sendRedirect("productServlet?method=query");
				}
			}else{
				response.sendRedirect("login.jsp?loginInfo=wrong");
			}
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
}

 showpoducts.jsp

        前台主页

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>商品页面</title>

<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">  
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>

<style>
body{
	background: none repeat scroll 0 0 #fff;
    color: #661;
    font: 20px/200% Arial,Verdana,"宋体";
}
li{
	display: inline-block;
}

.gl-i-wrap{
	font-size:16px;
	margin: 10px 18px 20px 18px;
}
.p-price{
	color:red;
	font-size:16px;
}	
.p-name{
	font-weight:bold;
	font-size:16px;
	display: block;
	width:200px;/*对宽度的定义,根据情况修改*/
	overflow: hidden;
	white-space: nowrap;
	text-overflow: clip;
}
.p-name a:link{/* 未访问链接*/
	color:#000000;
}      
.p-name a:visited {/* 已访问链接 */
	color:#6633FF;
}  
.p-name a:hover {/* 鼠标移动到链接上 */
	color:#333399;
}  
.p-name a:active { /* 鼠标点击时 */
	color:#0000FF;
} 
</style>
</head>
<h3 class="text-center">商品</h3>
<body>
<div style="padding-left: 75%;">
	<strong>当前登录的用户为:${user.username }</strong>
	<a href="productServlet?method=loginOut" >
		<button  class="btn btn-default btn-lg" style="color: rgb(255, 140, 60);font-size: 5px">
			<span class="glyphicon glyphicon-log-out"></span> 退出登录
		</button>
	</a>
</div>
<hr style="border-top: 2px solid #333;">
<ul>
	<c:forEach items="${requestScope.productList }" var="p">
		<li>
			<div class="gl-i-wrap">
				<div>
					<a class="thumbnail" href="productServlet?method=details&id=${p.id }" target="_blank">
						<img width="190" height="190"  src="${pageContext.request.contextPath}/images/${p.imgurl}">
					</a>
				</div>
				<div class="p-name"><a href="productServlet?method=details&id=${p.id }">${p.name }</a></div>
				<div class="p-price" >
					<strong>¥${p.price }</strong>
				</div>
			</div>
		</li>
	</c:forEach>
</ul>
</body>
</html>

productList.jsp

        后台主页

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">  
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>

<title>后台管理</title>
</head>
<body style="background:rgba(100, 120, 255, 0.2);">
<div>
	<div style="padding-left: 80%;">
		<strong>当前登录的用户为:${user.username }</strong>
		<a href="productServlet?method=loginOut" >
			<button  class="btn btn-default btn-lg" style="color: rgb(255, 140, 60);font-size: 5px;background:rgba(255, 251, 240, 0.4)">
				<span class="glyphicon glyphicon-log-out"></span> 退出登录
			</button>
		</a>
	</div>
	<a href="productServlet?method=toAdd" >
		<button  class="btn btn-default btn-lg" style="color: rgb(255, 140, 60);font-size: 20px;background:rgba(255, 251, 240, 0.4)">
			<span class="glyphicon glyphicon-plus"></span> 添加
		</button>
	</a>
</div>
<table class="table table-hover" style="width:98%;align:center;background:rgba(255, 251, 240, 0.4);" border="1" >
		<tr  align="center">
			<th>商品ID</th>
			<th></th>
			<th>商品名</th> 
			<th>价格</th>
			<th>操作</th> 
		</tr>  
	  <c:forEach items="${requestScope.productList}" var="p"> 
		<tr align="center">
				<td >${p.id}</td> 
				<td><img src="images/${p.imgurl }" class="img-thumbnail" width="60" height="60"></td>
				<td >${p.name}</td> 
				<td >${p.price}</td> 
				<td ><a href="productServlet?method=toEdit&id=${p.id }">编辑</a>
				<a href="#" onclick="confirmDel(${p.id })">删除</a></td> 
		</tr>			 
	 </c:forEach>				 
</table> 
<script>
function confirmDel(id){
	if(window.confirm("您确定要删除该条商品信息吗?")){
		document.location="productServlet?method=delete&id="+id
	}
}
</script>
</body>
</html>

完整代码

下载地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb购物商城 的相关文章

随机推荐

  • OpenCV源码编译xfeatures2d.VGG出错解决

    OpenCV源码编译xfeatures2d VGG出错解决 在使用OpenCV进行计算机视觉任务时 xfeatures2d模块是一个非常有用的工具 它提供了许多先进的特征检测和描述算法 其中之一是VGG算法 它是一种基于深度学习的图像描述算
  • Qt启动页多线程

    Qt启动页多线程 项目需要在Qt进入启动页之前加载一个大模型文件 同时要有一个页面用来提示用户加载状态 这里就需要用到多线程了 如果在单线程操作 要么需要等到文件加载完毕后才能显示等待页 要么干脆跳过了模型文件的加载 都是不符合需求的 我们
  • python中的且和或怎么表示_python中逻辑与或(and、or)和按位与或异或(&、

    按位与或 按照二进制进行逻辑运算 例如 数字换成二进制 各自位上的0 1进行逻辑运算 得到的结果转换为数字 3 2 0111 0010 0010 2 二进制逻辑运算规则 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 1 1
  • 软件测试复习(4)----测试用例的编写

    软件测试的编写有这几大不可缺少的元素 测试目标 测试环境 输入数据 步骤 期望结果 看例题 根据如下登录界面设计两个测试用例 设计两个测试用例 我们可以从正反两面设计 设计一个正确成功登录的用例 再设计一个登录失败的用例 测试用例1 测试目
  • 大数据与人工智能入门到放弃(01 回顾篇linux--网络,服务,克隆)

    前言 为了从头到尾的搞透 了解运用 大数据和AI 所以从今天开始 决定从头开始 从0开始回顾 到项目实战 在工作之余能抽出时间来完善大数据和AI的学习的过程 所以会从项目的搭建过程开始做起 每周至少3次更新博客 希望不会放弃 做这些记录的原
  • mybatis-plus之代码生成器07

    mybatis plus之代码生成器07 AutoGenerator 是 MyBatis Plus 的代码生成器 通过 AutoGenerator 可以快速生成 Entity Mapper Mapper XML Service Contro
  • 百度网盘无法登陆,二维码不显示,密码、验证码登陆显示‘网络异常’解决方法

    如图所示 二维码加载不出来 账号也不能登陆 但是其他软件一切正常 IE重置 防火墙 注册表 卸载重装 各种方法都无法解决 解决办法 连接手机WiFi后二维码加载出来 问题解决 所以换一个网登陆就可以了
  • linux 和 windows usb插拔侦测

    1 windowsU口探测事件 设备事件 WM DEVICECHANGE 首先要创建一个窗口 把设备事件和窗口关联 HWND h CreateWindow TEXT USB EVENT TEXT 0 0 0 0 0 0 0 GetModul
  • c语言经典程序合集

    1 c语言计算自然数之和 计算自然数和 include
  • SpringBoot+ Mybatis plus 配置多个数据源 (MySql)

    首先配置 yml 然后创建对应的 配置文件 然后复制下方的代码 进行粘贴 Configuration MapperScan basePackages com example chassis mapper chassis mapper sql
  • 关于一个栈的输入顺序是a,b,c,d,e则下列序列中不可能是出栈顺序

    经常在笔试的时候会看见这样类似的笔试题 就是关于一个栈的输入顺序是a b c d e则下列序列中不可能是出栈顺序 很多人都知道栈是先进后出 但是还是做好这道题 以一道题目为例给大家讲讲这道题目应该怎么做 题目 一个栈的输入顺序是a b c
  • 【Linux】深入理解文件操作

    文章目录 初次谈论文件 重温C语言文件操作 系统文件操作接口 open write read 再次谈论文件 文件描述符 文件描述符的分配规则 重定向 什么是重定向 重定向的本质 系统调用接口实现重定向 lt gt gt gt 初次谈论文件
  • Spring Boot中获取当前Request和Response实例的方法

    获取Request HttpServletRequest request ServletRequestAttributes RequestContextHolder getRequestAttributes getRequest 获取Res
  • uni-app在App平台如何实现升级更新?

    使用 uni app 开发 可将代码编译到iOS Android 微信小程序等多个平台 升级时也需考虑多平台同步升级 uni app发布为小程序的升级模式较简单 只需将开发完的代码提交小程序后台 待审核通过后用户将自动升级 App端的升级
  • STM32CubeIDE(串口)

    目录 一 轮询模式 1 1 配置USART2为异步模式 1 2 500ms发送一次消息 1 3 通信结果 1 4 串口控制LED 二 中断收发 2 1 开启中断 2 2 中断发送接收 2 2 1 中断发送只需要调用接口 2 2 2 中断接收
  • 二、文件管理命令

    2 文件管理命令 2 1文件管理 2 1 1touch新建文件指令 touch 当文件不存在时命令为新建文件 当文件存在时命令为修改文件时间戳 touch file1 file2 新建多个文件 touch t 11111111 11 修改文
  • 【算法】邻居好说话——冒泡排序

    简化版的桶排序不仅仅有上一节所遗留的问题 更要命的是 它非常浪费空间 例如需要排序数的范围是0 2100000000之间 那你则需要申请2100000001个变量 也就是说要写成int a 2100000001 因为我们需要用2100000
  • 关于EasyUI Datagrid JSON对象内嵌对象的取值问题

    如有这样一个JSON对象 1 goods 2 id 1 category id 1 name category1 name NameA shelfLife 12 3 id 1 category id 1 name category1 nam
  • 【hello Linux】进程间通信——共享内存

    目录 前言 1 System V共享内存 1 共享内存的理解 2 共享内存的使用步骤 3 共享内存的使用 1 共享内存的创建 查看共享内存 2 共享内存的释放 3 共享内存的挂接 4 共享内存的去挂接 4 共享内存的使用示例 1 两进程挂接
  • JavaWeb购物商城

    系统前台 前台用户操作 账号 test密码 test 登录页面 商品浏览 商品详情 购物车 订单页面 系统后台 后台用户操作 账号 admin密码 admin 用户登录页面 后台主页 添加商品 编辑商品 删除商品 数据库 部分代码 logi