河北省科技政策综合查询系统需求
(1)按照知网的高级检索实现多条件查询,将多条件查询替换上面科技政策一点通界面中的一筐式查询框,多个查询条件包括政策标题,政策内容,发文机构,政策分类,政策文号五个条件组合查询。

<%@page import="com.example.DBUtil"%>
<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>科技政策查询系统</title>
    <style>
        body {
            font-family: "Microsoft YaHei", sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f8f9fa;
        }

        a:link {
            color: #1a56a7;
        }

        a:visited {
            color: #1a56a7;
        }

        a {
            text-decoration: none;
        }

        a:hover {
            color: #e63946;
        }

        a:active {
            color: #8338ec;
        }

        /* Vertical navigation bar styles */
        .navbar {
            float: left;
            width: 25%;
            height: 100vh;
            background-color: #ffffff;
            padding: 20px;
            box-sizing: border-box;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
        }

        .navbar h3 {
            margin-top: 0;
            color: #1a56a7;
            border-bottom: 2px solid #1a56a7;
            padding-bottom: 10px;
        }

        .navbar input[type="checkbox"] {
            margin-right: 10px;
            accent-color: #1a56a7;
        }

        .navbar label {
            display: block;
            padding: 8px 0;
            color: #495057;
            transition: all 0.3s;
        }

        .navbar label:hover {
            color: #1a56a7;
            background-color: #f1f8ff;
            padding-left: 5px;
        }

        .navbar input[type="submit"] {
            background-color: #1a56a7;
            color: white;
            border: none;
            padding: 8px 15px;
            border-radius: 4px;
            cursor: pointer;
            margin-top: 10px;
            transition: background-color 0.3s;
        }

        .navbar input[type="submit"]:hover {
            background-color: #0d3d7a;
        }

        #main-content {
            float: right;
            width: 75%;
            padding: 20px;
            box-sizing: border-box;
        }

        #app-header {
            text-align: center;
            margin-bottom: 30px;
            padding: 15px;
            background-color: #1a56a7;
            color: white;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
        }

        table {
            width: 100%;
            border-collapse: collapse;
            margin-bottom: 20px;
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
        }

        th, td {
            border: 1px solid #dee2e6;
            padding: 12px;
            text-align: center;
        }

        th {
            background-color: #1a56a7;
            color: white;
            font-weight: normal;
        }

        tr:nth-child(even) {
            background-color: #f8f9fa;
        }

        tr:hover {
            background-color: #f1f8ff;
        }

        .pagination {
            text-align: center;
            margin-top: 20px;
            padding: 10px;
            background-color: white;
            border-radius: 5px;
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
        }

        .pagination input[type="text"] {
            width: 50px;
            padding: 5px;
            margin: 0 5px;
            border: 1px solid #ced4da;
            border-radius: 4px;
        }

        .pagination input[type="submit"],
        .pagination input[type="button"] {
            padding: 5px 15px;
            background-color: #1a56a7;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            transition: background-color 0.3s;
            margin: 0 3px;
        }

        .pagination input[type="submit"]:hover,
        .pagination input[type="button"]:hover {
            background-color: #0d3d7a;
        }

        #search-form {
            background-color: white;
            padding: 20px;
            margin-bottom: 20px;
            border-radius: 5px;
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
        }

        .search-row {
            display: flex;
            margin-bottom: 10px;
            align-items: center;
        }

        .search-label {
            width: 100px;
            text-align: right;
            padding-right: 10px;
            color: #495057;
        }

        .search-input {
            flex: 1;
        }

        .search-input input[type="text"] {
            width: 100%;
            padding: 8px;
            border: 1px solid #ced4da;
            border-radius: 4px;
        }

        .search-actions {
            text-align: center;
            margin-top: 15px;
        }

        .search-actions input[type="submit"] {
            padding: 8px 25px;
            background-color: #1a56a7;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            transition: background-color 0.3s;
            margin: 0 5px;
        }

        .search-actions input[type="submit"]:hover {
            background-color: #0d3d7a;
        }

        footer {
            clear: both;
            background-color: #1a56a7;
            color: white;
            text-align: center;
            padding: 15px;
            margin-top: 20px;
            border-radius: 5px;
        }

        .logic-operator {
            width: 100px;
            text-align: center;
            padding: 8px;
            border: 1px solid #ced4da;
            border-radius: 4px;
            margin: 0 5px;
        }
    </style>
