- 浏览: 94081 次
- 性别:
- 来自: 深圳
文章分类
最新评论
分页总是让人头疼 今天就决心做一个分页标签!~
1.首先写一个标签类PagesTag.java,当然要继承SimpleTagSupport类咯~!
2.接下来需要写一个Servlet,来让你的标签在web容器里能够运行~!
3. 下来不用我说,大家都知道要在web.xml中配置这个Servlet,下面就是
4.下来也是最后一步了,就是我们的标签描述文件pages.tld咯,当然用xml文件来描述咯~!
5.现在就大功告成了吗? 我们说不! 最重要的就是写个jsp来测试一下你的分页标签咯~!
名字就叫pagetest.jsp吧~
技巧:大家试着改变style的值,看看页面有什么变化~!
6.好,现在大功告成,打游戏去啦~!
1.首先写一个标签类PagesTag.java,当然要继承SimpleTagSupport类咯~!
package com.xaccp.common.page; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.JspException; public class PagesTag extends SimpleTagSupport { /** * Initialization of action property. * 标签中分页时的链接动作 */ private java.lang.String action; /** * Initialization of pagecount property. * 总页数 */ private int pagecount; /** * Initialization of curpage property. */ private int curpage; /** * Initialization of target property. * 页面链接的目标,默认为_self */ private java.lang.String target="_self"; /** * Initialization of var property. * 分页后的链接参数名称 */ private java.lang.String var; /* * 分页显示的风格 */ private int style=1; public void doTag() throws JspException { JspWriter out=getJspContext().getOut(); try { out.write("<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"1\"> "); out.write("<tr> "); if (style==1) { if (this.curpage > 1 ){ out.write("<td>"); StringBuilder pageString=new StringBuilder(); pageString.append("<a href=\""); pageString.append(action); pageString.append("?"); pageString.append(var); pageString.append("="); pageString.append(this.curpage - 1); pageString.append("\"><font color=#ff0000>["); pageString.append("上一页"); pageString.append("]</font>"); pageString.append("</a>"); out.write(pageString.toString()); out.write("</td> "); } if (this.curpage < this.pagecount){ out.write("<td>"); StringBuilder pageString=new StringBuilder(); pageString.append("<a href=\""); pageString.append(action); pageString.append("?"); pageString.append(var); pageString.append("="); pageString.append(this.curpage + 1); pageString.append("\"><font color=#ff0000>["); pageString.append("下一页"); pageString.append("]</font>"); pageString.append("</a>"); out.write(pageString.toString()); out.write("</td> "); } } else if(style==2) { if (this.curpage > 1) { out.write("<td>"); StringBuilder pageString=new StringBuilder(); pageString.append("<a href=\""); pageString.append(action); pageString.append("?"); pageString.append(var); pageString.append("=1"); //pageString.append(this.curpage - 1); pageString.append("\"><font color=#ff0000>["); pageString.append("首页"); pageString.append("]</font>"); pageString.append("</a>"); out.write(pageString.toString()); out.write("</td> "); out.write("<td>"); StringBuilder pageString1=new StringBuilder(); pageString1.append("<a href=\""); pageString1.append(action); pageString1.append("?"); pageString1.append(var); pageString1.append("="); pageString1.append(this.curpage - 1); pageString1.append("\"><font color=#ff0000>["); pageString1.append("上一页"); pageString1.append("]</font>"); pageString1.append("</a>"); out.write(pageString1.toString()); out.write("</td> "); } if (this.curpage < this.pagecount) { out.write("<td>"); StringBuilder pageString1=new StringBuilder(); pageString1.append("<a href=\""); pageString1.append(action); pageString1.append("?"); pageString1.append(var); pageString1.append("="); pageString1.append(this.curpage + 1); pageString1.append("\"><font color=#ff0000>["); pageString1.append("下一页"); pageString1.append("]</font>"); pageString1.append("</a>"); out.write(pageString1.toString()); out.write("</td> "); out.write("<td>"); StringBuilder pageString=new StringBuilder(); pageString.append("<a href=\""); pageString.append(action); pageString.append("?"); pageString.append(var); pageString.append("="); pageString.append(pagecount); pageString.append("\"><font color=#ff0000>["); pageString.append("尾页"); pageString.append("]</font>"); pageString.append("</a>"); out.write(pageString.toString()); out.write("</td> "); } } else { if (this.curpage==1) { out.write("<td>"); out.write("<font color=#bbbbbb>["); out.write("首页"); out.write("]</font>"); out.write("</td> "); out.write("<td>"); out.write("<font color=#bbbbbb>["); out.write("第一页"); out.write("]</font>"); out.write("</td> "); } if (this.curpage > 1 ){ out.write("<td>"); StringBuilder pageString=new StringBuilder(); pageString.append("<a href=\""); pageString.append(action); pageString.append("?"); pageString.append(var); pageString.append("=1"); //pageString.append(this.curpage - 1); pageString.append("\"><font color=#ff0000>["); pageString.append("首页"); pageString.append("]</font>"); pageString.append("</a>"); out.write(pageString.toString()); out.write("</td> "); out.write("<td>"); StringBuilder pageString2=new StringBuilder(); pageString2.append("<a href=\""); pageString2.append(action); pageString2.append("?"); pageString2.append(var); pageString2.append("="); pageString2.append(this.curpage - 1); pageString2.append("\"><font color=#ff0000>["); pageString2.append("上一页"); pageString2.append("]</font>"); pageString2.append("</a>"); out.write(pageString2.toString()); out.write("</td> "); } if (this.curpage < this.pagecount){ out.write("<td>"); StringBuilder pageString3=new StringBuilder(); pageString3.append("<a href=\""); pageString3.append(action); pageString3.append("?"); pageString3.append(var); pageString3.append("="); pageString3.append(this.curpage + 1); pageString3.append("\"><font color=#ff0000>["); pageString3.append("下一页"); pageString3.append("]</font>"); pageString3.append("</a>"); out.write(pageString3.toString()); out.write("</td> "); out.write("<td>"); StringBuilder pageString=new StringBuilder(); pageString.append("<a href=\""); pageString.append(action); pageString.append("?"); pageString.append(var); pageString.append("="); pageString.append(pagecount); pageString.append("\"><font color=#ff0000>["); pageString.append("尾页"); pageString.append("]</font>"); pageString.append("</a>"); out.write(pageString.toString()); out.write("</td> "); } if (this.curpage == this.pagecount){ out.write("<td>"); out.write("<font color=#bbbbbb>["); out.write("下一页"); out.write("]</font>"); out.write("</td> "); out.write("<td>"); out.write("<font color=#bbbbbb>["); out.write("尾页"); out.write("]</font>"); out.write("</td> "); } } out.write("</tr> "); out.write("</table> "); } catch (java.io.IOException ex) { throw new JspException(ex.getMessage()); } } public void setAction(java.lang.String value) { this.action = value; } public void setPagecount(int value) { this.pagecount = value; } public void setCurpage(int value) { this.curpage = value; } public void setTarget(java.lang.String value) { this.target = value; } public void setVar(java.lang.String value) { this.var = value; } public int getStyle() { return style; } public void setStyle(int style) { this.style = style; } }
2.接下来需要写一个Servlet,来让你的标签在web容器里能够运行~!
package com.xaccp.servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; @SuppressWarnings("serial") public class PagesServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String curr=request.getParameter("page"); if (curr==null) { curr="1"; } request.setAttribute("curr",curr); RequestDispatcher rd=request.getRequestDispatcher("pagetest.jsp"); rd.forward(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } public String getServletInfo() { return "Short description"; } }
3. 下来不用我说,大家都知道要在web.xml中配置这个Servlet,下面就是
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>PagesServlet</servlet-name> <servlet-class>com.xaccp.servlet.PagesServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>PagesServlet</servlet-name> <url-pattern>/PagesServlet.go</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> </web-app>
4.下来也是最后一步了,就是我们的标签描述文件pages.tld咯,当然用xml文件来描述咯~!
<?xml version="1.0" encoding="UTF-8"?> <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"> <tlib-version>1.0</tlib-version> <short-name>p</short-name> <uri>/WEB-INF/tlds/pages</uri> <!-- A validator verifies that the tags are used correctly at JSP translation time. Validator entries look like this: <validator> <validator-class>com.mycompany.TagLibValidator</validator-class> <init-param> <param-name>parameter</param-name> <param-value>value</param-value> </init-param> </validator> --> <!-- A tag library can register Servlet Context event listeners in case it needs to react to such events. Listener entries look like this: <listener> <listener-class>com.mycompany.TagLibListener</listener-class> </listener> --> <tag> <name>page</name> <tag-class>com.xaccp.common.page.PagesTag</tag-class> <body-content>empty</body-content> <attribute> <name>action</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.String</type> </attribute> <attribute> <name>pagecount</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>int</type> </attribute> <attribute> <name>curpage</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>int</type> </attribute> <attribute> <name>target</name> <rtexprvalue>true</rtexprvalue> <type>java.lang.String</type> </attribute> <attribute> <name>var</name> <rtexprvalue>true</rtexprvalue> <type>java.lang.String</type> </attribute> <attribute> <name>style</name> <rtexprvalue>true</rtexprvalue> <type>int</type> </attribute> </tag> </taglib>
5.现在就大功告成了吗? 我们说不! 最重要的就是写个jsp来测试一下你的分页标签咯~!
名字就叫pagetest.jsp吧~
<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@taglib prefix="p" uri="/WEB-INF/tlds/pages.tld" %> <%-- The taglib directive below imports the JSTL library. If you uncomment it, you must also add the JSTL library to the project. The Add Library... action on Libraries node in Projects view can be used to add the JSTL 1.1 library. --%> <%-- <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> --%> <!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>JSP Page</title> </head> <body> <h1>JSP Page</h1> <p> <%-- This example uses JSTL, uncomment the taglib directive above. To test, display the page like this: index.jsp?sayHello=true&name=Murphy --%> <%-- <c:if test="${param.sayHello}"> <!-- Let's welcome the user ${param.name} --> Hello ${param.name}! </c:if> --%> </p> <p:page action="PagesServlet.go" curpage="${curr}" pagecount="10" style="2" target="_self" var="page"/> <p> </p> </body> </html>
技巧:大家试着改变style的值,看看页面有什么变化~!
6.好,现在大功告成,打游戏去啦~!
发表评论
-
Flash小游戏
2008-09-18 18:45 862我的休闲小游戏 , 看看你能冲过多少关~? -
JSP和Servlet对中文的处理
2008-06-18 21:13 595世界上的各地 ... -
JSP中的乱码解决方案
2008-06-18 20:54 1143首先,确保你的数据库是支持中文的。把数据库的编码方 ... -
Eclipse快捷键
2008-06-18 11:22 829编辑 作用域 功能 ... -
Log4j使用高级
2008-06-17 10:51 1348二 动态配置log4j1 配置外部配置文件来配置的基本步 ... -
应用OSCache提升J2EE系统运行性能
2008-06-17 01:46 919Cache是一种用于提高系 ... -
ssh+mysql乱码解决方案
2008-06-17 01:42 2056(1)对mysql的my.ini配置文件的默认编码(好像是de ...
相关推荐
内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
深圳建设施工项目安全生产奖惩管理制度
离散数学课后题答案+sdut往年试卷+复习提纲资料
04741计算机网络原理 2018(尚德).pdf 13年试题(2套).pdf 2015年10月自考计算机网络原理04741试题及答案解析.docx 2021年4月自考04741计算机网络原理真题及答案.docx 2021年4月自考04741计算机网络原理试卷.bak.docx 计算机网络原理 课后题答案 全 李全龙版 自考04741.zip.zip 计算机网络原理课件 计算机网络原理课件.rar
C++实现rpc,全程手写
前端拿到的列表数据里id都一样的处理办法.txt
最新仿720云全景制作源码|krpano仿720云全景网站源码(新增微信支付+打赏+场景红包等)是一款基于php+mysql开发制作的全景在线制作网站源码,包含全景图片,全景视频等。数据存储全部存于OSS云端或本地,源码完全开源可自行二次开发。 环境要求:PHP5.5.X+MYSQL5.6.X+伪静态 熟悉linux系统推荐使用LAMP,web服务器最好使用apache,不要使用nginx(发布大全景图需要时间可能需要20多分钟, nginx超时机制不好控制)。 Windows系统推荐使用phpstudy。Liunx推荐宝塔控制面板apache 前端为HTML5开发,自适应手机版! 1、支持VR虚拟现实、全景视频、环物全景、说一说、点赞评论、重力感应、智能视频嵌入、场景切换热点、加载进度条、 地图导航、光晕flash特效、物体全景嵌入、场景自播、场景解说、雷达导航等业内前沿功能。 2、支持windows、Linux、Mac、安卓、IOS等几乎所有的系统观看。支持CDN图片转存,极大的减轻的服务器流量费用。 3、支持用户权限分配。方便会员制收费。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
环境监测系统源代码全套技术资料.zip
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
02142数据结构导论历年真题及答案(2012-2018共13套).rar 02331数据结构历年真题共267页2009.10-2019.4.rar 24数据结构201704_8.pdf 25数据结构201710_10.pdf 26数据结构201804_11.pdf 27数据结构201810_9.pdf 全国2021年04月高等教育自学考试02331数据结构试题及答案.docx 全国2022年04月高等教育自学考试02331数据结构试题及答案.docx 数据结构-课件.rar 第l六讲.ppt 第一讲.ppt 第七讲.ppt 第三讲.ppt 第九讲.ppt 第二讲.ppt 第五讲.ppt 第八讲.ppt 第四讲.ppt
验收确认单表格.docx
内存搜索工具(易).rar
饮食管理系统项目源代码全套技术资料.zip
【项目简介】 代码主干网络采用Swin-Transformer 家族系列,包括【tiny、small、base】三种模型。pretrained和freeze_layers参数为是否采用官方预训练模型和是否仅训练分类头。为了做对比消融试验,优化器采用了Adam和SGD、AdamW三种。损失函数采用多类别的交叉熵、学习率优化策略采用cos余弦退火算法 【评估网络】 评估的指标采用loss和准确率(accuracy),分别会在训练集和验证集上进行评估、输出、绘制曲线图像。同时会在训练集、验证集进行一系列评估,包含混淆矩阵、recall、precision、F1 score等等曲线图像,以及recall、precision、F1 score、特异度的输出信息等等。 【具体各类别的指标在json文件中查看】 【如果想要更换数据集训练,参考readme文件】 【本项目为8种番茄病害图片(约4k张数据),包含数据集和标签,可以一键运行】
windows电脑下载OpenHarmony鸿蒙命令行工具hdc_std。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
本项目可以作为小程序毕设项目,主要功能为音乐播放器,主要功能是:可以播放歌曲(采用mp3网络连接实现)、专辑封面播放时可以旋转,能够实现开始和暂停播放,可以点击下一首歌曲,主页面实现动态轮播图
考研学习分享功能的描述可以涵盖以下几个主要模块,旨在为考研学生提供一个互动、资源共享、经验交流的平台: 1. 用户注册与个人信息管理 学生可以通过邮箱或手机号注册账户,填写个人信息,如姓名、专业、目标院校等。 用户可设置学习目标和进度,方便记录自己的学习历程。 2. 学习资料共享 用户可以上传、下载考研相关学习资料,如教材、真题、笔记、复习计划等。 提供文件分类功能,按学科、院校、难度等进行整理,方便用户查找。 支持多种文件格式,如PDF、Word、Excel、图片等。 3. 复习经验分享 学生可以发布自己的复习经验文章,分享复习方法、备考心得、时间管理技巧等。 提供文章评论和互动功能,其他学生可以点赞、评论、提问,促进经验交流。 设置专栏或专题,帮助学生快速找到自己感兴趣的复习内容。 4. 考研小组与社交功能 学生可以创建或加入学习小组,组内成员可共享资料、讨论问题、互相鼓励。 提供私信、群聊功能,方便学员在小组内进行实时讨论和交流。 支持设置小组学习目标和定期检查进度,增加学习动力。 5. 在线课程与讲座 提供考研各科目(如英语、数学、政治等)的在线课程资源,用户可以报名参加。