jsp、servlet、oracle分页和排序

m4pnthwp  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(287)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

两天前关门了。
改进这个问题
我试着做crud,用jsp和servlet,现在我想增加排序和分页,但不知道怎么做,我想在表名点击时一定要按表名排序。我在寻找解决方案,但主要是说解决方案使用json、jquery或ajax,我想知道如果我使用jstl和java本身,是否每次都会刷新整个页面。如何使用json?我的代码如下:studentsdao.java

List<StudentBean> list = new ArrayList<StudentBean>();
        try {
            DataHandler dh = new DataHandler();
            Connection con = dh.getDBConnection();
            PreparedStatement ps = con.prepareStatement(
                    "select * from Students limit " + (start - 1) + "," + total);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                StudentBean bean = new StudentBean();
                bean.setId(rs.getInt(1));
                bean.setUsername(rs.getString(2));
                bean.setAdpra(rs.getString(10));
                list.add(bean);
            }
            con.close();
        } catch (Exception e) {
            System.out.println(e);
        }
        return list;
    }

视图.jsp

pageEncoding="ISO-8859-1" session="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@page import="com.example.practice.StudentBean" %>
<%@page import="com.example.practice.StudentsDAO,com.example.practice.StudentBean.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Update Student Info</title>
    <link rel="stylesheet" href="styles/styles.css" />
</head>
<body>
<h2>list student Info</h2>
<%
    List<StudentBean> list = StudentsDAO.getAllRecords();
    request.setAttribute("list", list);
%>
<table border="1" width="90%">
    <tr>
        <th>Id</th>
        <th>Username</th>
        <th>Password</th>
        <th>Name</th>
        <th>Surname</th>
        <th>Faculty</th>
        <th>Phone num</th>
        <th>Admin Privilege</th>
        <th>Edit</th>
        <th>Delete</th>
    </tr>
    <c:forEach items="${list}" var="bean">
        <tr>
            <td>${bean.getId()}</td>
            <td>${bean.getUsername()}</td>
            <td>${bean.getStpass()}</td>
            <td>${bean.getStname()}</td>
            <td>${bean.getSurname()}</td>
            <td>${bean.getFaculty()}</td>
            <td>${bean.getStnum()}</td>
            <td>${bean.getAdpra()}</td>
            <td><a href="edit.jsp?id=${bean.getId()}">Edit</a></td> 
            <td><a href="delete.jsp?id=${bean.getId()}">Delete</a></td>
        </tr>
    </c:forEach>
</table>
</body>
mw3dktmi

mw3dktmi1#

"select * from Students limit " + (start - 1) + "," + total); 甲骨文没有 limit 子句,但有另一行限制子句:

所以你需要重写如下:

"select * from Students order by id "
+" OFFSET " + (start - 1) + " FETCH FIRST " + total + " ROWS ONLY"

示例:https://oracle-base.com/articles/12c/row-limiting-clause-for-top-n-queries-12cr1

相关问题