JavaWeb——JSP_08学习笔记

这篇博客主要介绍了如何使用JavaWeb的session技术实现购物车功能,包括分页、登录验证、商品操作等。通过讲解dologin.jsp、index.jsp、addcar.jsp等页面的实现代码,阐述了session在购物车中的应用,强调了其临时性和性能优势。最后,作者鼓励读者深入学习不同版本的购物车实现,并预习JSTL、EL表达式和servlet。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

           该篇代码比较多,光看起来会比较枯燥。先自己了解session版本购物车的思路,尝试自己

独自去完成,之后以本篇作为参考来完成任务。效果会比较好,如果有错误的地方谢谢指出!

目录

前言:

 

一、回顾

二、分页

index.jsp 

GoodsBiz.java

GoodsDao.java

三、session实现购物车

介绍:

组成部分:

实现代码:

dologin.jsp登录处理界面

index.jsp主界面

addcar.jsp添加购物车处理界面

car.jsp购物车界面

docount.jsp订单数量减少处理界面

dodel.jsp删除订单的处理界面

四、总结:


一、回顾

用三层架构思想书写代码,规范代码。

 

二、分页

分页是网页中最常见的部分。能发现规律,当前该页显示第n~m条数据根据当前页数和每页显示几

条来决定。直接上代码!

实现代码:

index.jsp 

<%
		//实例化商品(Goods)逻辑业务层
		IGoodsBiz igb=new GoodsBiz();
		//初始化当前页数为1
		int pages=1;
		//获取点击下一页之后的页数
		String pages2=request.getParameter("pages");
		if(pages2!=null){
			pages=Integer.parseInt(pages2);
		}
		//初始化页面大小(一页显示几条数据)
		int size=3;
		//由规律可得第几页显示第n~m条数据
		int begin=(pages-1)*size+1;
		int end=pages*size;
		//调用方法读取一个几条数据
		int count=igb.getCount();
		//计算出最大页数
		int max=(int)Math.ceil((count*1.0)/size);
		//分页查询
		List<Goods> li=igb.getAll(begin,end);
		if(li!=null){
			for(Goods g:li){
		%>
		<tr>
			<td><%=g.getGid() %></td>
			<td><%=g.getGname() %></td>
			<td><%=g.getGprice() %></td>
			<td><%=g.getGinfo() %></td>
			<td><img src="<%=g.getGpath() %>"></td>
			<td><a href='addcar.jsp?gid=<%=g.getGid()%>'>添加到购物车</a></td>
		</tr>
		<% 
			}
		}
		%>
	</table>
							<!--三元运算符来判断带过去的参数pages(页数)为几 -->
	<a href='index.jsp?pages=<%=pages==1?1:pages-1 %>'>上一页</a>
	当前页数:<%=pages %>总页数:<%=max %>
	<a href='index.jsp?pages=<%=pages==max?max:pages+1 %>'>下一页</a>

GoodsBiz.java

public class GoodsBiz implements IGoodsBiz{
	IGoodsDao igd=new GoodsDao();
	
    //分页查询数据
	public List<Goods> getAll(int begin,int end) {
		return igd.getAll(begin,end);
	}
	
    //查出数据总条数
	public int getCount() {
		return igd.getCount();
	}
	
}

GoodsDao.java

public class GoodsDao implements IGoodsDao{
    
	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	private String sql;
    
	/**
	 * @param begin 当前页数开始
	 * @param end 当前页数结束
	 * @return 第begin-end条的商品
	 */
	public List<Goods> getAll(int begin,int end) {
		con=DBHelper.getCon();
        //这里是Oracle的SQL语句,所以使用了伪列rownum和子查询
        //原理都是一样,查询begin-end的数据
		sql="select * from(select g.*,rownum r from goods g)n where n.r between ? and ?";
		List<Goods> li=new ArrayList<Goods>();
		try {
			ps=con.prepareStatement(sql);
			ps.setInt(1, begin);
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张同学_java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值