Java Web项目(一)

框架

java web项目总工分为两部分:客户端(前端)和服务端(后端)

客户端发起请求,服务端接受请求并进行处理

发起请求的方式:from表单、jQuery + ajax

from表单 造成全局的变化,在发起请求时所有的数据都会被修改

jQuery + ajax 可以做到局部更新

tomcat是一个服务器,时刻等待请求到来

关系如图所示

项目的工作流程类似于去饭店吃饭,

url 是请求路径,相当于找指定的饭店,找到指定的服务员

type 是请求参数(有get  post 等),相当于指定服务方式

data 是携带的参数,相当于特定要求

success 是成功的回调函数,相当于上菜

服务端

接收参数,相当于接受菜单

逻辑处理,提供对应的服务,相当于后厨的加工

(如果需要)操作数据库,数据库就相当于仓库

返回数据,即上菜

注:所有的信息不是存在后端,而是存在数据库

get和post的区别

1.传参方式不同

   post 传参用data域

   get  则在url中传参 

   格式    url:" 对应Servlet类文件名?要传的参数=参数值 "

   当参数不止一个时,用&  等连接符

2.发起范围不同

   get :只要能写地址的地方都可以发起get请求(包括url 、浏览器的地址栏、前端中的<a href="  "></a>标签.....)

   post: 请求发起需要ajax+jquery   或者form表单(现不用)

3.常用作用范围

get常用于查找

post 常用于查找以外的功能,如添加、修改、删除等

servlet

servlet 相当于小服务员,同时处理服务端的多种操作,对少量数据进行处理,数据量太大时效果不好

有软件可将servlet的角色拆分开,分成controller 、 service 、 dao

controller专门接受客户端的信息,和客户端进行交互

service 进行各种各样的逻辑处理

dao 专门操作数据库,做处理后将内容返回service

service再将信息返回controller

controller再返回到客户端

Navicat 

Mysql      数据库

Navicat   数据库的可视化工具

表中一般有一个"id" 作为主键,一般默认勾选使用"不是null键",即自动递增

数据库中的表的关系

一对一

该情况下经常把两个表合并成一张表,即将

妻子表
idnameage
1qqq26
2www36
3eee27
丈夫表
idnameage
1aaa34
2sss27
3ddd28

变为

idWnameWageMnameMage
1qqq26sss27
2eee27aaa34
3www36ddd28

但方法不唯一,包括存外键、新建表格等

外键就是当前表格中的一个字段,但其取值有严格要求,必须来自于对应的另一张表中的主键

一对多

合成一张表时数据冗余

常用方法:把多的表设置外键,(少的表设置外键也会数据冗余)

有时也额外创造一张表存储关系,但是效率不如上述方法高

如:学生表和班级表

班级表
idc_name总分
1一班30
2二班36
3三班27
学生表
idnameagec_id
1aaa131
2sss143
3ddd152
4zzz123
5xxx141
6ccc152

多对多

无论是两张表合并,还是在一张表上单独加外键,都会造成数据只能使用新建表存外键的方式

例如:学生表和课程表

课程表
idc_name总分
1java30
2数据结构36
3python27
学生表
idnameage
1aaa13
2sss14
3ddd15
4zzz12
5xxx14
6ccc15

选课表

s_idc_id
13
12
33
41
......

操作数据库

操作数据库需要对应的驱动,

比如: Mysql驱动Mysql数据库

            SqlServerl驱动SqlServerl数据库

因此为了简化操作,对驱动进行了规范:JDBC

操作数据库步骤:

1.加载驱动

Class.forName("com,mysql.jdbc.Driver")   ----5.版本

Class.forName("com,mysql.cj.jdbc.Driver")   ----8.版本

可能会报错,因为没有驱动

解决方法:

<1>异常抛出

   但是在调方法时可能再次产生异常,所以可以调方法时继续抛出异常,也可以使用方法二

<2>try....catch....捕获异常

   使用该方法时,正常情况下执行try中的内容,一旦有异常时,异常会被捕获并执行catch中的内容

catch(捕获指定异常内容)

eg:catch(ClassNotFoundException e)  指定捕获没有找到class的异常

        catch(SQLException e)  指定捕获sql的异常

        catch(Exception e)  捕获所有的异常

2.添加用户信息和url

            String url="jdbc:mysql://localhost:端口号/需要连接的数据库";
            String username ="root";    --->   账号一般情况下默认为root
            String password ="10027018";   ----> 密码自设

