前后端+数据库的项目实战:hbu迎新网-较复杂(下)javaweb

news2025/4/23 13:50:44

目录

十一、实现对内容的富文本编辑(换行、图片颜色等等样式)

(1)下载富文本编辑器,引入资源

(2)将原项目的内容部分替换为富文本编辑器

1、替换添加页面

2、替换修改页面(和添加一样,多了一个回显操作) 

十二、添加操作时的图片上传

(1)建立util包,然后创建SetSession服务器

(2)实现效果

 (3)将选择的图片上传到数据库

 (4)将选择的图片封面显示到前端页面

1、在add.html中添加一个隐藏域传值

​2、从隐藏域中取值

3、传到数据库

​4、可以在后端数据库的Imgurl中看到图片的地址信息

5、ur显示到前端,在content.js中修改路径

(5)最终效果

十三、修改操作时的图片上传-和添加操作差不多 

(1)updata.html和添加的一样,设置一个隐藏域+一个展示的div

 (2)最终效果

 十四、将数据库信息显示到main首页

(1)将数据返回前端(以通知公告为例)

(2)将数据显示追加到前端(以通知公告为例)

(3)最终

十五、点击hub.html菜单栏跳转到列表页并展示对应内容

(1)获取hub.html页面的栏目id到列表页

(2)根据id 查找内容并显示

 (3)更改前端显示的栏目为正确的栏目名称

十六、点击条目跳转到详情页(hbu_detail) 和十五类似

 (1)绑定属性

(2)根据id 查找 内容并显示

(3)最后再修改一下面包线的内容 

十七、在列表页跳转到列表页

(1)在hub_list.js中添加

十八、在列表页跳转到详情页hbu_detail

(1)给事件捆绑id

​(2)在hub_list.js中添加

(3)最终

十九、在详情页点击跳转其他页面

(1)给所有点击要跳转的挂上class ='tolist'

 (2)最终实现各个页面间的跳转

二十、完成登录页面

(1)数据库新建一个用户表

(2)点击登录按钮获取输入框的值

1、login.html页面

2、js: 

3、后端服务器loginseverlet.java 

(3)最终效果

二十一、只是样式上进行了一个合理的跳转,现在实现必须经过登录才能访问hbu.html ---过滤器

(1)对所有资源过滤

(2)只对不该被直接访问的资源过滤

1、服务器创建session 存状态 

2、在过滤器中: 

总结:一些tips


前后端+数据库的项目实战:hbu迎新网-较复杂(上)-CSDN博客 -----上篇博客

十一、实现对内容的富文本编辑(换行、图片颜色等等样式)

(1)下载富文本编辑器,引入资源

UEditor Docs 官网说明文档

下载此资源

将资源解压后拖放到WebContent目录下:

 修改报错的两个地方:

第一个文件设置编码为utf-8【其余是注释报错这个不用管】

第二个文件报错是因为

把lib目录下的jar包全部复制到项目本身lib文件下

创建 demo.html 文件,填入下面的html代码

<!DOCTYPE HTML>
<html lang="en-US">

<head>
    <meta charset="UTF-8">
    <title>ueditor demo</title>
</head>

<body>
    <!-- 加载编辑器的容器 -->
    <script id="container" name="content" type="text/plain">
        这里写你的初始化内容
    </script>
    <!-- 配置文件 -->
    <script type="text/javascript" src="ueditor.config.js"></script>
    <!-- 编辑器源码文件 -->
    <script type="text/javascript" src="ueditor.all.js"></script>
    <!-- 实例化编辑器 -->
    <script type="text/javascript">
        var ue = UE.getEditor('container');
    </script>
</body>

</html>

因为我不是在utf8-jsp目录下创建的,所有需要修改为

运行此文件

         上传图片时不能显示是因为没有设置路径前缀:【项目名称】其他配置项一样 真正上传的图片存在了

E:\eclipse.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\HBU\ueditor\jsp\upload\image\20250221 先把图片上传到服务器下的某个文件夹下重命名

 工作原理大家可以自己上网搜索一下

(2)将原项目的内容部分替换为富文本编辑器

1、替换添加页面

 add.html中找到需要放置编辑器的地方:

在外面的add,js文件中初始化

获取content要从富文本编辑器中获取

运行项目:

 

但是样式一复杂了就添加失败了?【因为添加到数据库的content是用双引号引用样式的,我们需要把这些双引号变成单引号再进行字符串的拼接,否则传入后端的sql语句是有问题的】 

