jsp+urlrewrite实现html分页简单粗暴实现

今天去检查一同事写的一分页实现,看了有点郁闷,都说了要换成html实现方便搜索引擎收录,他还是用的js,真是晕。还得帮他解决

好吧。言归正传,我在他的基础上粗暴的修改了下,达到了基本的效果,带数字分页

先一步一步来,在controller层model里面增加控制起始和结束页,pageUrl

先简单粗暴点把分页的显示逻辑理好让效果出来,再把分页url放到pageUrl,然后再进一步做html伪静态

     <div class="tcdPageCode2">
                <c:if test="${pageNum>1}">
                    <a href="${pageUrl}?pageNum=1" class="tcdNumber">首页</a>
                    <a href="${pageUrl}?pageNum=${pageNum-1}"> < 上一页</a>
                </c:if>
                <c:forEach var="i" begin="1" end="${totalPage}" step="1">
                    <c:if test="${pageNum==i}">
                        <a class="current">${i}</a>
                    </c:if>
                    <c:if test="${pageNum!=i}">
                        <a href="${pageUrl}?pageNum=${i}" class="tcdNumber">${i}</a>
                    </c:if>
                </c:forEach>
                <c:if test="${totalPage>endPage}">
                    <a href="${pageUrl}?pageNum=${endPage+1}">...</a>
                </c:if>

                <c:if test="${pageNum<totalPage}">
                    <a href="${pageUrl}?pageNum=${pageNum+1}">下一页  > </a>
                    <a href="${pageUrl}?pageNum=${totalPage}" class="tcdNumber">尾页</a>
                </c:if>
            </div>

上面这种需要自己手动来控制...的显示。当然这个有很多逻辑,你可以根据实现的效果来设计

第二种实现方式,就不用上面新加的代码,直接用下面已有的变量

<div class="tcdPageCode1">
                <c:if test="${pageNum== 1}">
                    <a class="tcdNumber">首页</a>
                    <a class="tcdNumber">上一页</a>
                </c:if>
                <c:if test="${pageNum != 1}">
                    <a href="${pageUrl}?pageNum=1" class="tcdNumber">首页</a>
                    <a href="${pageUrl}?pageNum=${pageNum-1}" class="tcdNumber">上一页</a>
                </c:if>
                <c:if test="${pageNum-3 <= totalPage && pageNum > 2}">
                    <a  href="${pageUrl}?pageNum=1"  <c:if test="${pageNum==1 }">class="current"</c:if>>1</a><a  class="tcdNumber">...</a></c:if>
                <c:forEach begin="0" end="${totalPage-1}" varStatus="status">
                    <c:if test="${pageNum - status.index >= -1 && pageNum <= status.index+2}">
                        <a <c:if test="${pageNum==status.index + 1 }">class="current"</c:if>
                        href="${pageUrl}?pageNum=${status.index+1 }">${status.index+1 }</a>
                </c:if>
                </c:forEach>
                <c:if test="${pageNum+2 < totalPage}"><a >...</a><a
                        href="${pageUrl}?pageNum=${totalPage}" class="tcdNumber">${totalPage }</a></c:if>
                <c:if test="${pageNum ==totalPage}">
                    <a class="tcdNumber">下一页</a>
                    <a class="tcdNumber">尾页</a>
                </c:if>
                <c:if test="${pageNum !=totalPage}">
                    <a href="${pageUrl}?pageNum=${pageNum+ 1}" class="tcdNumber">下一页</a>
                    <a href="${pageUrl}?pageNum=${totalPage}" class="tcdNumber">尾页</a>
                </c:if>
                <p>
                    当前第${pageNum}页 总共${totalPage}页
                </p>
            </div>

好了。这里分页部分弄好了。其实如果有需求加select 跳转 也好实现的。

下面来弄urlrewrite实现伪静态了

maven中引入 urlrewrite包

        <dependency>
            <groupId>org.tuckey</groupId>
            <artifactId>urlrewrite</artifactId>
            <version>2.5.2</version>
        </dependency>

在web.xml里面配置

    <!-- url重写start -->
    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
    <!-- url重写end -->

再在web.xml根目录下加一个urlrewrite.xml配置文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
        "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
<!-- Configuration file for UrlRewriteFilter http://tuckey.org/urlrewrite/ -->
<urlrewrite>
     <!--<rule>
        <from>/name/(.*)</from>
        <to>/MyName.jsp?name=$1</to>
    </rule>-->
   <rule>
      <from>/xinniuBBS/baike/([0-9]+).html</from>
      <to>/xinniuBBS/baike?pageNum=$1</to>
   </rule>
</urlrewrite>

上面的from 可以配成任意规则,比如/credit/([0-9]+).html,那么对应的上面的a标签里面的href 就要调整成对应的写法

就不再是${pageUrl}?pageNum=${pageNum}了。就得变换成 /credit/${pageNum}.html 或  /credit/${totalPage}.html

这里为了方便以后做搜索引擎优化,同样在urlrewrite里面也可以变换规则,把链接做得更好看,对搜索引擎爬虫更友好

ok大功搞成

如果你觉得不错,点个赞支持下哦。

时间: 2024-10-29 04:09:09

jsp+urlrewrite实现html分页简单粗暴实现的相关文章

分享并开源一个简单粗暴的redmine测试报告系统

