Java网络开发(Tomcat同步数据分页)—— 用Jsp语法 到 实现数据的分页展示 到 只看自己的数据 + 模糊查询 迭代升级

news2024/11/24 6:56:33

目录

  • 引出
  • 0.jsp的使用和语法 & 报错和解决
    • (1)后端共享,前端获取 ${pageInfo}
    • (2)如果想获取pageInfo这个对象的某个属性值,用 点 + 属性 ${pageInfo.pages}
    • (3)如果想回传,即jsp发给后端的值,再在jsp中获得 ${param.bookName}
    • (4)如果想获取session中的user, ${sessionScope.user.username}
    • (5)jsp中的循环语句 c:forEach
    • (6)判断语句 c:if + ${type.id==opus.typeId}
    • (7)使用Jsp时常见的报错信息及解决方法
  • 1.数据分页显示,首页,上一页,下一页,尾页,跳转
    • (1)之前的方法及存在问题
    • (2)数据分页的解决方案
    • (3)后端代码
    • (4)前端代码
  • 2.模糊查询 + 分页显示 + 记录输入的查询条件
    • (1)模糊查询核心代码:放在form表单中,div块中,隐藏框
    • (2)首页尾页,上下页的核心代码,记得把pageSize和搜索条件再传回后端
  • 3.只能查看自己的数据--本质是session + sql语句
    • (1)后端核心代码--获取session
    • (2)核心sql语句--authorId作为条件
  • 总结

引出

1.jsp的本质是啥,核心语法有哪些,常见报错;
2.为啥要分页展示,怎么实现分页展示;
3.首页,尾页,上下页,跳转如何实现;
4.模糊查询怎么实现;
5.只能看自己的怎么搞;


0.jsp的使用和语法 & 报错和解决

JSP的本质

1.Jsp本质是一个长得像html文件的servlet,因此,正常就可以当一个普通的html文件使用;

2.Jsp本质是servlet,因此可以从java的HttpServlet进行值共享,而后转发到 Jsp 进行展示;核心代码如下:

		// 共享值
        req.setAttribute("bookTypes", bookTypeList);
        // 转发给jsp
        req.getRequestDispatcher("/book/add.jsp").forward(req,resp);

JSP常用语法及注意事项

(1)后端共享,前端获取 ${pageInfo}

后端共享:

		// 共享值;
		PageInfo pageInfo = new PageInfo(pageNum, pageSize, total, pages);
        req.setAttribute("pageInfo",pageInfo);

        // 转发到jsp
        req.getRequestDispatcher("/book/messListLikePage.jsp").forward(req,resp);

前端获取:

${pageInfo}

(2)如果想获取pageInfo这个对象的某个属性值,用 点 + 属性 ${pageInfo.pages}

${pageInfo.pages}

(3)如果想回传,即jsp发给后端的值,再在jsp中获得 ${param.bookName}

在这里插入图片描述

<div style="text-align: left">
    <form action="/day06/opus/messLikeList/page" method="get">
<%--        如何想要再拿到之前的输入模糊查询的条件
            parem的意思是从request中获取参数--%>

        书名:<input type="text" placeholder="输入书名进行模糊查询" name="bookName" value="${param.bookName}">
        <input type="submit" value="搜索">
    </form>

</div>

(4)如果想获取session中的user, ${sessionScope.user.username}

在后端java中把user存在session中,

		// 3.用输入的用户名去数据库中查询一条记录
        User userDb = userService.queryByUsername(username);

		// +登陆成功的用户存到session----用于确定当前的操作是谁做的
        req.getSession().setAttribute("user", userDb);

在前端jsp中用sessionScope.user获得user对象:

欢迎您:${sessionScope.user.username}

(5)jsp中的循环语句 c:forEach

<c:forEach items="${opusList}" var="opus">

注意事项:

1)jsp文件中要生成:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

2)pom.xml文件中要导包:

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

(6)判断语句 c:if + ${type.id==opus.typeId}

类似三元表达式