</head>
<body>

<div id="app-header">
    <span style="font-size: 35px; font-family: 宋体; font-weight: bold">科技政策查询系统</span>
</div>

<div class="navbar">
    <h3>分类筛选</h3>
    <form action="test.jsp" method="get">
        <label><input type="checkbox" name="type" value="综合"> 综合</label><br>
        <label><input type="checkbox" name="type" value="科研机构改革"> 科研机构改革</label><br>
        <label><input type="checkbox" name="type" value="科技计划管理"> 科技计划管理</label><br>
        <label><input type="checkbox" name="type" value="科技经费与财务"> 科技经费与财务</label><br>
        <label><input type="checkbox" name="type" value="基础研究与科研基地"> 基础研究与科研基地</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="基础研究"> 基础研究</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="平台基地"> 平台基地</label><br>
        <label><input type="checkbox" name="type" value="企业技术进步与高新技术产业化"> 企业技术进步与高新技术产业化</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="企业"> 企业</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="产业"> 产业</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="创新载体"> 创新载体</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="农村科技与社会发展"> 农村科技与社会发展</label><br>
        <label><input type="checkbox" name="type" value="其他类别"> 其他类别</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="科技人才"> 科技人才</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="科技中介服务"> 科技中介服务</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="科技条件与标准"> 科技条件与标准</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="科技金融与税收"> 科技金融与税收</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="科技成果与知识产权"> 科技成果与知识产权</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="科技奖励"> 科技奖励</label><br>
        <label>&emsp;<input type="checkbox" name="type" value="科学技术普及"> 科学技术普及</label><br>
        <input type="submit" value="筛选" />
    </form>
</div>

