Jsp+Servlet写的小作品:零食售卖网站(一)

源码放在了github上:https://github.com/PonnyDong/jsp-servlet-
前面的几篇中展示了网页的登录与注册的功能。
登录与注册一
登录与注册二
登录与注册三
登录与注册四
接下来,介绍自动登录、动态显示零食信息、购物车、添加删除零食、清空购车的功能。
首先是数据库和Myeclipse的展示:
在这里插入图片描述
数据库名为project,两个表名分别为product与user。
在这里插入图片描述
主页面的展示:
在这里插入图片描述
在这里插入图片描述
登录界面:
在这里插入图片描述
登录成功之后跳转到主页面,在原先登录的地方,动态显示用户的名字。也可以勾取自动登录按钮,即使关闭了浏览器,再打开时仍是这个用户名。
在这里插入图片描述
注册:在这里插入图片描述
点击每个零食信息都会跳转到添加购物车界面:
在这里插入图片描述
可以自定义选择购买物品的数量,添加购物车:
在这里插入图片描述
显示每个物品的单价,以及总价格。可以对每个物品进行删除、清空购物车。
在这里插入图片描述在这里插入图片描述
当购物车为空时,显示购物车为空的界面。在这里插入图片描述自动登录
自动登录部分可以继续在登录部分的Servlet中完成。首先应当判断何时自动登录?在登录界面有自动登录选项,此时我们可以判断:当自动登录的选项勾上时,我们执行自动登录的功能。

<input type="checkbox" name="autoLogin" value="autoLogin"> 自动登录

我们将其设置为autoLogin,将其传递给LoginServlet,在LoginServlet中判断其是否点击了,

	String autoLogin=request.getParameter("autoLogin");
if(autoLogin!=null){
				//编码
				String username_code = URLEncoder.encode(username, "UTF-8");
				String password_code = URLEncoder.encode(password, "UTF-8");
				Cookie cookie_username=new Cookie("cookie_username",username_code);
				Cookie cookie_password=new Cookie("cookie_password",password_code);
				cookie_username.setMaxAge(100);//自动登录持续时间
				cookie_password.setMaxAge(100);
				//设置访问路径
				cookie_username.setPath(request.getContextPath());
				cookie_password.setPath(request.getContextPath());
				//发送cookie
				response.addCookie(cookie_username);
				response.addCookie(cookie_password);
				
			}

设置编码、自动登录持续的时间、以及访问路径等。如果从jsp中传来autoLogin不为空的信息,那么,if条件便满足。
接下来设置一个自动登录的Filter过滤器。在LoginServlet中已经发送了cookie,在过滤器中需要接收cookie中的username和pasword

HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resp=(HttpServletResponse) response;
HttpSession session = req.getSession();
Cookie[] cookies = req.getCookies();
		

判断cookie中的username和password是否为空,

if(cookie_username!=null&&cookie_password!=null){
			
			UserService service=new UserService();
			User user=null;
			try {
				user=service.login(cookie_username, cookie_password);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			session.setAttribute("user", user);
		}

如果username和password不为空,那么就传递到Service层,由service层传递到Dao层,

public User login(String username, String password) throws SQLException {
		// TODO Auto-generated method stub
		UserDao dao=new UserDao();
		return dao.login(username,password);
		
	}

信息传递到dao层之后,经Dao层向数据库中查询之后,返回查询的结果:

public User login(String username, String password) throws SQLException {
		// TODO Auto-generated method stub
		QueryRunner runner=new QueryRunner(DataSourceUtils.getDataSource());
		String sql="select * from [user] where username=? and password=?";
		return  runner.query(sql, new BeanHandler<User>(User.class), username,password);
	}

自动登录与登录部分有相似之处,两者都需要Service层接收username和password,并将其传递给Dao层,由Dao层向数据库中判断传递过来的username和password是否在数据库中已经已经存在。而自动登录需要在登录的基础上,判断是否已经勾选autoLogin。
动态显示Username
我们实现了登录的功能之后,如何知道当前的Username是什么?能否动态显示当前当前用户名?
在这里插入图片描述
回到head.jsp中,如果已经实现了登录,那么用户名也就不为空,此时需要判断:如果username不为空,那么就显示username;如果username为空,那么就继续显示登录链接。
引入JSTL

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:if test="${empty user }">
			<li><a href="login.jsp">登录</a></li>
			<li><a href="register.jsp">注册</a></li>
		</c:if>
		
		<c:if test="${!empty user }">
			<li>欢迎您:${user.username }</li>
			<li><a href="#">退出</a></li>
		</c:if>
			<li><a href="cart.jsp">购物车</a></li>
			<li><a href="#">帮助中心</a></li>
  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
项目介绍: 此项目是实现商品的从后台填商品信息、商品上架(立即上架 或 定时上架),到前台用户可见可商品后进行购买(购物车 或 立即购买)后的待结算、待支付状态,再到用户支付(模拟支付,暂时没有实现)后商品的状态为待发货,后台管理人员进行发货操作后填运单号码并确认发货,再到用户收到商品后点击确认收货、评价订单,最后订单状态已完成的整个在线购物的商品交易流程。 * 商品上架-> 待结算 ->待支付 ->待发货 ->待收货 ->待评价 ->已完成 同时此项目配备了完善的开发文档( 60+ 页 ),涵盖了整个系统的需求分析、功能分析、系统设计、数据库设计、系统模块设计和系统实现等内容,可以为项目的学习者或使用者提供很好的辅助作用。 技术栈: Spring + SpringMVC + MyBatis + Redis + RabbitMQ + Quartz + Bootstrap 后端使用 SSM 作为主框架进行开发,集成 Redis 内存缓存、RabbitMQ 消息队列和 Quartz 作业调度框架。 前端使用 JSP 和 Bootstrap 来进行项目开发。 项目亮点: 1)使用 Spring + SpringMVC + MyBatis + Redis + RabbitMQ + Quartz + Bootstrap 进行项目整合开发 2)使用 Redis 实现购物车功能和商品信息的数据缓存功能,提高系统的响应速度并降低数据库的访问压力 3)使用 RabbitMQ 实现订单的异步化处理和系统的日志处理,提升系统对用户操作的响应速度并降低模块之间的耦合程度 4)使用 Spring AOP 在不侵入系统代码的基础上实现系统的日志收集、权限校验和数据埋点等功能 5)使用 Quartz 实现商品的自定义定时上架功能,为用户提供更高的操作灵活性

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值