${type.id==opus.typeId ? 'selected' : ''}

普通的if语句

<c:if test="${pageInfo.pageNum!=1}">
    <a href="/day06/news/list?pageNum=1&pageSize=${pageInfo.pageSize}&name=${name}">首页</a>
    <a href="/day06/news/list?pageNum=${pageInfo.pageNum-1}&pageSize=${pageInfo.pageSize}&name=${name}">上一页</a>
</c:if>

(7)使用Jsp时常见的报错信息及解决方法

参考下面博客:

Java网络开发(Tomcat)——遇到的 bug 汇总(持续更新)

1.数据分页显示,首页,上一页,下一页,尾页,跳转

(1)之前的方法及存在问题

在下面博客中,

Java网络开发(Tomcat)—— web的 请求request (post和get请求)和 响应response + 【案例】表格显示在网页

在这里插入图片描述

实现了用jsp把图书信息显示到前端,但存在的问题是这里把数据全部展示出来,但全部显示存在以下的问题:

1)前端要显示的数据太多,不方便看;

2)后端要查询出数据库中所有的数据,后端查询压力大;

(2)数据分页的解决方案

参考:PageHelper:分页工具

1.pageSize:一页显示多少条:进行设置,默认10条

2.pageNum:当前是第几页,默认第一页

要素含义默认
pageNum当前是第几页默认是第一页
pageSize每一页显示条数百度默认10条
total数据的总条数需要后端统计
pages总页数需要计算
list传给前端的list需要后端查

后端:

1.total:数据的总条数:是变化的

		// 如果没有输入查询关键词,数据条数为总数;
        Integer total = companyService.countLines(name);

2.pages:总页数怎么算?

在这里插入图片描述

        // 3.根据查询数据条数,以及前端获取的每页显示数据条数,计算总页数;
        // 思路:如果能整除,则为页数;如果不能整除,则/后再加1;
        Integer pages = total % pageSize==0 ? total/pageSize:total/pageSize+1;

3.如何进行判断,首页,下一页,上一页?

1).当前页是否是首页:pageNum == 1;

2).是否是最后一页: pageNum == pages;

3).是否有上一页:pageNum > 1;

4).是否有下一页:pageNum < pages;

在这里插入图片描述

(3)后端代码

首先是PageInfo实体类:PageInfo.java文件如下:

package com.tianju.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 和分页相关的实体类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageInfo<T> {
    private Integer pageNum; // 当前是第几页,如果没有输入,默认是第一页
    private Integer pageSize; // 每页显示的数据条数,百度默认一页10条
    private Integer total; // 总条数;
    private Integer pages; // 总页数;
    private List<T> list; // 传给前端的list
}

然后是在ListServlet.java中进行PageInfo实体类的实例化,共享,然后传给前端jsp

package com.tianju.servlet.news;

import com.tianju.entity.Article;
import com.tianju.entity.PageInfo;
import com.tianju.service.IArticleService;
import com.tianju.service.impl.ArticleServiceImpl;
import com.tianju.util.StringUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 文章列表显示的servlet
 */

@WebServlet("/news/list")
public class ListServlet extends HttpServlet {
    private IArticleService articleService = new ArticleServiceImpl();
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 1.获取前端的输入:第几页,每页数据量,查询关键词是啥
        String pageNumStr = req.getParameter("pageNum"); // 第几页
        String pageSizeStr = req.getParameter("pageSize"); // 每页显示数据条数
        String keyword = req.getParameter("name");

        // 2.进行赋值,默认首页,默认每页3条
        Integer pageNum = StringUtils.isBlank(pageNumStr) ? 1:Integer.parseInt(pageNumStr);
        Integer pageSize = StringUtils.isBlank(pageSizeStr) ? 3:Integer.parseInt(pageSizeStr);

        // 3.计算数据总条数
        Integer total = articleService.countLikeLines(keyword);

        // 4.计算总页数
        Integer pages = total % pageSize==0 ? total/pageSize:total/pageSize+1;

