JSP + TAG 实现分页(Tomcat 9)

news/2025/2/26 13:37:25

=========java文件

package org.rain.tag;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.PageContext;

import javax.servlet.jsp.tagext.SimpleTagSupport;

public class SmallRainJSPInTag extends SimpleTagSupport {

private Integer smallRainTotals;

private Integer smallRainTotalPages;

private Integer smallRainCounts = 10;

private String uri;

private String parameterName;

public String getParameterName() {

return parameterName;

}

public void setParameterName(String parameterName) {

this.parameterName = parameterName;

}

public Integer getSmallRainTotals() {

return smallRainTotals;

}

public void setSmallRainTotals(Integer smallRainTotals) {

this.smallRainTotals = smallRainTotals;

}

public Integer getSmallRainCounts() {

return smallRainCounts;

}

public void setSmallRainCounts(Integer smallRainCounts) {

this.smallRainCounts = smallRainCounts;

}

public String getUri() {

return uri;

}

public void setUri(String uri) {

this.uri = uri;

}

@Override

public void doTag() throws JspException, IOException {

smallRainTotalPages = smallRainTotals / smallRainCounts+1;

int doPageId=1;

PageContext pageContext = (PageContext) getJspContext();

HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();

String smallRainParameter=request.getParameter(parameterName);

if(null!=smallRainParameter) {

try {

doPageId=Integer.parseInt(smallRainParameter);

}catch(Exception e) {

doPageId=1;

}

}

StringBuilder smallRainSB = new StringBuilder();

if (doPageId > 1) {

smallRainSB.append(" <a href=\"" + uri + (doPageId-1)+"\"" + ">上一页</a> ");

}

for (int i = 1; i <= smallRainTotalPages; i++) {

if (i == doPageId) {

smallRainSB.append(i);

} else {

smallRainSB.append(" <a href=\"" + uri +i+ "\"" + ">" + i + "</a> ");

}

}

if (doPageId < smallRainTotalPages) {

smallRainSB.append(" <a href=\"" + uri + (doPageId+1) +"\"" + ">下一页</a> ");

}

getJspContext().getOut().write(smallRainSB.toString().toCharArray());

}

}

=================tld文件,文件放在/WEB-INF/tld/rain.tld

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

<tlib-version>1.0</tlib-version>

<jsp-version>1.2</jsp-version>

<short-name>rain</short-name>

<tag>

<name>rainbeanInPage</name>

<tag-class>org.rain.tag.SmallRainJSPInTag</tag-class>

<body-content>empty</body-content>

<attribute>

<name>smallRainTotals</name>

<required>true</required>

<rtexprvalue>false</rtexprvalue>

</attribute>

<attribute>

<name>parameterName</name>

<required>true</required>

<rtexprvalue>false</rtexprvalue>

</attribute>

<attribute>

<name>smallRainCounts</name>

<required>true</required>

<rtexprvalue>false</rtexprvalue>

</attribute>

<attribute>

<name>uri</name>

<required>true</required>

<rtexprvalue>false</rtexprvalue>

</attribute>

</tag>

</taglib>

==================web.xml

<?xml version="1.0" encoding="utf-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

<jsp-config>

<taglib>

<taglib-uri>/web-rain/welcome.tld</taglib-uri>

<taglib-location>/WEB-INF/tld/rain.tld</taglib-location>

</taglib>

</jsp-config>

</web-app>

============jsp文件,文件名为MulPageSystemTag.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib uri="/web-rain/welcome.tld" prefix="rain"%>

<%@ page import="java.util.List,java.util.ArrayList"%>

<%!class PageSystemBean {

private String school;

private String home;

public String getSchool() {

return school;

}

public void setSchool(String school) {

this.school = school;

}

public String getHome() {

return home;

}

public void setHome(String home) {

this.home = home;

}

}

List<PageSystemBean> smallRainPageBeans;

@Override

public void jspInit() {

int smallRainTotalRecord = 142;

smallRainPageBeans = new ArrayList<PageSystemBean>(smallRainTotalRecord);

for (int i = 0; i < smallRainTotalRecord; i++) {

PageSystemBean bean = new PageSystemBean();

bean.setSchool("大学" + i);

bean.setHome("地址" + i);

smallRainPageBeans.add(i, bean);

}

}%>

<%

int smallRainSize = 10;

int smallRainCurrent = 1;

String smallRainpage = request.getParameter("smallRainpage");

if (smallRainpage != null) {

smallRainCurrent = Integer.parseInt(smallRainpage);

}

int smallRainDo = (smallRainCurrent - 1) * smallRainSize;

int totalPageBeans = smallRainPageBeans.size();