<div id="main-content">
    <form action="test.jsp" method="get">
        <div id="search-form">
            <div class="search-row">
                <div class="search-label">政策标题:</div>
                <div class="search-input">
                    <input type="text" name="name" value="<%=request.getParameter("name") != null ? request.getParameter("name") : "" %>" />
                </div>
                <select class="logic-operator" name="nameOperator">
                    <option value="AND">AND</option>
                    <option value="OR">OR</option>
                </select>
            </div>
            <div class="search-row">
                <div class="search-label">政策内容:</div>
                <div class="search-input">
                    <input type="text" name="content" value="<%=request.getParameter("content") != null ? request.getParameter("content") : "" %>" />
                </div>
                <select class="logic-operator" name="contentOperator">
                    <option value="AND">AND</option>
                    <option value="OR">OR</option>
                </select>
            </div>
            <div class="search-row">
                <div class="search-label">发文机构:</div>
                <div class="search-input">
                    <input type="text" name="organ" value="<%=request.getParameter("organ") != null ? request.getParameter("organ") : "" %>" />
                </div>
                <select class="logic-operator" name="organOperator">
                    <option value="AND">AND</option>
                    <option value="OR">OR</option>
                </select>
            </div>
            <div class="search-row">
                <div class="search-label">政策分类:</div>
                <div class="search-input">
                    <input type="text" name="type" value="<%=request.getParameter("type") != null ? request.getParameter("type") : "" %>" />
                </div>
                <select class="logic-operator" name="typeOperator">
                    <option value="AND">AND</option>
                    <option value="OR">OR</option>
                </select>
            </div>
            <div class="search-row">
                <div class="search-label">政策文号:</div>
                <div class="search-input">
                    <input type="text" name="document" value="<%=request.getParameter("document") != null ? request.getParameter("document") : "" %>" />
                </div>
            </div>
            <div class="search-actions">
                <input type="submit" value="检索" />
                <input type="reset" value="重置" />
            </div>
            <input type="hidden" name="yema" value="1" />
        </div>

        <%
            String id = request.getParameter("id");
            if (id != null && !id.isEmpty()) {
                Connection connection = DBUtil.getConnection();
                PreparedStatement preparedStatement = null;
                ResultSet rs = null;
                String sql = " select name, text from policy where id=? ";
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.setString(1, id);
                rs = preparedStatement.executeQuery();
                if (rs.next()) {
        %>
        <div style="background: white; padding: 20px; border-radius: 5px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);">
            <h1 style="color: #1a56a7; border-bottom: 2px solid #1a56a7; padding-bottom: 10px;"><%=rs.getString("name")%></h1>
            <p style="line-height: 1.6;"><%=rs.getString("text")%></p>
        </div>
        <%
                DBUtil.close(rs, preparedStatement, connection);
            } else {
                out.println("<p>未找到相关政策。</p>");
            }
        } else {
        %>

        <div id="jieguo" style="float: left; width: 100%">
            <table>
                <tr>
                    <th>政策名称</th>
                    <th>发文机构</th>
                    <th>颁发日期</th>
                    <th>政策分类</th>
                </tr>
                <%
                    int row = 0;
                    int zongye = 0;
                    String name = request.getParameter("name") != null ? request.getParameter("name") : "";
                    String content = request.getParameter("content") != null ? request.getParameter("content") : "";
                    String document = request.getParameter("document") != null ? request.getParameter("document") : "";
                    String organ = request.getParameter("organ") != null ? request.getParameter("organ") : "";
                    String type = request.getParameter("type") != null ? request.getParameter("type") : "";
                    String yema0 = request.getParameter("yema");
                    int yema = yema0 != null && !yema0.isEmpty() ? Integer.parseInt(yema0) : 1;
                    String shuliang0 = request.getParameter("shuliang");
                    int shuliang = shuliang0 != null && !shuliang0.isEmpty() ? Integer.parseInt(shuliang0) : 10;

                    String nameOperator = request.getParameter("nameOperator") != null ? request.getParameter("nameOperator") : "AND";
                    String contentOperator = request.getParameter("contentOperator") != null ? request.getParameter("contentOperator") : "AND";
                    String organOperator = request.getParameter("organOperator") != null ? request.getParameter("organOperator") : "AND";
                    String typeOperator = request.getParameter("typeOperator") != null ? request.getParameter("typeOperator") : "AND";

                    try {
                        Connection connection = DBUtil.getConnection();
                        PreparedStatement preparedStatement = null;
                        ResultSet rs = null;
                        StringBuilder sqlBuilder = new StringBuilder("SELECT id, name, organ, pubdata, type FROM policy WHERE 1=1 ");
                        int paramIndex = 1;

                        if (!name.isEmpty()) {
                            sqlBuilder.append(" AND name LIKE ? ");
                        }
                        if (!content.isEmpty()) {
                            sqlBuilder.append(nameOperator + " text LIKE ? ");
                        }
                        if (!organ.isEmpty()) {
                            sqlBuilder.append(contentOperator + " organ LIKE ? ");
                        }
                        if (!type.isEmpty()) {
                            sqlBuilder.append(organOperator + " type LIKE ? ");
                        }
                        if (!document.isEmpty()) {
                            sqlBuilder.append(typeOperator + " document LIKE ? ");
                        }

                        sqlBuilder.append(" ORDER BY pubdata DESC");

                        preparedStatement = connection.prepareStatement(sqlBuilder.toString(), ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

                        if (!name.isEmpty()) {
                            preparedStatement.setString(paramIndex++, "%" + name + "%");
                        }
                        if (!content.isEmpty()) {
                            preparedStatement.setString(paramIndex++, "%" + content + "%");
                        }
                        if (!organ.isEmpty()) {
                            preparedStatement.setString(paramIndex++, "%" + organ + "%");
                        }
                        if (!type.isEmpty()) {
                            preparedStatement.setString(paramIndex++, "%" + type + "%");
                        }
                        if (!document.isEmpty()) {
                            preparedStatement.setString(paramIndex++, "%" + document + "%");
                        }

                        rs = preparedStatement.executeQuery();

                        rs.absolute((yema - 1) * shuliang);
                        for (int i = 0; i < shuliang; i++) {
                            if (!rs.next())
                                break;
                %>
                <tr>
                    <td><a href="test.jsp?id=<%=rs.getObject("id")%>"><%=rs.getObject("name")%></a></td>
                    <td><%=rs.getObject("organ")%></td>
                    <td><%=rs.getObject("pubdata")%></td>
                    <td><%=rs.getObject("type")%></td>
                </tr>
                <%
                        }

                        rs.last();
                        row = rs.getRow();
                        if (row % shuliang == 0)
                            zongye = row / shuliang;
                        else
                            zongye = row / shuliang + 1;

                        DBUtil.close(rs, preparedStatement, connection);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                %>
            </table>
        </div>

        <div class="pagination">
            <%
                String str1 = "<input type=\"button\" value=\"";
                String str2 = "\" onclick=\"location.href='test.jsp?name=" + name +
                        "&content=" + content +
                        "&document=" + document +
                        "&organ=" + organ +
                        "&type=" + type +
                        "&nameOperator=" + nameOperator +
                        "&contentOperator=" + contentOperator +
                        "&organOperator=" + organOperator +
                        "&typeOperator=" + typeOperator +
                        "&yema=";
                String str3 = "'\" />";

                if (yema != 1)
                    out.print(str1 + "<" + str2 + (yema - 1) + str3);

                if (yema > 3 && yema < zongye - 3) {
                    out.print(str1 + "1" + str2 + "1" + str3);
                    out.print("...");
                    out.print(str1 + (yema - 1) + str2 + (yema - 1) + str3);
                    out.print(str1 + (yema) + str2 + (yema) + str3);
                    out.print(str1 + (yema + 1) + str2 + (yema + 1) + str3);
                    out.print("...");
                    out.print(str1 + zongye + str2 + zongye + str3);
                } else if (yema <= 3 && yema < zongye - 3) {
                    out.print(str1 + "1" + str2 + "1" + str3);
                    out.print(str1 + "2" + str2 + "2" + str3);
                    out.print(str1 + "3" + str2 + "3" + str3);
                    out.print(str1 + "4" + str2 + "4" + str3);
                    out.print("...");
                    out.print(str1 + zongye + str2 + zongye + str3);
                } else if (yema > 3 && yema >= zongye - 3) {
                    out.print(str1 + "1" + str2 + "1" + str3);
                    out.print("...");
                    for (int i = yema - 1; i <= zongye; i++) {
                        out.print(str1 + i + str2 + i + str3);
                    }
                } else if (yema <= 3 && yema >= zongye - 3) {
                    for (int i = 1; i <= zongye; i++) {
                        out.print(str1 + i + str2 + i + str3);
                    }
                }

                if (yema != zongye)
                    out.print(str1 + ">" + str2 + (yema + 1) + str3);

                out.print("   共" + row + "条");
                out.print("   共" + zongye + "页");
                out.print("   到第<input type=\"text\" name=\"yema\" size=\"10\" value=\"" + yema + "\" />页");
                out.print("<input type=\"submit\" value=\"确定\" /> ");
            %>
        </div>
        <%
            }
        %>

        <footer>
            <div class="layui-col-md12 layui-col-sm12 layui-col-xs12">
                <div style="top: 27px ; position: relative; align-content: center">
                    <span style="color: white;">© 2023 河北省科技厅 版权所有</span>
                </div>
            </div>
        </footer>

    </form>
</div>
</body>
</html>