如何实现JSP列表升序或者降序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现JSP列表升序或者降序相关的知识,希望对你有一定的参考价值。
利用servlet+JSP+JavaBean实现增删改查,但是不知道如何使查询到的列表页面中,实现数据的降序和升序,Ajax,js应该比较容易实现,但本人不太会用,最好就能用servlet方法,从JSP页面中调用servlet方法,但是不知道如何下手,求大神指点!!急!!
要用按钮或者链接实现这个方法!!
select * from table order by id desc(降序)追问
如果我是要用按钮实现呢?
追答把你要刷新的那部分的块级元素(如div,body等)添加一个class,或者id,同时你在存放jsp的package里再新建一个jsp(这里面只要一个块级元素,就是你添加了class或者id的那个,你要展示什么数据,就在这里展示),点击按钮,发送ajax请求到后台,后台要另外写一个获取数据的action,这个action把数据发送到你新建的jsp中去;这时,在方法里用js控制,页面在成功接收了从后台返回的数据后,先隐藏或者删除那个块级元素,然后再展示;这样就可以实现部分页面刷新了!逻辑大致就是这样,不知道你明白了没有!!!!
追问ajax请求到后台??不太了解Ajax,不过你逻辑应该可以的。我试试吧
追答发送ajax到后台,后台会返回json结果,这个结果可以展示到页面的!我说的方法就是把一张页面嵌套到另一张页面!
参考技术A 点击列名超链接时,用ajax在后台调用你的查询方法,并传入一个动态参数放到sql里面:order by XXX(参数列名) desc/asc。追问能不能用一个demo让我模仿一下?
参考技术B <a href="<c:url value="servlet路径"/>">升序</a>注意这里用了c标签,因为方便,你要想用c便签在jsp里面加上:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
或者你直接写路径也许<a href="完整路径">升序</a>
sort和sorted深入理解----引子:多维列表,如何实现第一个元素升序,第二个元素降序
一、列表内建方法--sort()
作用:就地对列表排序(直接在原列表上做排序)
语法:
list.sort(func=None, key=None, reverse=False)
- 当reverse=False时:正向排序;当reverse=True时:逆向排序。默认为False。
- 执行完后会改变原来的list,如果你不需要原来的list,这种效率稍微高点
- 该方法没有返回值
例子:
>>> arr = [2,8,4,6,9,1,3]
>>> arr.sort()
>>> arr
[1, 2, 3, 4, 6, 8, 9]
二、内建函数sorted()
作用:对可迭代对象排序,返回一个新的已经排序好的list
差别:
- sorted()不会改变原来的list,而是会返回一个新的已经排序好的list
- list.sort()方法只是应用在 list 上的方法,而sorted()可用于任何一个可迭代对象
语法:
sorted(iterable, key=None, reverse=False)
- 当reverse=False时:为正向排序;当reverse=True时:为反向排序。默认为False。
- 执行完后返回一个新的排序好的list
例子:
>>> arr = (3,6,7,2,1,4)
>>> sorted(arr)
[1, 2, 3, 4, 6, 7]
三、高级用法
参数key:
参数key:带一个参数的函数(排序时,会依次传入列表的每一项,作为该函数的参数)。该函数用于在比较排序之前进行的操作
例子:
每个字符串比较之前,需要统一小写
>>> test=["A","a","E","W","o"]
>>> test.sort()
>>> test
[‘A‘, ‘E‘, ‘W‘, ‘a‘, ‘o‘]
>>> test.sort(key=lambda x:x.lower())
>>> test
[‘A‘, ‘a‘, ‘E‘, ‘o‘, ‘W‘]
对于复杂的对象,使用对象的下标作为key。
例子:
>>> student_tuples = [
... (‘john‘, ‘A‘, 15),
... (‘jane‘, ‘B‘, 12),
... (‘dave‘, ‘B‘, 10),
... ]
>>> sorted(student_tuples, key=lambda student: student[2]) # sort by age
[(‘dave‘, ‘B‘, 10), (‘jane‘, ‘B‘, 12), (‘john‘, ‘A‘, 15)]
使用对象的属性进行操作:
>>> class Student:
... def __init__(self, name, grade, age):
... self.name = name
... self.grade = grade
... self.age = age
... def __repr__(self):
... return repr((self.name, self.grade, self.age))
>>>
>>> student_objects = [
... Student(‘john‘, ‘A‘, 15),
... Student(‘jane‘, ‘B‘, 12),
... Student(‘dave‘, ‘B‘, 10),
... ]
>>> sorted(student_objects, key=lambda student: student.age) # sort by age
[(‘dave‘, ‘B‘, 10), (‘jane‘, ‘B‘, 12), (‘john‘, ‘A‘, 15)]
重点来了!
1.多维数组,如何在按照第一个元素排序的基础上,再按第二个关键字进行排序?
>>> arr = [(‘d‘,3),(‘a‘,5),(‘d‘,1),(‘c‘,2),(‘d‘,2)]
>>> sorted(arr, key = lambda x:(x[0],x[1]))
[(‘a‘, 5), (‘c‘, 2), (‘d‘, 1), (‘d‘, 2), (‘d‘, 3)]
2.多维数组,如何实现第一个元素按升序,第二个元素按降序来排列?
>>> arr = [(‘d‘,3),(‘a‘,5),(‘d‘,1),(‘c‘,2),(‘d‘,2)]
>>> sorted(arr, key=lambda x:(x[0], -int(x[1])))
[(‘a‘, 5), (‘c‘, 2), (‘d‘, 3), (‘d‘, 2), (‘d‘, 1)]
以上是关于如何实现JSP列表升序或者降序的主要内容,如果未能解决你的问题,请参考以下文章
sort和sorted深入理解----引子:多维列表,如何实现第一个元素升序,第二个元素降序
Python面试必考重点之列表,元组和字典第十二关——如果列表元素是字典序列,如何利用lambda表达式对列表进行升序降序排列