int totalPages = totalPageBeans / smallRainSize;

totalPages++;

List<PageSystemBean> smallRainCurrentPageBeans;

if (totalPages == smallRainCurrent) {

smallRainCurrentPageBeans = smallRainPageBeans.subList(smallRainDo, totalPageBeans);

} else {

smallRainCurrentPageBeans = smallRainPageBeans.subList(smallRainDo, smallRainDo + smallRainSize);

}

%>

<html>

<head>

<meta charset="UTF-8">

<title>晓雨 JSP + TAG实现分页</title>

</head>

<body>

<h1>晓雨 JSP + TAG实现分页</h1>

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr bgcolor="EFF6EFE">

<td width="50" height="45"><b>学校</b></td>

<td width="50" height="45"><b>地址</b></td>

</tr>

<%

int backColor = 0;

for (PageSystemBean smallRainPageBean : smallRainCurrentPageBeans) {

backColor++;

if (backColor % 2 == 0) {

%>

<tr bgcolor="EFFEEFE">

<%

} else {

%>

<tr>

<%

}

%>

<td width="50" height="35"><%=smallRainPageBean.getSchool()%></td>

<td width="50" height="35"><%=smallRainPageBean.getHome()%></td>

</tr>

<%

}

%>

</table>

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<b> <rain:rainbeanInPage smallRainTotals="142"

parameterName="smallRainpage"

uri="MulPageSystemTag.jsp?smallRainpage=" smallRainCounts="10" />

</b>

</table>

</body>

</html>


http://www.niftyadmin.cn/n/5868777.html

相关文章

将CUBE或3DL LUT转换为PNG图像

概述 在大部分情况下&#xff0c;LUT 文件通常为 CUBE 或 3DL 格式。但是我们在 OpenGL Shader 中使用的LUT&#xff0c;通常是图像格式的 LUT 文件。下面&#xff0c;我将教大家如何将这些文件转换为 PNG 图像格式。 条形LUT在线转换&#xff08;不是8x8网络&#xff09;&am…

Spring Boot 与 MyBatis 数据库操作

一、核心原理 Spring Boot 的自动配置 通过 mybatis-spring-boot-starter 自动配置 DataSource&#xff08;连接池&#xff09;、SqlSessionFactory 和 SqlSessionTemplate。 扫描 Mapper 接口或指定包路径&#xff0c;生成动态代理实现类。 MyBatis 的核心组件 SqlSessionF…

Python入门 — 类

面向对象编程中&#xff0c;编写表示现实世界中的事物和情景的类&#xff08;class&#xff09;&#xff0c;并基于这些类来创建对象&#xff08;object&#xff09;。根据类来创建对象称为实例化&#xff0c;这样就可以使用类的实例&#xff08;instance&#xff09; 一、创建…

多模态人物视频驱动技术回顾与业务应用

一种新的商品表现形态&#xff0c;内容几乎存在于手淘用户动线全流程&#xff0c;例如信息流种草内容、搜索消费决策内容、详情页种草内容等。通过低成本、高时效的AIGC内容生成能力&#xff0c;能够从供给端缓解内容生产成本高的问题&#xff0c;通过源源不断的低成本供给倒推…

HTML转义和反转义工具类

HTML转义和反转义工具类 package com.common.utils;import cn.hutool.http.HTMLFilter; import org.apache.commons.lang3.StringUtils;/*** 转义和反转义工具类** author lxx*/ public class EscapeUtil {public static final String RE_HTML_MARK "(<[^<]*?>…

如何解析返回的JSON数据?

解析返回的JSON数据是爬虫和API开发中的常见任务。在Java中&#xff0c;可以使用多种库来解析JSON数据&#xff0c;例如 Jackson、Gson 或 org.json。以下是使用这些库解析JSON数据的详细步骤和示例代码。 1. 使用Jackson解析JSON数据 Jackson 是一个高性能的JSON处理库&#…

《论区块链技术及应用》审题技巧 - 系统架构设计师

区块链技术及应用论题写作框架 一、考点概述 本论题“区块链技术及应用”主要考察软件测试工程师对区块链技术的理解及其在软件项目中的实际应用能力。论题涵盖了多个关键方面&#xff0c;首先要求考生对区块链技术有全面的认识&#xff0c;包括但不限于其作为分布式记账技术…

2025系统架构师(一考就过):案例之三:架构风格总结

软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式&#xff0c;按照软件架构风格&#xff0c;物联网系统属于&#xff08; &#xff09;软件架构风格。 A:层次型 B:事件系统 C:数据线 D:C2 答案&#xff1a;A 解析&#xff1a; 物联网分为多个层次&#xff0…