2、替换修改页面(和添加一样,多了一个回显操作) 

回显后为:

 

十二、添加操作时的图片上传

(1)建立util包,然后创建SetSession服务器

(2)实现效果

 (3)将选择的图片上传到数据库

add.js,像刚刚建立的SetSession发起请求

上传的图片会放在:

 -----至此:

 (4)将选择的图片封面显示到前端页面

1、在add.html中添加一个隐藏域传值

 

2、从隐藏域中取值

3、传到数据库
 4、可以在后端数据库的Imgurl中看到图片的地址信息

5、ur显示到前端,在content.js中修改路径

(5)最终效果

十三、修改操作时的图片上传-和添加操作差不多 

(1)updata.html和添加的一样,设置一个隐藏域+一个展示的div

js文件中,将图片回显【这里注意要给隐藏域设置值,才能显示到前端】,图片上传【和add一样】,获取隐藏域的URL

后端文件接受imgrul参数

 (2)最终效果

图片上传操作需要这两个jar包,但是因为在使用富文本编辑器的时候已经有了,所以上传操作时就没有导入了 

 十四、将数据库信息显示到main首页

(1)将数据返回前端(以通知公告为例)

 

(2)将数据显示追加到前端(以通知公告为例)

//裁剪 限制字数
var cut = function(str,len){
    if(str.length()>len){
        str = str.substring(0,len)+"..."
    }
    return str
}

 

(3)最终

十五、点击hub.html菜单栏跳转到列表页并展示对应内容

(1)获取hub.html页面的栏目id到列表页

因为跨页面了 ,所以这里用到了cookie 

hub_list.js中:

(2)根据id 查找内容并显示


//裁剪 限制字数
var cut = function(str,len){
    if(str.length>len){
        str = str.substring(0,len)+"..."
    }
    return str
}
//获取栏目id
var channelid = $.cookie("channelid").substring(1)

//查找数据
$.ajax({
    url:"HbuServlet",
    type:"get",
    data:{
        channelid,
    },
    success:function(value)
    {
        //console.log(value)
        var arr = value.data
        // 塞到hbu_list.html
        $(".hbu_list ul").empty()
        for(var i=0;i<arr.length;i++){
            $(".hbu_list ul").append("<li>"+
                "<a href='#' class='toDetail'>"+
                    "<div class='left'>"+
                        "<h3>"+cut(arr[i].title,30)+"</h3>"+
                        "<p>"+cut(arr[i].desc,100)+"</p>"+
                    "</div>"+
                    "<div class='right'>"+
                        "<span>"+arr[i].createtime.substring(0,10)+"</span>"+
                    "</div>"+
               " </a>"+
           " </li>")
        }
        
    }
})

 

 (3)更改前端显示的栏目为正确的栏目名称

sql:select * from channel where id=2

十六、点击条目跳转到详情页(hbu_detail) 和十五类似

因为跨页面了 ,所以这里用到了cookie

 (1)绑定属性

由于这些条目都是后来生成的(从数据库中拿来的),所所以绑定属性的时候不能在原来的html中

(2)根据id 查找 内容并显示

显示到页面

(3)最后再修改一下面包线的内容 

十七、在列表页跳转到列表页

(1)在hub_list.js中添加

//跳转到列表页
$(".tolist").click(function(){
    //存cookie,携带href属性值
    $.cookie("channelid",$(this).attr("href"))
    //页面跳转
    location.href="hbu_list.html"
})

十八、在列表页跳转到详情页hbu_detail

(1)给事件捆绑id

 (2)在hub_list.js中添加

//跳转到详情页hub_detail
$("body").on("click",".toDetail",function(){
    //存cookie,携带href属性值
    $.cookie("contentid",$(this).attr("href"))
    //页面跳转
    location.href="hbu_detail.html"
})

(3)最终

十九、在详情页点击跳转其他页面

(1)给所有点击要跳转的挂上class ='tolist'

在hbu_detail.js中添加.

//跳转到列表页
$(".tolist").click(function(){
    //存cookie,携带href属性值
    $.cookie("channelid",$(this).attr("href"))
    //页面跳转
    location.href="hbu_list.html"
})

 (2)最终实现各个页面间的跳转

二十、完成登录页面

(1)数据库新建一个用户表

需要的sql语句

(2)点击登录按钮获取输入框的值

1、login.html页面

 

