JavaWEB快速入门之分页【09】

一、回顾oracle中的伪列

            rownum伪列

           需求:根据伪列实现查询tb_news表中的第一条到第五条记录

           方案:将rownum伪列字段变成明列字段

           代码: select b.* from ( select a.*,rownum as rid from tb_news a ) b where b.rid between 1 and 5;

           具体显示:

二、javaweb分页

          实现javaweb中的数据分页将依赖于伪列

  (1)分析每一页显示多少条数据

  (2)找到每一页与条数之间的关系

  (3)将找到的sql规律利用到javaweb中

  (4)编写分页和显示条数的方法

          4.1 简单的分页和显示条数的方法功能

	public List<News> queryNewsAll3(int pageIndex,int pageSize) {
		//根据参数pageIndex和pageSize来计算区间查询的规律
		int start = (pageIndex-1)*pageSize +1;
		int end = pageIndex * pageSize;
		
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		List<News> list = new ArrayList<News>();
		try {
			conn = DBHelper.getConn();
			String sql = "select b.* from ( select a.*,rownum as rid from tb_news a ) b where b.rid between "+start+" and "+end+"";
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			while(rs.next()) {
				//获取分类编号rs.getInt("ntid");
				Theme theme = new ThemeDaoImpl().getThemeByTid(rs.getInt("ntid"));
				list.add(new News(rs.getInt("nid"), theme, rs.getString("ntitle"), rs.getString("nauthor"),
						rs.getString("nsummary"), rs.getString("ncontent"),
						rs.getString("nimage"), rs.getString("ndate"), rs.getInt("ncount")));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(conn, ps, rs);
		}
		return list;
	}


	@Override
	public int getNewsCount() {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		int count = 0;//保存表的总记录数
		try {
			conn = DBHelper.getConn();
			String sql = "select count(*) from tb_news";
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			if(rs.next()) {
				count = rs.getInt(1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(conn, ps, rs);
		}
		return count;
	
	}

       4.2 携带模糊查询的分页和显示条数的方法功能

@Override
	public int getNewsCount(String strName) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		int count = 0;//保存表的总记录数
		try {
			conn = DBHelper.getConn();
			String sql = "select count(*) from tb_news where ntitle like '%"+strName+"%'";
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			if(rs.next()) {
				count = rs.getInt(1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(conn, ps, rs);
		}
		return count;
	
	}
	
	
	
	@Override
	public List<News> queryNewsAll5(int pageIndex,int pageSize,String strName) {
		//根据参数pageIndex和pageSize来计算区间查询的规律
		int start = (pageIndex-1)*pageSize +1;
		int end = pageIndex * pageSize;
		
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		List<News> list = new ArrayList<News>();
		try {
			conn = DBHelper.getConn();
			String sql = "select b.* from (\r\n" + 
					"       select a.*,rownum as rid from (\r\n" + 
					"               select * from tb_news where ntitle like '%"+strName+"%'\r\n" + 
					"        )a\r\n" + 
					")b where b.rid between "+start+" and "+end+"";
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			while(rs.next()) {
				//获取分类编号rs.getInt("ntid");
				Theme theme = new ThemeDaoImpl().getThemeByTid(rs.getInt("ntid"));
				list.add(new News(rs.getInt("nid"), theme, rs.getString("ntitle"), rs.getString("nauthor"),
						rs.getString("nsummary"), rs.getString("ncontent"),
						rs.getString("nimage"), rs.getString("ndate"), rs.getInt("ncount")));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(conn, ps, rs);
		}
		return list;
	}

  (5)主页代码显示(携带模糊查询)

                 <ul class="classlist">
					<%	
						request.setCharacterEncoding("utf-8");
						INewsDao ind = new NewsDaoImpl();
						int pageIndex = 1;
						int pageSize = 5;
						
						String pIndex = request.getParameter("pageIndex");
						if(null!=pIndex){
							pageIndex = Integer.valueOf(pIndex);
						}
						String strName = request.getParameter("strName");
						if(strName==null){
							strName="";
						}
						int count = ind.getNewsCount(strName); 
						int pageMax = 0;
						if(count % pageSize == 0){
							pageMax = count / pageSize;
						}else{
							pageMax = count / pageSize +1;
						}
						List<News> listNews = ind.queryNewsAll(pageIndex,pageSize,strName);
						for(News news:listNews){
					%>
						<li> 
							<!-- 新闻标题 -->
							<a href='#'><%=news.getNtitle() %></a> 
							<span> 
								作者:<%=news.getNauthor() %> 
								&#160;&#160;&#160;&#160; 
								<a href='#'>修改</a> 
								&#160;&#160;&#160;&#160; 
								<a href='javascript:void(0)' onclick='clickdel()'>删除</a>
							</span> </li>
					<%
						}
					%>
					
					<li class='space'></li>
					<p align="right" style = "font-size:15px;font-weight: bold"> 
						当前页数:[<%=pageIndex %>/<%=pageMax %>]&nbsp; 
						<a href="admin.jsp?pageIndex=1&strName=<%=null!=strName?strName:""%>">首页</a>
						<a href="admin.jsp?pageIndex=<%=pageIndex-1<0?1:pageIndex-1%>&strName=<%=null!=strName?strName:""%>">上一页</a>
						<a href="admin.jsp?pageIndex=<%=pageIndex+1>pageMax?pageMax:pageIndex+1%>&strName=<%=null!=strName?strName:""%>">下一页</a>
						<a href="admin.jsp?pageIndex=<%=pageMax%>&strName=<%=null!=strName?strName:""%>">末页</a> 
					</p>
				</ul>

   (6)结果界面显示

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaWeb是一种用Java语言来开发动态网页的技术栈。它包括了Servlet和JSP两个主要的技术组件。JavaWeb的开发速度很快,功能也很强大,并且具有跨平台的特点。 JavaWeb可以用来开发静态网页和动态网页。静态网页是指提供给所有人看的数据始终不会发生变化,而动态网页是指提供给所有人看的数据会随着时间和地点的不同而发生变化。大部分网站都属于动态网页。在Java中,动态网页开发的技术统称为JavaWebJavaWeb采用B/S架构,即浏览器和服务器之间的交互。相比之下,C/S架构是客户端和服务器之间的交互。JavaWeb被广泛使用,因为它可以处理高并发、高性能和高可用性的问题,并且语法类似于ASP。 如果你想快速入门JavaWeb,你可以首先学习Servlet和JSP的基本语法和用法。Servlet是JavaWeb中的核心组件,用于处理请求和响应。JSP则是一种在HTML中嵌入Java代码的技术,可以方便地生成动态内容。你可以通过学习这两个组件的基础知识,了解JavaWeb的基本工作原理和开发流程。然后,你可以进一步学习JavaWeb框架,如Spring MVC和Struts,以提高开发效率和代码质量。还可以学习数据库连接和操作、前端技术等相关知识,以完善你的JavaWeb开发技能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [JavaWeb入门](https://blog.csdn.net/Massimo__JAVA/article/details/124496596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ning_ning_03

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

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

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

打赏作者

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

抵扣说明:

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

余额充值