当前位置: 首页 > news >正文

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()

相关文章:

  • Java29:Spring MVC
  • 积木报表查询出现jdbc.SQLServerException: 对象名 ‘user_tab_comment 的解决方法
  • Federated Weakly Supervised Video Anomaly Detection with Multimodal Prompt
  • SpringBoot集成Kafka详解
  • 【锂电池SOH估计】SVM支持向量机锂电池健康状态估计,锂电池SOH估计(Matlab完整源码和数据)
  • 零点、驻点、拐点、极值点、最值点的定义、几何意义、求解方法
  • 2025年4月19日-得物算法岗春招笔试题-第二题
  • 项目预期管理:超越甘特图,实现客户价值交付
  • The_Planets_Earth靶场笔记(VulnHub)
  • 996引擎-拓展变量:物品变量
  • python:循环语句 while循环,for遍历循环,break,continue,else,嵌套循环(打印矩形、三角形,九九乘法表)
  • AI与思维模型【68】——排列组合
  • ASP.NET 0~1学习
  • 物联网技术赋能:复杂环境下的能源数据零丢失
  • 文件管理详解(曼波脑图版)
  • 爆肝整理!Stable Diffusion的完全使用手册(二)
  • 相控阵列天线:原理、优势和类型
  • strings.ToLower 使用详解
  • 健身房管理系统设计与实现(springboot+ssm+vue+mysql)含万字详细文档
  • 【AI论文】CLIMB:基于聚类的迭代数据混合自举语言模型预训练
  • 日方炒作中国社会治安形势不佳,外交部:政治操弄意图明显
  • 神舟二十号任务完成最后一次全区合练,发射场做好发射前各项准备
  • 锚定“水库不垮坝”目标,水利部部署今年水库安全度汛工作
  • 马文化体验展商圈启动,环球马术冠军赛的能量不止在赛场
  • 同济研究生开发AI二维码拿下大奖,新一代00开发者掀起AI创业潮
  • 被指违反代理协议遭南航暂停售票资格,去哪儿网:今起恢复