2、js: 

3、后端服务器loginseverlet.java 

(3)最终效果

二十一、只是样式上进行了一个合理的跳转,现在实现必须经过登录才能访问hbu.html ---过滤器

知识点--过滤器:

新建一个filter过滤器

这里修改为

在doFilter里编写代码

运行hbu.html文件时:

且看不到页面:但并不是报错

(1)对所有资源过滤

过滤器先收到请求。

(2)只对不该被直接访问的资源过滤

1、服务器创建session 存状态 

2、在过滤器中: 

总结:一些tips

①后端代码没问题,修改之后运行为无效修改----------重新运行servers【一般创建新的servlet就要重启】

②前端页面修改后运行没变化:清除浏览器数据之后再运行

③前端熟练使用alert和console测试是否修改成功;后端直接System.out.println()

④进行字符串拼接时,如果使用双引号当做开始结束符号,字符内部的双引号要写成单引号

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

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

相关文章

Redis、Memcached应用场景对比

环境 Redis官方网站&#xff1a; Redis - The Real-time Data Platform Redis社区版本下载地址&#xff1a;Install Redis | Docs Memcached官方网站&#xff1a;memcached - a distributed memory object caching system Memcached下载地址&#xff1a;memcached - a dis…

【单片机通信技术应用——学习笔记三】液晶屏显示技术,取模软件的应用

一、液晶显示技术简介 1.RGB信号线 RGB是一种色彩模式&#xff0c;是工业界的一种颜色标准&#xff0c;是通过红&#xff08;R&#xff09;、绿&#xff08;G&#xff09;、蓝&#xff08;B&#xff09;三个颜色通道的变化&#xff0c;以及它们相互之间的叠加来得到各式各样的…

MySQL颠覆版系列————MySQL新特性(开启数据库的新纪元)上篇

文章目录 前言一、窗口函数&#xff08;Window Functions&#xff09;1.1 窗口函数概念1.2 常见的窗口函数 二、公用表表达式&#xff08;Common Table Expressions, CTEs&#xff09;2.1 公用表表达式的概念2.2 常见的公用表表达式 三、JSON增强3.1 JSON增强的概念3.2 常见的J…

MySQL 调优:查询慢除了索引还能因为什么?

文章目录 情况一&#xff1a;连接数过小情况二&#xff1a;Buffer Pool 太小 MySQL 查询慢除了索引还能因为什么&#xff1f;MySQL 查询慢&#xff0c;我们一般也会想到是因为索引&#xff0c;但除了索引还有哪些原因会导致数据库查询变慢呢&#xff1f; 以下以 MySQL 中一条 S…

如何在百度搜索上删除与自己名字相关的资料

个人信息的网络足迹如同一张无形的网&#xff0c;将我们与世界的每一个角落紧密相连。然而&#xff0c;当某些与自己名字相关的资料不再希望被公众轻易检索到时&#xff0c;如何在百度搜索中有效“隐身”&#xff0c;成为了一个亟待解决的问题。面对复杂多变的网络环境&#xf…

使用外部事件检测接入 CDH 大数据管理平台告警

CDH 大数据管理平台 CDH&#xff08;Cloudera Distribution Hadoop&#xff09;是一个企业级的大数据平台&#xff0c;由 Cloudera 公司提供&#xff0c;它包含了 Apache Hadoop 生态系统中的多种开源组件&#xff0c;并对其进行了优化和集成&#xff0c;以支持大规模数据存储…

MongoDB(五) - Studio 3T 下载与安装教程

文章目录 前言一、Studio 3T 简介二、下载及安装1. 下载2. 安装 三、使用Studio 3T连接MongoDB 前言 本文旨在全面且深入地为你介绍 Studio 3T。从其丰富的功能特性、跨平台使用的便捷性&#xff0c;到详细的下载安装步骤&#xff0c;以及关键的连接 MongoDB 操作&#xff0c;…

汽车制造MES

一、整体生产工序 整车的车间主要分为4个部分&#xff1a;冲压、焊装、涂装、总装、整车入库 系统架构 二、车间概括 1.冲压车间 2.焊装车间 3.涂装车间 4.总装车间 1.整车装配的部件都要可追溯、数据实时性要求高、涉及分装与总装的协调、物流配送的协调、质量批处理的协调、…

信奥赛CSP-J复赛集训(模拟算法专题)(26):P5412 [YNOI2019] 排队

