2020 级课堂测试试卷—HBASE数据库应用
一、 测试题目
1、完成《河北省重大技术需求征集》基本信息填报功能,样表如下所示:
*机构全称 |
|
归口管理部门 |
|
|||||||
*通讯地址 |
|
*所在地域 |
|
|||||||
网 址 |
|
*电子信箱 |
|
|||||||
*法人代表 |
|
邮政编码 |
|
|||||||
*联 系 人 |
|
*电 话 |
1.固定 2.手机 |
|||||||
传 真 |
|
|||||||||
*机构属性 |
○企业 ○高等院校 ○研究机构 ○其他 |
|||||||||
*机构简介(主要包括基本情况、现有研究基础等,限500字以内) |
||||||||||
*技术需求名称 |
|
*需求时限 |
年至 年 |
|||||||
*技术需求概述 1、主要问题(需要解决的重大技术问题,限500字以内) 2、技术关键(所需的关键技术、主要指标,限500字以内) 3、预期目标(技术创新性、经济社会效益,限500字以内) |
||||||||||
*关键字:(1-5个) 五个文本框(只能逐个顺序录入) |
||||||||||
拟投入资金总额 |
万元 |
|||||||||
*技术需求解决方式 (位置调整) |
○独立研发 ○委托研发 ○合作研发 ○其他 |
|||||||||
合作意向单位 (选填) |
||||||||||
*科技活动类型 |
○基础研究 ○应用研究 ○试验发展 ○研究与试验发展成果应用 ○技术推广与科技服务 ○生产性活动 |
|||||||||
学科分类(限基础研究填写) |
(参见学科分类)三级下拉文本框 |
|||||||||
需求技术所属领域 (非基础研究填写) |
□电子信息 □光机电一体化 □生物技术与制药 □新材料及应用 □ 现代农业 □新能源与高效节能 □资源与环境 □高技术服务业 □海洋 □社会公共事业 □医疗卫生 □其它(注明) (可多选) |
|||||||||
需求技术 应用行业 (非基础研究填写) |
(参见国民经济行业分类)三级下拉文本框
|
|||||||||
2、实现按照机构全称、所在地域、技术需求名称、关键词的多条件查询;
3、实现按照科技活动类型或机构属性的统计查询。
4、后台数据库要求使用HBASE数据库,并将新数据存入HBase新建表中。
5、实现从数据库中将新数据读出展示在前台页面。
在电脑装好Hbase之后,先来看下hbase的连接
pom.xml配置(这个原来有些问题,就是无法打开web页面,如果之前其他的web项目都可以正常运行,就不是tomcat的问题而是pom.xml依赖的问题,现在还没有弄清楚是缺失了那些依赖还是某些没有导入,解决之后再来总结一下,先来看一下能正常运行的pom.xml)
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>tech</artifactId> <version>1.0-SNAPSHOT</version> <name>tech</name> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> <junit.version>5.8.2</junit.version> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.1.0</version> </dependency> <!--spring相关--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.7</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.5.RELEASE</version> </dependency> <!--servlet和jsp--> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> </dependency> <!--mybatis相关--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.3</version> </dependency> <!-- 添加slf4j日志api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.20</version> </dependency> <!-- 添加logback-classic依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <!-- 添加logback-core依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins> </build> </project>
然后log4j.properties配置
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=firestorm.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.logger.com.codefutures=DEBUG
hbase的增删改查的dao层(无中文乱码)
package com.example.tech.dButils; import bean.Pojo; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class HbaseCRUD { private static Configuration configuration; private static Connection connection; private static Admin admin; public HbaseCRUD() { init(); } /** * 建立连接 */ public void init(){ configuration=HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum","192.168.88.161"); // 换成你自己的IP configuration.set("hbase.zookeeper.property.clientPort","2181"); try{ connection=ConnectionFactory.createConnection(configuration); admin=connection.getAdmin(); }catch (IOException e){ e.printStackTrace(); } } /** * 关闭连接 */ public void close(){ try{ if(admin!=null) admin.close(); }catch (IOException e){ e.printStackTrace(); } } /** * 创建表 * @param myTableName 表名 * @param colFamily 列族数组 * @throws IOException */ public void createTable(String myTableName,String[]colFamily)throws IOException{ TableName tablename = TableName.valueOf(myTableName); if(admin.tableExists(tablename)){ System.out.println("表已存在,删除旧表"); admin.disableTable(tablename);//使表无效 admin.deleteTable(tablename);//删表 } HTableDescriptor hTableDescriptor = new HTableDescriptor(tablename); for(String str:colFamily){ //增加一列 HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(str); hTableDescriptor.addFamily(hColumnDescriptor); } admin.createTable(hTableDescriptor); //建表 System.out.println("建表成功"); } /** * 插入数据 * @param tableName 表名 * @param rowKey 行键 * @param fields 列族(或列族:列限定符) * @param values 值 * @throws IOException */ public void addRecord(String tableName,String rowKey,String []fields,String [] values) throws IOException { Table table = connection.getTable(TableName.valueOf(tableName)); for (int i = 0; i < fields.length; i++) { Put put = new Put(Bytes.toBytes(rowKey)); String [] cols = fields[i].split(":"); if(cols.length == 1) put.addColumn(Bytes.toBytes(cols[0]), Bytes.toBytes(""),Bytes.toBytes(values[i])); else put.addColumn(Bytes.toBytes(cols[0]),Bytes.toBytes(cols[1]),Bytes.toBytes(values[i])); table.put(put); System.out.println("添加成功"); } table.close(); } /** * 查询数据 * @param tableName 表名 * @param column 列族(或列族:列限定符) * @throws IOException */ public Pojo scanColumn (String tableName,String column) throws IOException { Table table = connection.getTable(TableName.valueOf(tableName)); Get get = new Get(Bytes.toBytes(column)); // Result result = table.get(get); Pojo pojo = new Pojo(); List<Cell> cells = result.listCells(); pojo.setCz(Bytes.toString(cells.get(1).getValueArray(),cells.get(1).getValueOffset(),cells.get(1).getValueLength())); pojo.setDwwz(Bytes.toString(cells.get(2).getValueArray(),cells.get(2).getValueOffset(),cells.get(2).getValueLength())); pojo.setDzyx(Bytes.toString(cells.get(3).getValueArray(),cells.get(3).getValueOffset(),cells.get(3).getValueLength())); pojo.setFrdb(Bytes.toString(cells.get(4).getValueArray(),cells.get(4).getValueOffset(),cells.get(4).getValueLength())); pojo.setGddh(Bytes.toString(cells.get(5).getValueArray(),cells.get(5).getValueOffset(),cells.get(5).getValueLength())); pojo.setGkglbm(Bytes.toString(cells.get(6).getValueArray(),cells.get(6).getValueOffset(),cells.get(6).getValueLength())); pojo.setJgjj(Bytes.toString(cells.get(7).getValueArray(),cells.get(7).getValueOffset(),cells.get(7).getValueLength())); pojo.setJgmc(Bytes.toString(cells.get(8).getValueArray(),cells.get(8).getValueOffset(),cells.get(8).getValueLength())); pojo.setJgsx(Bytes.toString(cells.get(9).getValueArray(),cells.get(9).getValueOffset(),cells.get(9).getValueLength())); pojo.setJsxqmc(Bytes.toString(cells.get(10).getValueArray(),cells.get(10).getValueOffset(),cells.get(10).getValueLength())); pojo.setLxr(Bytes.toString(cells.get(11).getValueArray(),cells.get(11).getValueOffset(),cells.get(11).getValueLength())); pojo.setSzdy(Bytes.toString(cells.get(12).getValueArray(),cells.get(12).getValueOffset(),cells.get(12).getValueLength())); pojo.setTxdz(Bytes.toString(cells.get(13).getValueArray(),cells.get(13).getValueOffset(),cells.get(13).getValueLength())); pojo.setYddh(Bytes.toString(cells.get(14).getValueArray(),cells.get(14).getValueOffset(),cells.get(14).getValueLength())); pojo.setYzbm(Bytes.toString(cells.get(15).getValueArray(),cells.get(15).getValueOffset(),cells.get(15).getValueLength())); System.out.println(pojo.toString()); table.close(); return pojo; } /** * 查全部数据 * @param tableName * @return * @throws IOException */ public ArrayList<Pojo> scanAll(String tableName,String jgmc) throws IOException { Table table = connection.getTable(TableName.valueOf(tableName)); Scan scan = new Scan(); ArrayList<Pojo> pojos = new ArrayList<>(); ResultScanner resultScanner = table.getScanner(scan); for (Result result : resultScanner) { Pojo pojo = new Pojo(); //将数据值放到一个数组中 List<Cell> cells = result.listCells(); System.out.println(Bytes.toString(cells.get(0).getValueArray(),cells.get(0).getValueOffset(),cells.get(0).getValueLength())); pojo.setCz(Bytes.toString(cells.get(1).getValueArray(),cells.get(1).getValueOffset(),cells.get(1).getValueLength())); pojo.setDwwz(Bytes.toString(cells.get(2).getValueArray(),cells.get(2).getValueOffset(),cells.get(2).getValueLength())); pojo.setDzyx(Bytes.toString(cells.get(3).getValueArray(),cells.get(3).getValueOffset(),cells.get(3).getValueLength())); pojo.setFrdb(Bytes.toString(cells.get(4).getValueArray(),cells.get(4).getValueOffset(),cells.get(4).getValueLength())); pojo.setGddh(Bytes.toString(cells.get(5).getValueArray(),cells.get(5).getValueOffset(),cells.get(5).getValueLength())); pojo.setGkglbm(Bytes.toString(cells.get(6).getValueArray(),cells.get(6).getValueOffset(),cells.get(6).getValueLength())); pojo.setJgjj(Bytes.toString(cells.get(7).getValueArray(),cells.get(7).getValueOffset(),cells.get(7).getValueLength())); pojo.setJgmc(Bytes.toString(cells.get(8).getValueArray(),cells.get(8).getValueOffset(),cells.get(8).getValueLength())); pojo.setJgsx(Bytes.toString(cells.get(9).getValueArray(),cells.get(9).getValueOffset(),cells.get(9).getValueLength())); pojo.setJsxqmc(Bytes.toString(cells.get(10).getValueArray(),cells.get(10).getValueOffset(),cells.get(10).getValueLength())); pojo.setLxr(Bytes.toString(cells.get(11).getValueArray(),cells.get(11).getValueOffset(),cells.get(11).getValueLength())); pojo.setSzdy(Bytes.toString(cells.get(12).getValueArray(),cells.get(12).getValueOffset(),cells.get(12).getValueLength())); pojo.setTxdz(Bytes.toString(cells.get(13).getValueArray(),cells.get(13).getValueOffset(),cells.get(13).getValueLength())); pojo.setYddh(Bytes.toString(cells.get(14).getValueArray(),cells.get(14).getValueOffset(),cells.get(14).getValueLength())); pojo.setYzbm(Bytes.toString(cells.get(15).getValueArray(),cells.get(15).getValueOffset(),cells.get(15).getValueLength())); System.out.println(pojo); if(pojo.getJgmc().equals(jgmc)){ pojos.add(pojo); } } table.close(); return pojos; } /** * 修改数据 * @param tableName 表名 * @param rowKey 行键 * @param column 列族(或列族:列限定符) * @param value 值 * @throws IOException */ public void modifyData(String tableName,String rowKey,String column,String value) throws IOException { Table table = connection.getTable(TableName.valueOf(tableName)); Put put = new Put(rowKey.getBytes()); String [] cols = column.split(":"); if(cols.length==1) put.addColumn(column.getBytes(),"".getBytes() , value.getBytes()); else put.addColumn(cols[0].getBytes(),cols[1].getBytes() , value.getBytes()); table.put(put); table.close(); } /** * 删除数据 * @param tableName 表名 * @param rowKey 行键 * @throws IOException */ public void deleteRow(String tableName,String rowKey) throws IOException { Table table = connection.getTable(TableName.valueOf(tableName)); Delete delete = new Delete(rowKey.getBytes()); table.delete(delete); table.close(); } }
Pojo类
package bean; public class Pojo { private String jgmc; private String gkglbm; private String txdz; private String szdy; private String dwwz; private String dzyx; private String frdb; private String yzbm; private String lxr; private String gddh; private String yddh; private String cz; private String jgsx; private String jgjj; private String jsxqmc; public String getJgmc() { return jgmc; } public void setJgmc(String jgmc) { this.jgmc = jgmc; } public String getGkglbm() { return gkglbm; } public void setGkglbm(String gkglbm) { this.gkglbm = gkglbm; } public String getTxdz() { return txdz; } public void setTxdz(String txdz) { this.txdz = txdz; } public String getSzdy() { return szdy; } public void setSzdy(String szdy) { this.szdy = szdy; } public String getDwwz() { return dwwz; } public void setDwwz(String dwwz) { this.dwwz = dwwz; } public String getDzyx() { return dzyx; } public void setDzyx(String dzyx) { this.dzyx = dzyx; } public String getFrdb() { return frdb; } public void setFrdb(String frdb) { this.frdb = frdb; } public String getYzbm() { return yzbm; } public void setYzbm(String yzbm) { this.yzbm = yzbm; } public String getLxr() { return lxr; } public void setLxr(String lxr) { this.lxr = lxr; } public String getGddh() { return gddh; } public void setGddh(String gddh) { this.gddh = gddh; } public String getYddh() { return yddh; } public void setYddh(String yddh) { this.yddh = yddh; } public String getCz() { return cz; } public void setCz(String cz) { this.cz = cz; } public String getJgsx() { return jgsx; } public void setJgsx(String jgsx) { this.jgsx = jgsx; } public String getJgjj() { return jgjj; } public void setJgjj(String jgjj) { this.jgjj = jgjj; } public String getJsxqmc() { return jsxqmc; } public void setJsxqmc(String jsxqmc) { this.jsxqmc = jsxqmc; } @Override public String toString() { return "Pojo{" + "jgmc='" + jgmc + '\'' + ", gkglbm='" + gkglbm + '\'' + ", txdz='" + txdz + '\'' + ", szdy='" + szdy + '\'' + ", dwwz='" + dwwz + '\'' + ", dzyx='" + dzyx + '\'' + ", frdb='" + frdb + '\'' + ", yzbm='" + yzbm + '\'' + ", lxr='" + lxr + '\'' + ", gddh='" + gddh + '\'' + ", yddh='" + yddh + '\'' + ", cz='" + cz + '\'' + ", jgsx='" + jgsx + '\'' + ", jgjj='" + jgjj + '\'' + ", jsxqmc='" + jsxqmc + '\'' + '}'; } }
servlet
package com.example.tech.servlet; import bean.Pojo; import com.example.tech.dButils.HbaseCRUD; import javax.servlet.*; import javax.servlet.http.*; import java.io.IOException; import java.sql.SQLException; import java.io.IOException; import java.util.ArrayList; public class TechServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); String action = request.getParameter("action"); HbaseCRUD hbaseCRUD = new HbaseCRUD(); String jgmc = request.getParameter("jgmc"); String gkglbm = request.getParameter("gkglbm"); String txdz = request.getParameter("txdz"); String szdy = request.getParameter("szdy"); String dwwz = request.getParameter("dwwz"); String dzyx = request.getParameter("dzyx"); String frdb = request.getParameter("frdb"); String yzbm = request.getParameter("yzbm"); String lxr = request.getParameter("lxr"); String gddh = request.getParameter("gddh"); String yddh = request.getParameter("yddh"); String cz = request.getParameter("cz"); String jgsx = request.getParameter("jgsx"); String jgjj = request.getParameter("jgjj"); String jsxqmc = request.getParameter("jsxqmc"); String Id = request.getParameter("jsxqmc"); if(action.equals("add")){ String[] cols=new String[]{"Id","jgmc","gkglbm","txdz","szdy","dwwz","dzyx","frdb","yzbm","lxr", "gddh","yddh","cz","jgsx","jgjj","jsxqmc"}; hbaseCRUD.addRecord("tech",jsxqmc,cols,new String[]{Id,jgmc,gkglbm,txdz,szdy,dwwz,dzyx,frdb,yzbm,lxr,gddh,yddh,cz,jgsx,jgjj,jsxqmc}); System.out.println(cols.toString()); response.sendRedirect("index.jsp"); } else if (action.equals("query")) { ServletContext servletContext = request.getServletContext(); System.out.println("机构全称"+jgmc+"所在地域"+szdy+"技术需求名称"+jsxqmc); if(!jsxqmc.equals("")){ Pojo techs = hbaseCRUD.scanColumn("tech",jsxqmc); servletContext.setAttribute("pojo",techs); response.sendRedirect("query.jsp"); } else if (!jgmc.equals("")&&!yzbm.equals("")) { ArrayList<Pojo> techs = hbaseCRUD.scanAll("tech", jgmc); ArrayList<Pojo> techs1 = new ArrayList<>(); for (int i = 0;i< techs.size();i++){ if(yzbm.equals(techs.get(i).getYzbm())){ techs1.add(techs.get(i)); } } servletContext.setAttribute("pojos",techs1); response.sendRedirect("query.jsp"); } } } }
前台页面
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="layui/css/layui.css"> <script src="layui/layui.js"></script> <title>重大技术征集</title> <base href="http://localhost:8080/tech/"> <style type="text/css"> </style> </head> <body> <div class="layui-layout layui-layout-admin"> <div class="layui-header"> <div class="layui-logo layui-hide-xs layui-bg-green">河北省重大技术征集系统</div> <!-- 头部区域(可配合layui 已有的水平导航) --> <ul class="layui-nav layui-layout-left"> <!-- 移动端显示 --> <li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft"> <i class="layui-icon layui-icon-spread-left"></i> </li> <li class="layui-nav-item layui-hide-xs"><a href=""></a></li> <li class="layui-nav-item layui-hide-xs"><a href=""></a></li> <li class="layui-nav-item layui-hide-xs"><a href=""></a></li> <li class="layui-nav-item"> <a href="javascript:;"></a> <dl class="layui-nav-child"> <dd><a href=""></a></dd> <dd><a href=""></a></dd> <dd><a href=""></a></dd> </dl> </li> </ul> <ul class="layui-nav layui-layout-right"> <li class="layui-nav-item layui-hide layui-show-md-inline-block"> <a href="javascript:;"> <img src="//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" class="layui-nav-img"> Rensaihang </a> <dl class="layui-nav-child"> <dd><a href="">Your Profile</a></dd> <dd><a href="">Settings</a></dd> <dd><a href="">Sign out</a></dd> </dl> </li> <li class="layui-nav-item" lay-header-event="menuRight" lay-unselect> <a href="javascript:;"> <i class="layui-icon layui-icon-more-vertical"></i> </a> </li> </ul> </div> <div class="layui-side layui-bg-black"> <div class="layui-side-scroll"> <!-- 左侧导航区域(可配合layui已有的垂直导航) --> <ul class="layui-nav layui-nav-tree" lay-filter="test"> <li class="layui-nav-item layui-nav-itemed"> <a class="" href="javascript:;">技术需求管理</a> <dl class="layui-nav-child"> <dd><a href="index.jsp">添加</a></dd> <dd><a href="query.jsp">查询</a></dd> <dd><a href="">修改</a></dd> <dd><a href=""></a></dd> </dl> </li> <li class="layui-nav-item"> <a href="javascript:;"></a> <dl class="layui-nav-child"> <dd><a href="javascript:;"></a></dd> <dd><a href="javascript:;"></a></dd> <dd><a href=""></a></dd> </dl> </li> <li class="layui-nav-item"><a href="javascript:;"></a></li> <li class="layui-nav-item"><a href=""></a></li> </ul> </div> </div> <div class="layui-body"> <!-- 内容主体区域 --> <div style="padding: 15px;"> <form action="techServlet?action=add" class="layui-form" method="post"> <div class="layui-form-item"> <label class="layui-form-label">*机构全称</label> <div class="layui-input-inline"> <input type="text" name="jgmc" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> </div> <label class="layui-form-label">归口管理部门</label> <div class="layui-input-inline"> <input type="text" name="gkglbm" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">通信地址</label> <div class="layui-input-inline"> <input type="text" name="txdz" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> </div> <label class="layui-form-label">所在地域</label> <div class="layui-input-inline"> <input type="text" name="szdy" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">网址</label> <div class="layui-input-inline"> <input type="text" name="dwwz" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> </div> <label class="layui-form-label">电子邮箱</label> <div class="layui-input-inline"> <input type="text" name="dzyx" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">邮政编码</label> <div class="layui-input-inline"> <input type="text" name="yzbm" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> </div> <label class="layui-form-label">法人代表</label> <div class="layui-input-inline"> <input type="text" name="frdb" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">联系人</label> <div class="layui-input-inline"> <input type="text" name="lxr" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">固定电话</label> <div class="layui-input-inline"> <input type="text" name="gddh" class="layui-input"> </div> <label class="layui-form-label">移动电话</label> <div class="layui-input-inline"> <input type="text" name="yddh" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">传真</label> <div class="layui-input-block"> <input type="text" name="cz" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">机构属性</label> <div class="layui-input-block"> <input type="radio" name="jgsx" value="企业" title="企业"> <input type="radio" name="jgsx" value="高等院校" title="高等院校"> <input type="radio" name="jgsx" value="研究机构" title="研究机构"> <input type="radio" name="jgsx" value="其他" title="其他"> </div> </div> <div class="layui-form-item layui-form-text"> <label class="layui-form-label">机构简介</label> <div class="layui-input-block"> <textarea name="jgjj" placeholder="机构简介(单位基本情况,研究基础等,限500字)" class="layui-textarea"></textarea> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">技术需求名称</label> <div class="layui-input-block"> <input type="text" name="jsxqmc" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button type="submit" class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button> <button type="reset" class="layui-btn layui-btn-primary">重置</button> </div> </div> </form> </div> </div> <script> //Demo layui.use('form', function(){ var form = layui.form; //提交 form.on('submit(formDemo)', function(data){ }); }); </script> <div class="layui-footer"> <!-- 底部固定区域 --> 请认真填写表单 </div> </div> <script> //JS layui.use(['element', 'layer', 'util'], function(){ var element = layui.element ,layer = layui.layer ,util = layui.util ,$ = layui.$; //头部事件 util.event('lay-header-event', { //左侧菜单事件 menuLeft: function(othis){ layer.msg('展开左侧菜单的操作', {icon: 0}); } ,menuRight: function(){ layer.open({ type: 1 ,content: '<div style="padding: 15px;">处理右侧面板的操作</div>' ,area: ['260px', '100%'] ,offset: 'rt' //右上角 ,anim: 5 ,shadeClose: true }); } }); }); </script> </body> </html> <%@ page import="bean.Pojo" %> <%@ page import="java.util.ArrayList" %> Created by IntelliJ IDEA. User: 15251 Date: 2022/9/22 Time: 10:17 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <link rel="stylesheet" href="layui/css/layui.css"> <script src="layui/layui.js"></script> <title>重大技术征集</title> <base href="http://localhost:8080/tech/"> <style type="text/css"> </style> </head> <body> <div class="layui-layout layui-layout-admin"> <div class="layui-header"> <div class="layui-logo layui-hide-xs layui-bg-green">河北省重大技术征集系统</div> <!-- 头部区域(可配合layui 已有的水平导航) --> <ul class="layui-nav layui-layout-left"> <!-- 移动端显示 --> <li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft"> <i class="layui-icon layui-icon-spread-left"></i> </li> <li class="layui-nav-item layui-hide-xs"><a href=""></a></li> <li class="layui-nav-item layui-hide-xs"><a href=""></a></li> <li class="layui-nav-item layui-hide-xs"><a href=""></a></li> <li class="layui-nav-item"> <a href="javascript:;"></a> <dl class="layui-nav-child"> <dd><a href=""></a></dd> <dd><a href=""></a></dd> <dd><a href=""></a></dd> </dl> </li> </ul> <ul class="layui-nav layui-layout-right"> <li class="layui-nav-item layui-hide layui-show-md-inline-block"> <a href="javascript:;"> <img src="//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" class="layui-nav-img"> Rensaihang </a> <dl class="layui-nav-child"> <dd><a href="">Your Profile</a></dd> <dd><a href="">Settings</a></dd> <dd><a href="">Sign out</a></dd> </dl> </li> <li class="layui-nav-item" lay-header-event="menuRight" lay-unselect> <a href="javascript:;"> <i class="layui-icon layui-icon-more-vertical"></i> </a> </li> </ul> </div> <div class="layui-side layui-bg-black"> <div class="layui-side-scroll"> <!-- 左侧导航区域(可配合layui已有的垂直导航) --> <ul class="layui-nav layui-nav-tree" lay-filter="test"> <li class="layui-nav-item layui-nav-itemed"> <a class="" href="javascript:;">技术需求管理</a> <dl class="layui-nav-child"> <dd><a href="index.jsp">添加</a></dd> <dd><a href="query.jsp">查询</a></dd> <dd><a href="">修改</a></dd> <dd><a href=""></a></dd> </dl> </li> <li class="layui-nav-item"> <a href="javascript:;"></a> <dl class="layui-nav-child"> <dd><a href="javascript:;"></a></dd> <dd><a href="javascript:;"></a></dd> <dd><a href=""></a></dd> </dl> </li> <li class="layui-nav-item"><a href="javascript:;"></a></li> <li class="layui-nav-item"><a href=""></a></li> </ul> </div> </div> <div class="layui-body"> <!-- 内容主体区域 --> <div style="padding: 15px;"> <form action="techServlet?action=query" class="layui-form" method="post"> <div class="layui-form-item"> <label class="layui-form-label">*机构全称</label> <div class="layui-input-inline"> <input type="text" name="jgmc" placeholder="" autocomplete="off" class="layui-input"> </div> <label class="layui-form-label">所在地域</label> <div class="layui-input-inline"> <input type="text" name="szdy" placeholder="" autocomplete="off" class="layui-input"> </div> <label class="layui-form-label">技术需求名称</label> <div class="layui-input-inline"> <input type="text" name="jsxqmc" placeholder="" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">归口管理部门</label> <div class="layui-input-inline"> <input type="text" name="jsxqmc" placeholder="" autocomplete="off" class="layui-input"> </div> <label class="layui-form-label">邮政编码</label> <div class="layui-input-inline"> <input type="text" name="yzbm" placeholder="" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button> <button type="reset" class="layui-btn layui-btn-primary">重置</button> </div> </div> </form> <div> <table class="layui-table"> <colgroup></colgroup> <thead> <th>机构全称</th> <th>归口管理部门</th> <th>通信地址</th> <th>所在地域</th> <th>网址</th> <th>电子邮箱</th> <th>邮政编码</th> <th>法人代表</th> <th>联系人</th> <th>固定电话</th> </thead> <% ServletContext servletContext = request.getServletContext(); Pojo pojo1 = (Pojo)servletContext.getAttribute("pojo"); ArrayList<Pojo> pojos = (ArrayList<Pojo>) servletContext.getAttribute("pojos"); System.out.println(pojos); if(pojos!=null){ for(int i = 0;i < pojos.size();i++){ Pojo pojo = pojos.get(i); %> <tr> <td><%=pojo.getJgmc()%></td> <td><%=pojo.getGkglbm()%></td> <td><%=pojo.getTxdz()%></td> <td><%=pojo.getSzdy()%></td> <td><%=pojo.getDwwz()%></td> <td><%=pojo.getDzyx()%></td> <td><%=pojo.getYzbm()%></td> <td><%=pojo.getFrdb()%></td> <td><%=pojo.getLxr()%></td> <td><%=pojo.getGddh()%></td> </tr> <% }} if(pojo1!=null){ %> <tr> <td><%=pojo1.getJgmc()%></td> <td><%=pojo1.getGkglbm()%></td> <td><%=pojo1.getTxdz()%></td> <td><%=pojo1.getSzdy()%></td> <td><%=pojo1.getDwwz()%></td> <td><%=pojo1.getDzyx()%></td> <td><%=pojo1.getYzbm()%></td> <td><%=pojo1.getFrdb()%></td> <td><%=pojo1.getLxr()%></td> <td><%=pojo1.getGddh()%></td> </tr> < <%}%> </table> </div>- </div> </div> <script> //Demo layui.use('form', function(){ var form = layui.form; //提交 form.on('submit(formDemo)', function(data){ }); }); </script> <div class="layui-footer"> <!-- 底部固定区域 --> 请认真填写表单 </div> </div> <script> //JS layui.use(['element', 'layer', 'util'], function(){ var element = layui.element ,layer = layui.layer ,util = layui.util ,$ = layui.$; //头部事件 util.event('lay-header-event', { //左侧菜单事件 menuLeft: function(othis){ layer.msg('展开左侧菜单的操作', {icon: 0}); } ,menuRight: function(){ layer.open({ type: 1 ,content: '<div style="padding: 15px;">处理右侧面板的操作</div>' ,area: ['260px', '100%'] ,offset: 'rt' //右上角 ,anim: 5 ,shadeClose: true }); } }); }); </script> </body> </html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构