        // 5.new pageInfo对象
        List<Article> list = articleService.queryByKeyWordDescLimit(keyword, pageNum, pageSize);
        PageInfo<Article> pageInfo = new PageInfo<>(pageNum,pageSize,total, pages, list);

        System.out.println(list);

        // 6.共享值
        req.setAttribute("pageInfo", pageInfo);
        req.setAttribute("name", keyword);
        System.out.println(pageInfo);

        // 6.转发给前端显示
        req.getRequestDispatcher("/news/list.jsp").forward(req, resp);

    }
}

(4)前端代码

在这里插入图片描述

前端的jsp文件,list.jsp文件代码如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>新闻浏览页面</title>
</head>
<body>
<h1>新闻浏览页面</h1>

${pageInfo}<br>

<%--${param}<br>--%>
<%--${sessionScope}--%>
<%--    输入查询的条件--%>
<div style="align-content: center">
    <form action="/day06/news/list">
        <%--        隐藏框--%>
        <input type="hidden" name="pageSize" value="${pageInfo.pageSize}">
        <input type="hidden" name="pageNum" value="${pageInfo.pageNum}">
        查询:<input type="text" placeholder="输入要查询关键字" name="name" value="${param.name}">
        <input type="submit" value="搜索"><br>
    </form>
</div>

<div style="color: blueviolet" >
    <form action="/day06/news/list">
        <input type="hidden" name="name" value="${name}">
        <input type="hidden" name="pageNum" value="${pageInfo.pageNum}">
        每页显示条数:<input type="text" name="pageSize" value="${pageInfo.pageSize}">
        <input type="submit" value="提交"><br>
    </form>
</div>


<a href="/day06/news/addPage">发布文章</a><br>


<table width="100%" border="1px">
    <tr>
        <th>编号</th>
        <th>栏目</th>
        <th>标题</th>
        <th>内容</th>
        <th>操作</th>
    </tr>

    <c:forEach items="${pageInfo.list}" var="ar">
        <tr>
            <td>${ar.articleId}</td>
            <td>${ar.channelName}</td>
            <td>${ar.articleTitle}</td>
            <td>${ar.articleContent}</td>
            <td>
                <a href="/day06/news/delete?id=${ar.articleId}">删除</a>
                <a href="/day06/update/page?id=${ar.articleId}">修改</a>
            </td>

        </tr>

    </c:forEach>

</table><br><hr>

<c:if test="${pageInfo.pageNum!=1}">
    <a href="/day06/news/list?pageNum=1&pageSize=${pageInfo.pageSize}&name=${name}">首页</a>
    <a href="/day06/news/list?pageNum=${pageInfo.pageNum-1}&pageSize=${pageInfo.pageSize}&name=${name}">上一页</a>
</c:if>

<%--     如果当前页是尾页,需要控制下一页和尾页不显示 --%>
<c:if test="${pageInfo.pageNum!=pageInfo.pages}">
    <a href="/day06/news/list?pageNum=${pageInfo.pageNum+1}&pageSize=${pageInfo.pageSize}&name=${name}">下一页</a>
    <a href="/day06/news/list?pageNum=${pageInfo.pages}&pageSize=${pageInfo.pageSize}&name=${name}">尾页</a>
</c:if>

总计${pageInfo.pages}/当前${pageInfo.pageNum}


<form action="/day06/news/list" method="get">
    <input type="hidden" name="name" value="${name}">
    <input type="hidden" name="pageSize" value="${pageInfo.pageSize}">
    跳转到:<input type="text" name="pageNum" value="${pageInfo.pageNum}">
    <input type="submit" value="提交">
</form>


</body>
</html>

2.模糊查询 + 分页显示 + 记录输入的查询条件

(1)模糊查询核心代码:放在form表单中,div块中,隐藏框

