河北省科技政策综合查询系统需求
(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> <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> <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> <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>
<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>
浙公网安备 33010602011771号