3.驱动管理类调用方法进行连接,得到连接对象(一般继续抛出异常)

驱动管理类     ----->   DriverManager

调方法            ----->   DriverManager.getConnection(url,username,password);

连接类            ----->   Connection

4.创建执行sql的对象

   其对应的类为Statement

   用createStatement()方法

5.执行sql语句

    executeQuery(sql)         ---->执行查找的方法

    executeUpdate(sql)       ---->执行修改的方法,会返回受影响的行数

    

    ResultSet    ---->结果集   用于处理结果

6.对结果进行处理

    获取指定某项下的数据,需要调方法getInt("数据名")   Int根据数据类型变化

7.关闭/释放资源

   资源名.close()

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

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

相关文章

Dify部署内网时遇到的代理问题及解决办法

大家知道&#xff0c;在公网环境下利用docker安装dify源码镜像比较容易&#xff0c;详见我之前的文章&#xff0c;基于dify开发agent、workflow等非常方便&#xff0c;本次想着在内部网络环境下也完成部署&#xff0c;以方便更多的人使用&#xff0c;但在部署到内网环境下&…

多节点监控的docker管理面板Portainer安装指南:家庭云计算专家

背景 Portainer 是一个轻量级且功能强大的容器管理面板&#xff0c;专为 Docker 和 Kubernetes 环境设计。它通过直观的 Web 界面简化了容器的部署、管理和监控&#xff0c;即使是非技术用户也能轻松上手。Portainer 支持多节点管理&#xff0c;允许用户从一个中央控制台管理多…

Linux内核哈希表学习笔记

前沿 近期项目中需要给自定义的驱动增加一个功能存储相关的数据信息。结合实际业务层面,最终决定采用哈希表的结构来存储。因为其具备快速查找,插入和删除。其实现原理通过散列函数映射到指定位置。时间复杂度O(1).而且运算速度也快,很适合处理大量的数据场景。但是其也有一…

对于在线教育或知识付费类网站视频处理方案

一、视频格式&#xff1a; 1. 推荐格式&#xff1a;HLS&#xff08;HTTP Live Streaming&#xff09; 优势‌&#xff1a; ‌自适应码率‌&#xff1a;根据用户网络状况自动切换清晰度&#xff0c;避免卡顿。‌广泛兼容性‌&#xff1a;iOS/macOS 原生支持&#xff0c;Android…

Deepseek输出的内容如何直接转化为word文件?

我们有时候会直接利用deepseek翻译别人的文章或者想将deepseek输出的内容直接复制到word文档里。但是文本格式和word是不对应的。这时候需要输入如下命令&#xff1a; 以上翻译内容的格式和排版要求如下&#xff1a; 1、一级标题 字体为黑体&#xff08;三号&#xff09;&…

【Vue】组件通信(Props/Emit、EventBus、Provide/Inject)

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Vue 文章目录 1. Props/Emit 父子组件通信1.1 Props 向下传递数据1.2 Emit 向上传递事件 2. EventBus 跨组件通信2.1 创建事件总线2.2 使用事件总线2.3 EventBus 优缺点 3. Provide/Inject 深层组件通信3.1 基本使用3.2 响应式处…

vulnhub sunset系列靶机合集(部分)

描述&#xff1a;该合集包含sunset系列适合新手的四个靶机&#xff08;sunset:1、dusk、sunrise、noontide&#xff09;的渗透全过程。 靶机下载地址&#xff1a;Vulnerable By Design - Search: sunset ~ VulnHubhttps://www.vulnhub.com/?qsunset sunset:1 渗透过程 信息…

【MySQL】MySQL的基础语法及其语句的介绍

1、基础语法 mysql -h【主机名】 -u【用户名】 -p //登录MySQL exit或quit; //退出MySQL show database; //查看MySQL下的所有数据库 use 【数据库名】; //进入数据库 show tables; //查看数据库下的所有表名 *MySQL的启动和关闭 &am…

2025-4-20-C++ 学习 数组(1)

数组 2025-4-20-C++ 学习 数组(1)P1428 小鱼比可爱题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1说明/提示题解代码P1427 小鱼的数字游戏题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1说明/提示数据规模与约定题解代码P5727 【深基5.例3】冰雹猜想题目描…

ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(显示输出类外设之LCD)