<%--    输入查询的条件--%>
<div style="align-content: center">
    <form action="/day06/news/list">
        <%--        隐藏框--%>
        <input type="hidden" name="pageSize" value="${pageInfo.pageSize}">
        <input type="hidden" name="pageNum" value="${pageInfo.pageNum}">
        查询:<input type="text" placeholder="输入要查询关键字" name="name" value="${param.name}">
        <input type="submit" value="搜索"><br>
    </form>
</div>

在这里插入图片描述

每页显示条数的核心代码,div中,form表单,隐藏框

<div style="color: blueviolet" >
    <form action="/day06/news/list">
        <input type="hidden" name="name" value="${name}">
        <input type="hidden" name="pageNum" value="${pageInfo.pageNum}">
        每页显示条数:<input type="text" name="pageSize" value="${pageInfo.pageSize}">
        <input type="submit" value="提交"><br>
    </form>
</div>

(2)首页尾页,上下页的核心代码,记得把pageSize和搜索条件再传回后端

<c:if test="${pageInfo.pageNum!=1}">
    <a href="/day06/news/list?pageNum=1&pageSize=${pageInfo.pageSize}&name=${name}">首页</a>
    <a href="/day06/news/list?pageNum=${pageInfo.pageNum-1}&pageSize=${pageInfo.pageSize}&name=${name}">上一页</a>
</c:if>

<%--     如果当前页是尾页,需要控制下一页和尾页不显示 --%>
<c:if test="${pageInfo.pageNum!=pageInfo.pages}">
    <a href="/day06/news/list?pageNum=${pageInfo.pageNum+1}&pageSize=${pageInfo.pageSize}&name=${name}">下一页</a>
    <a href="/day06/news/list?pageNum=${pageInfo.pages}&pageSize=${pageInfo.pageSize}&name=${name}">尾页</a>
</c:if>

总计${pageInfo.pages}/当前${pageInfo.pageNum}

在这里插入图片描述

跳转到某页,记得回传信息

<form action="/day06/news/list" method="get">
    <input type="hidden" name="name" value="${name}">
    <input type="hidden" name="pageSize" value="${pageInfo.pageSize}">
    跳转到:<input type="text" name="pageNum" value="${pageInfo.pageNum}">
    <input type="submit" value="提交">
</form>

3.只能查看自己的数据–本质是session + sql语句

(1)后端核心代码–获取session

// TODO:+++++++++++只能查看自己的数据
        HttpSession session = req.getSession();
        User user = (User) session.getAttribute("user");

// TODO:只能查询自己的,根据条件查询到的数据的总条数
        Integer total = opusService.CountAuthorIdAndLikeNameLines(queryLikeName,user.getId());

// TODO:+++++++++++只能查看自己的数据
        // 进行查询;
        List<Opus> list = opusService.queryByAuthorIdAndLikeNameLimit(pageNum, pageSize, queryLikeName, user.getId());

(2)核心sql语句–authorId作为条件

1)数据总条数

@Override
public Integer CountAuthorIdAndLikeNameLines(String name, Integer authorId) {
    // 如果没有输入条件,统计全部
    if (StringUtils.isBlank(name)){
        return db.queryForObject("SELECT COUNT(id) FROM t_opus WHERE authorId = ?", Integer.class,authorId);
    }
    // 如果输入条件
    return db.queryForObject("SELECT COUNT(id) FROM t_opus  WHERE authorId = ? AND name LIKE ?",
            Integer.class,authorId,"%"+name.trim()+"%");
}

2)只能查看自己的数据

@Override
    public List<Opus> queryByAuthorIdAndLikeNameLimit(Integer pageNum, Integer pageSize, String name, Integer authorId) {
        String sql = "SELECT t_opus.*,tt.name AS typename,tu.username\n" +
                "FROM t_opus \n" +
                "LEFT JOIN t_types tt ON t_opus.typeId = tt.id\n" +
                "LEFT JOIN user_tab tu ON t_opus.authorId = tu.id WHERE authorId = ?";
        String limit = " LIMIT " + (pageNum-1)*pageSize + "," + pageSize + " ";
        String order = " ORDER BY t_opus.id DESC ";

        // 如果没有输入条件,默认查全部
        if (StringUtils.isBlank(name)){
            return db.query(sql + order + limit, rowMapper,authorId);
        }

        // 模糊查询后limit,去掉空格
        String whereCondition = " AND t_opus.name LIKE ? ";
        System.out.println(sql + whereCondition + order +limit);
        return db.query(sql + whereCondition + order +limit, rowMapper,authorId, "%"+name.trim()+"%");
    }