背景 软件测试的最后有一道比较繁琐的工作,就是编写测试报告.手写测试报告在数据统计和分析上面要耗费比较大的事件和精力.之前工作室使用mantis管理bug缺陷.公司有内部有个系统,可以直接从mantis上面获取数据并进行统计,生成一份测试报告.后来换了一个工作室,bug缺陷管理平台也从原来的mantis 换成了redmine (http://www.redmine.org/ ). 然后走上了一条手写测试报告的不归路(测试人员前期还是推荐手写测试报告的).搞游戏的都知道,平时加班加点压力就够大的.

利用JSP编程技术实现一个简单的购物车程序

实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP中数据库编程方法: 二.实验要求 : 利用JSP编程技术实现一个简单的购物车程序,具体要求如下. (1)用JSP编写一个登录页面,登录信息中有用户名和密码,分别用两个按钮来提交和重置登录信息. (2)编写一个JSP程序来处理用户提交的登录信息,如果用户名为本小组成员的名字且密码为对应的学号时,采用J

简单粗暴的在vmware虚拟机中固定ip

虚拟机对于很多做测试的或者在学习测试中的人来说是位常客,经常会用到,但是虚拟机重启之后,很多人遇到虚拟机ip变化,很是头痛,我在学习过程中也遇到了这个问题,百度了很多办法,有些办法对于网络知识小白来说难度有点大,还有一些分享的经验都没有奏效,经过尝试,总结了两种简单粗暴,亲测有效的办法,共享出来,遇到的人可以做个参考,尤其是对小白,可以快速解决这个问题,不至于在这种小问题上浪费太多时间,大神可忽略. 首先,首先确定你在.NAT模式下,这时由VM8虚拟网卡提供虚拟机的IP分配,相当于一个小型的DH

LeakCanary:简单粗暴的内存泄漏检測工具

差点儿每一个程序猿在开发的过程中都会遇到内存泄漏.那么我们怎样检測到app是否哪里出现内存泄漏呢?square公司推出了一款简单粗暴的检測内存泄漏的工具-- LeakCanary 什么是内存泄漏? 内存泄漏是指因为疏忽或者错误造成程序未能释放已经不再使用的内存,内存泄漏不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误失去了对于这段内存的控制.因而造成内存的浪费. 内存泄漏和内存溢出是两码事,不要混淆,内存溢出通俗的讲就是内存不够用,如今的仅仅能手机内存越来越大,内存溢出的情况不

简单粗暴地入门机器学习

有很多小伙伴问过我零基础要怎么入门机器学习或者人工智能,今天来提炼一下,方便志同道合的朋友们参考. 记得我刚入此山洞准备修炼的时候,就 Google 了好多这类的问题,那时候觉得大家的建议好多呀,这条路看起来真长,那么多东西要学,那么多书要看,那么多有用的课程要学. 现在我可以就自己走过的坑坑包包来推荐一条简单粗暴的路径. [step 1: 方向] 在行动之前,先想好这几个最基本的问题,如果自己想不全都可以去搜一下,知乎上很多大拿的回答: --1.为什么要学习机器学习或者人工智能呢? 我的话,很

SmaterWeatherApi---签名加密和数据访问--简单粗暴一步搞定

使用中国天气网接口的朋友们,大家(还有我)辛苦了 有兴趣的可以去了解一下http://smart.weather.com.cn/wzfw/smart/weatherapi.shtml 年初的时候停用了之前的接口,改为申请使用,于是发个了申请邮件,中间各种曲折...一万字.. 总算是申请下来了,不过接口文档啊,看的我累觉不爱,文档上只有php版的kay生成方法,我在androi上使用,那些加密方法不知道用java如何实现 一怒之下,就写个php版的吧,本来是只想写个生成key的接口的,后来想了想

简单粗暴地理解js原型链--js面向对象编程

简单粗暴地理解js原型链--js面向对象编程 原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好. 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么.简单粗暴点看原型链吧,想点与代码无关的事,比如人.妖以及人妖. 1)人是人他妈生的,妖是妖他妈生的.人和妖都是对象实例,而人他妈和妖他妈就是原型.原型也是对象,叫原型对象. 2)人他妈和人他爸啪啪啪能生出一堆人宝宝.妖他妈和妖他爸啪啪啪能生出一堆妖宝宝,啪啪啪就是构造函数,俗

一个简单粗暴的前后端分离方案

项目背景 刚刚参加完一个项目,背景:后端是用java,后端服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构.后端专注做业务逻辑,不想在后端做页面渲染的事情,只向前端提供数据接口.于是协商后打算将前后端完全分离,页面上的所有数据都通过ajax向后端取,页面渲染的事情完全由前端来做.另外还有一个紧急的情况,项目要紧急上线,整个web站点的开发时间只有两周,两周啊!于是在这样的背景下,决定开始一次前后端完全分离的尝试. 之前开发都是同步渲染和异步渲染混搭的,有些东西可以有后

足球游戏论坛数据分析--简单粗暴的K均值聚类

在<<足球游戏论坛数据分析--简单粗暴的贝叶斯>>中尝试了贴标签后,一直觉得结果无法接受, 慢慢回想, 其实选择的算法是错误的,原因有 论坛帖子分类并非就是PC/PS/XBOX这么简单 即使是作者自己贴的标签,也存在挂羊头的可能性 既然没法简单的给帖子分类,那么就尝试一下聚类算法看看有没有发现: #事先已经把分好词的所有文本存成一个文件,没有事先分类 f = codecs.open('forum_all.txt', 'r', 'utf-8') words_full = f.read