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

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.xdnf.cn/news/714.html

相关文章:

  • Mysql相关知识2:Mysql隔离级别、MVCC、锁
  • 深度可分离卷积与普通卷积的区别及原理
  • 【C++】继承----上篇
  • mysql
  • QSS【QT】
  • 常见超低噪声 LDO,ADM7150、LP5907、SGN2036、TPL910
  • 力扣刷题 - 203.移除链表元素
  • 4.20刷题记录(单调栈)
  • 基于springboot的商城
  • 积木报表查询出现jdbc.SQLServerException: 对象名 ‘user_tab_comment 的解决方法
  • 力扣算法ing(61 / 100)
  • 5.1 掌握函数定义与参数传递的奥秘
  • 【Qt】信号和槽
  • [安全实战]逆向工程核心名词详解
  • DAY6:从执行计划到索引优化的完整指南
  • React基础知识(补充中)
  • PyTorch基础学习系列一
  • 安卓手机怎样配置数据加速
  • Java File 类详解
  • 从事计算机视觉需要掌握哪些知识
  • 微信小程序通过mqtt控制esp32
  • Map遍历
  • Linux 进程概念补充 (自用)
  • 【数据结构】红黑树
  • 2181、合并零之间的节点
  • 右起第2个LED灯的闪烁(STC89C52单片机)
  • HTTP 1.0 和 2.0 的区别
  • (done) 吴恩达版提示词工程 1. 引言 (Base LLM 和 Instruction Tuned LLM)
  • ESP32开发之任务创建
  • 用P0口实现流水灯效果(STC89C52单片机)