总结

1.jsp本质是servlet,param.回传,获取session用sessionScope;
2.jsp的循环和分支语句,三元表达式,常见报错及解决;
3.数据分页显示的解决方案,用PageInfo实体类实现;
4.模糊查询,每页条数,页面跳转 要全部回传到后端;
4.用session结合sql语句实现只能看自己的数据;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/652412.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java 学生信息管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 学生信息管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0…

IDEA执行Maven命令

在工作区的最右侧&#xff0c;IntelliJ IDEA 为我们提供了一个十分实用的窗口&#xff1a;Maven 工具窗口&#xff0c;通过它我们几乎可以完成所有与 Maven 相关的操作。 在 Maven 工具窗口中&#xff0c;我们可以通过以下 3 种方式中执行 Maven 命令&#xff1a; 使用 Run An…

RFID技术在工业自动化和生产流程优化方面的成功应用

您是否好奇于如何在工业场景中利用RFID技术实现更高效的操作和生产流程优化&#xff1f;ANDEAWELL作为国内知名的RFID工业识别设备供应商&#xff0c; 企业国产化替代的首选品牌&#xff0c;将带您深入探索RFID技术在工业领域的应用&#xff0c;揭示其优势和挑战&#xff0c;并…

召回率的概念

召回率 就是查出来的正确的数量除以所有正确的数量&#xff1b;准确率是用你查出来的正确的数量除以所有的数量&#xff08;包含正确和不正确的数量&#xff09;。 附上某位大佬的图&#xff1a;

激光盐密灰密测试仪

一、产品特点 KDYM-302L 激光盐密灰密测试仪采用检测技术将灰密测试与盐密测试合二为一&#xff0c;可同时检测出被测绝缘子的灰密度和盐密度&#xff0c;简化了绝缘子污秽检测的流程&#xff0c;非常适合在巡检现场和实验室使用。 二、主要特点 内置测试专用测试软件&#x…

WebP 转换工具

webp WebPcwebp 编码&#xff08;转换成 WebP&#xff09;dwebp 解码Android Studio 编码 WebP1、Convert to WebP...2、选项3、压缩4、直接运行即可 WebP Github&#xff1a;https://github.com/webmproject/WebPShop 中文教程&#xff1a;https://developers.google.com/sp…

对象存储服务MinIO简介

黑马程序员学习资料 MinIO简介 MinIO基于Apache License v2.0开源协议的对象存储服务&#xff0c;可以做为云存储的解决方案用来保存海量的图片&#xff0c;视频&#xff0c;文档。由于采用Golang实现&#xff0c;服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单&…

LFS搭建总结

该文档参考LFS官网 和 https://www.cnblogs.com/alphainf/p/16661308.html 下文中未提及的部分参考官方文档 环境准备 在Oracle VM VirtualBox中先创建一个20G的磁盘&#xff0c;安装bebian操作系统&#xff0c;此时该硬盘为sda&#xff0c;分了三个区&#xff0c;分别是Linu…

Selenium Python 教程第3章: 页面的相关操作

3、针对Web页面的相关操作 最基本的页面操作也许是使用WebDriver打开一个链接。 常规的方法是调用 get 方法: driver.get("http://www.python.org")WebDriver 将等待&#xff0c;直到页面完全加载完毕&#xff08;其实是等到 onload 方法执行完毕&#xff09;&…

VS报错 --- error LNK2019: 无法解析的外部符号