目录 ESP-ADF外设子系统深度解析&#xff1a;esp_peripherals组件架构与核心设计&#xff08;显示输出类外设之LCD&#xff09;简介模块概述功能定义架构位置核心特性 LCD外设分析LCD外设概述LCD外设层次架构图 LCD外设API和数据结构外设层API公共API内部数据结构 LCD外设配置选…

面试题:循环引用两个节点相互引用,如何判断哪个用 shared_ptr?哪个用 weak_ptr?

目录 1.引言 2.原理 3.所有权模型与指针选择 4.复杂场景的决策策略 5.注意事项 6.总结 1.引言 当两个对象通过 shared_ptr 相互引用时&#xff0c;会产生循环引用问题&#xff0c;导致内存泄漏。因为这两个对象的引用计数永远不会变为 0&#xff0c;即使它们在程序的其他…

QT聊天项目DAY06

1.从git上同步项目 编译测试&#xff0c;编译通过 Post请求测试 测试成功 2. email is 打印有问题&#xff0c;检查 解析结果是存储在jsonResult中的&#xff0c;修改 3. 客户端实现Post验证码请求 3.1 同步Qt客户端项目 检查QT版本&#xff0c;由于我在公司用的还是QT5.12.9…

PHP腾讯云人脸核身获取FaceId

参考腾讯云官方文档&#xff1a; 人脸核身 合作方后台上传身份信息_腾讯云 前提&#xff1a;已经获取了SIGN Ticket。获取参考文档&#xff1a; PHP腾讯云人脸核身获取SIGN Ticket-CSDN博客 public function getTxFaceId($uid,$name,$idNo){$appId ;$userId $uid;$nonce …

用 Deepseek 写的uniapp油耗计算器

下面是一个基于 Uniapp 的油耗计算器实现&#xff0c;包含 Vue 组件和页面代码。 1. 创建页面文件 在 pages 目录下创建 fuel-calculator 页面&#xff1a; <!-- pages/fuel-calculator/fuel-calculator.vue --> <template><view class"container"…

Redis ④-通用命令

Redis 是一个 客户端-服务器 结构的程序&#xff0c;这与 MySQL 是类似的&#xff0c;这点需要牢记&#xff01;&#xff01;&#xff01; Redis 固然好&#xff0c;但也不是任何场景都适合使用 Redis&#xff0c;一定要根据当前的业务需求来选择是否使用 Redis Redis 通用命令…

HarmonyOs学习 环境配置后 实验1:创建项目Hello World

HarmonyOS开发入门&#xff1a;环境配置与Hello World实验 实验目标 掌握HarmonyOS开发环境配置&#xff0c;创建首个HarmonyOS应用并实现"Hello World"界面展示 实验准备 已安装DevEco Studio开发环境已配置HarmonyOS开发依赖项熟悉基本TypeScript/ArkTS语法&am…

HTTP:十.cookie机制

Cookie概念及类型 HTTP cookie,简称cookie,又称数码存根、“网站/浏览+魔饼/魔片”等,是浏览网站时由网络服务器创建并由网页浏览器存放在用户计算机或其他设备的小文本文件。Cookie使Web服务器能在用户的设备存储状态信息(如添加到在线商店购物车中的商品)或跟踪用户…

记录小程序第一次调用Api,基于腾讯云Serverless函数,实现小程序的成功接入api,以及数据调用

目录 创建腾讯云个人账户新建severless应用建立函数URL小程序中调用api示例 创建腾讯云个人账户 百度搜索即可&#xff0c;并注册 新建severless应用 作者以github下载的某Api为例&#xff0c;这里不展示具体Api&#xff0c;只关注操作即可&#xff0c;相信都是互通的 在腾…

ES6 第一讲 变量定义 堆与栈 字符串的扩展和数值型的扩展

文章目录 1.ES6变量定义2.ES6堆和栈3.字符串的扩展3.1 模板字符串3.2 判断是否以指定的字符串开头或结尾3.3 字符串重复输出3.4 填充方法3.5 去除前后字符串空格3.6 返回参数指定位置的字符 4. 数值型的扩展4.1 二进制0B 八进制0O4.2 判断是否是一个无穷大的数字 &#xff08;判…

LeetCode第158题_用Read4读取N个字符 II

LeetCode 第158题&#xff1a;用Read4读取N个字符 II 题目描述 给你一个文件&#xff0c;并且该文件只能通过给定的 read4 方法来读取&#xff0c;请实现一个方法来读取 n 个字符。 read4 方法&#xff1a; API read4 可以从文件中读取 4 个连续的字符&#xff0c;并且将它…