信奥赛CSP-J复赛集训(模拟算法专题)(26):P5412 [YNOI2019] 排队 题目描述 小明所在的班级要举办一场课外活动,在活动开始之前老师告诉小明:“需要把男女生分成两队,并且每一队都要按照身高从矮到高进行排序”。但是由于小明的马虎,没有把老师的安排转达给同学,导致全…

基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手

基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手 一、准备工作&#xff1a;组装你的"数码工具箱" 1. 安装基础工具&#xff08;Python环境&#xff09; 操作步骤&#xff1a; 访问Python官网下载安装包安装时务必勾选Add Python to…

在 Offset Explorer 中配置多节点 Kafka 集群的详细指南

一、是否需要配置 Zookeeper&#xff1f; Kafka 集群的 Zookeeper 依赖性与版本及运行模式相关&#xff1a; Kafka 版本是否需要 Zookeeper说明0.11.x 及更早版本✅ 必须配置Kafka 完全依赖 Zookeeper 管理元数据2.8 及以下版本✅ 必须配置Kafka 依赖外置或内置的 Zookeeper …

STM32基础教程——定时器

前言 TIM定时器&#xff08;Timer&#xff09;:STM32的TIM定时器是一种功能强大的外设模块&#xff0c;通过时基单元&#xff08;包含预分频器、计数器和自动重载寄存器&#xff09;实现精准定时和计数功能。其核心原理是&#xff1a;内部时钟&#xff08;CK_INT&#xff09;或…

深入分析和讲解虚拟化技术原理

随着云计算和大数据技术的飞速发展&#xff0c;虚拟化技术应运而生&#xff0c;成为数据中心和IT基础设施的重要组成部分。本文将深入分析虚拟化的基本原理、主要类型以及在实际应用中的意义。 一、虚拟化技术的定义 虚拟化技术是通过软件将物理硬件资源抽象成虚拟资源的技术&…

小白闯AI:Llama模型Lora中文微调实战

文章目录 0、缘起一、如何对大模型进行微调二、模型微调实战0、准备环境1、准备数据2、模型微调第一步、获取基础的预训练模型第二步:预处理数据集第三步:进行模型微调第四步:将微调后的模型保存到本地4、模型验证5、Ollama集成部署6、结果测试三、使用总结AI是什么?他应该…

同旺科技USB to SPI 适配器 ---- 指令之间延时功能

所需设备&#xff1a; 内附链接 1、同旺科技USB to SPI 适配器 1、指令之间需要延时发送怎么办&#xff1f;循环过程需要延时怎么办&#xff1f;如何定时发送&#xff1f;现在这些都可以轻松解决&#xff1b; 2、只要在 “发送数据” 栏的Delay单元格里面输入相应的延迟时间就…

2024年MathorCup数学建模D题量子计算在矿山设备配置及运营中的建模应用解题文档与程序

2024年第十四届MathorCup高校数学建模挑战赛 D题 量子计算在矿山设备配置及运营中的建模应用 原题再现&#xff1a; 随着智能技术的发展&#xff0c;智慧矿山的概念越来越受到重视。越来越多的设备供应商正在向智慧矿山整体解决方案供应商转型&#xff0c;是否具备提供整体解…

回归——数学公式推导全过程

文章目录 一、案例引入 二、如何求出正确参数 1. 最速下降法 1&#xff09;多项式回归 2&#xff09;多重回归 2. 随机梯度下降法 一、案例引入 以Web广告和点击量的关系为例来学习回归&#xff0c;假设投入的广告费和点击量呈现下图对应关系。 思考&#xff1a;如果花了…

Redisson分布式锁(超时释放及锁续期)

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

音视频学习(三十):fmp4

FMP4&#xff08;Fragmented MP4&#xff09;是 MP4&#xff08;MPEG-4 Part 14&#xff09;的扩展版本&#xff0c;它支持流式传输&#xff0c;并被广泛应用于DASH&#xff08;Dynamic Adaptive Streaming over HTTP&#xff09;和HLS&#xff08;HTTP Live Streaming&#xf…

Java安全-类的动态加载

类的加载过程 先在方法区找class信息&#xff0c;有的话直接调用&#xff0c;没有的话则使用类加载器加载到方法区(静态成员放在静态区&#xff0c;非静态成功放在非静态区)&#xff0c;静态代码块在类加载时自动执行代码&#xff0c;非静态的不执行;先父类后子类&#xff0c;…