运行vs程序时候&#xff0c;一般会出现这个错误 &#xff1a; 1 error LNK2019: 无法解析的外部符号 _lws_create_context4&#xff0c;该符号在函数 "public: bool __thiscall WebsocketServerApp::startServer(char const *,int)" (?startServerWebsocketServe…

只是做笔记有必要入手苹果笔吗?好用又便宜的平替苹果笔

苹果原装电容笔和那种只具备倾斜压感的平替电容笔不一样&#xff0c;平替电容笔并没有具备重力压感。但是&#xff0c;如果你并不经常需要绘画的话&#xff0c;那么你也不必花费太多的金钱来购买一支价格如此贵的苹果电容笔&#xff0c;选择一款平替电容笔即可。在这里&#xf…

【期末复习】云计算要点

【选择】 【判断】 【解答】打*为录音明确提出的内容 1*.大数据现象是怎么形成的&#xff1f; 大数据就是&#xff1a;海量数据或巨量数据&#xff0c;其规模巨大到无法通过目前主流的计算机系统在合理时间内获取、存储、管理、处理并提炼以帮助使用者决策。大数据产生的原因…

SSH服务器

文章目录 文字接口连接服务器&#xff1a;SSH服务器连接加密技术简介启动SSH服务SSH客户端连接程序SSH&#xff1a;直接登录远程主机的指令使用案例 服务器公钥记录文件&#xff1a;~/.ssh/known_hosts报错解决 模拟FTP的文件传输方式&#xff1a;SFTP使用案例 文件异地直接复制…

用python写网络爬虫

第二章 数据抓取 首先 &#xff0c; 我们会介绍一个叫 做Firebug Lite 的浏览器扩展&#xff0c; 用 于检查网页 内容 &#xff0c; 如 果你有一些网络开发背景的话&#xff0c; 可能 己经对该扩展十分熟悉 了 。 然后 &#xff0c;我们会介绍三 种抽取网 页数据的 方法 &…

【算法刷题】其他技巧

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招算法的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于网上知识点进行的&#xff0c;每个代码参考热门博客和GPT3.5&#…

vivo 帐号服务稳定性建设之路-平台产品系列06

作者&#xff1a;vivo 互联网平台产品研发团队- Shi Jianhua、Sun Song 帐号是一个核心的基础服务&#xff0c;对于基础服务而言稳定性就是生命线。在这篇文章中&#xff0c;将与大家分享我们在帐号稳定性建设方面的经验和探索。 一、前言 vivo帐号是用户畅享整个vivo生态服务…

【CEEMDAN-VMD-GRU】完备集合经验模态分解-变分模态分解-门控循环单元预测研究(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Python】数据容器总结 ② ( 数据容器元素排序 | 字符串大小比较 | 字符大小比较 | 长短一样的字符串大小比较 | 长短不一样的字符串大小比较 )

文章目录 一、数据容器元素排序二、字符串大小比较1、字符大小比较2、长短一样的字符串大小比较3、长短不一样的字符串大小比较 一、数据容器元素排序 调用 sorted 函数 , 可以对 数据容器 中的元素进行排序 ; sorted(数据容器变量, [reverseTrue])上述两个参数 , 第一个 数据…

开源!一款.Net开发的全能工具EverythingToolbar,节约你90%操作时间!

今天给大家推荐一款已获得6.3K stars的.Net开发的开源全能工具EverythingToolbar。EverythingToolbar 是由 Everything 提供支持的 Windows 任务栏的即时文件搜索集成&#xff0c;可以替换操作系统任务栏上的 Windows 搜索&#xff0c;使 Windows 上的文件搜索更快、更可靠。 …

Hive 库表相关操作

1、Hive内部表和外部表 1.内部表&#xff1a;未被external修饰&#xff1b;外部表&#xff1a;被external修饰。 区别&#xff1a; &#xff08;1&#xff09;内部表数据由Hive自身管理&#xff0c;外部表数据由HDFS管理&#xff1b; &#xff08;2&#xff09;内部表数据存…