21、前后端交互方式(前后端数据是怎么交互的?)交互的格式
1.使用 Ajax,通过 Ajax 请求后台的地址 url 以及参数值的传递
在 Ajax 中指定后台接口的地址、请求方式(post)、参数,同时响应请求的结果。
前后端的数据交互基本通过程序接口实现的,数据交互的过程可以简单理解为,前台想要
获得某些数据,将传入参数通过 url 接口地址,传递给服务器,服务器根据传入的参数了
解到前台要获得什么数据,去数据库查询获取数据,然后将所需数据返回给前台,前台拿
到数据做相应的页面展示。
Json 是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。
2. 利用 Ajax 进行异步数据请求(得到的数据可以以 json 格式返回,便于处理)
用 json 格式进行数据传输,前台传递 json 格式的数据,给前台发送 json 格式的数据响应。
浏览器将拿到的数据渲染到页面
json 的特点是结构清晰、易拓 ,所以经常用来作为前后端交互的格式(也有的用 xml 格式)。
而前端有原生方法将 json 字符
把集合转为 json 字符串再传递。
便地转换为前端可用数据结构,所以你很有必要在后端
json 格式在前端中跟 js 的对象/数组数据结构长得一模一样,除了数据类型不同以外。所以
前端喜欢称 json 为 json 对象。
json 数据格式:(json 键/值对){“姓名”:”流年”“性别”:”男”“兴趣爱好”:”听音乐”}
22、数据交互方式
一般来说,当用户点击某个按钮,会向后台发送响应的请求
1.如果页面没有发生跳转,但是该功能实现了功能 eg:点击按钮删除学生 A 的个人信息,那
么这个就是通过浏览器发送 ajax 请求。数据交互格式就是 json。
2.如果页面发生跳转,点击按钮后,页面跳转,并且显示了一些数据,eg:所有学生的个人
信息。这个时候数据交互就是通过 request 实现。每一次请求就是一个 request。发送请求
的时候将相关的信息将会被 request 接收发送后台,后台处理完毕后,将处理的相关信息
再封装到 request 中传给前端,浏览器渲染页面,最终数据成功显示。
23、.session
用户打开浏览器访问了网站就会在服务器中产生属于自己的 session.
当用户关闭浏览器的时候,这个 session 就会被清除。下次访问再次生成新的 session。
24、前台和后台是怎么连接的?
利用 Ajax 进行异步数据请求(得到的数据以 json 格式返回,便于处理)
利用 json 格式进行数据传输,前台传递 json 格式的数据,
25、分页功能
Mybatis 框架里面的分页插件
前端要传两个参数,第一个:当前是哪一页,第二个:每一页有多少条数
默认 10 条或者 20 条
根据这两个参数就能查出我每一次想要查的当前页的那几条
后端接口调用 service 层的 querypage 方法。传递参数给后端的 pagenum,pagesize
MySQL limit 限制只显示几个数据,比如前台热销商品
26、分页如何实现?
首先从数据库中查询相应数据的总数量,在代码中设定每页显示的数据数量 pagesize,就
能计算出总共的页码,通过在点击下一页、上一页、首页、尾页时携带页码变量,重新向
后台查取数据
分页的两个关键字:每页显示数量、当前第几页
27、图片上传功能
1. 图片上传是传到了服务器中,在访问的时候访问 tomcat 中的图片,数据库中存储的这
个图片的字段实际上是图片的地址
2. 实际上上传到了系统中的某一个盘的 upload 文件夹,在数据库中存储的是这个图片的
地址前缀加上图片的名称,图片上传后的名称是根据时间戳形成的。在 tomcat 中修改
实际访问图片前缀的虚拟 址,地址就只想图片所在的文件夹,前台可以正常访问到。
28、头像图片上传到哪
)
可以上传到服务器里的缓存,也可以上传到指定的文件夹
一般来说 数据库中存放的都是具体的图片地址
29、购物车功能是怎么实现的?
购物车是有了用户和图书之后并且在用户的登录,用户点击添加购物车就可以了,在
购物车中查看已经加入的图书信息。
用户加入购物车其实就是一个新增操作,将用户 id 和商品 id 以及其他信息新增到购物
车表里面,将用户和商品关联上,所以加入购物车的同时,会将用户 id 和图书 id 关联起来,
体现在购物车表记录中。
30、轮播图如何实现的?代码部分在哪里?是自动轮播还是手动轮
播?
通过 js 脚本和 css 样式控制实现图片的循环播放
自动的轮播图,是简单的一个前端 UI 样式的一个标签,实现图片轮播旋转,写明调用
哪些图片和轮播顺序
31、第三方支付功能实现了吗?怎么实现的?
无法完成真实测试
也只是在沙箱环境进行测试
★★★支付功能如何实现
首先,点付款,弹出支付宝页面,页面的吊起过程,首先,支付宝商家端,
注册账号,获取秘钥等相关信息,然后通过接口用秘钥进行加密算法之后获取
一个字符串,然后,用这个字符串去支付宝官方调取支付页面,支付宝官方对
字符串验证成功之后,就会把支付页面调取出来,输入密码进行付款,付款之
后。支付成功之后,阿里官方通过回调接口给商家。通知商家用户付款成功。
32、实现商品支付生成订单这一操作的实现代码调用了哪些接口,
前端怎么传参?
提交默认系统有钱,实现把数据存到数据库,没有调用支付接口
33、前台搜索功能怎么实现?
模糊查询
输入搜索的东西,如果为空
如果有 前端是提交表单,方式是 post
后端接受 调用 search 方法 where 字段 like % key%
用户在搜索框内输入关键字之后,执行 jsp 中的 js 中的 search 方法,前端提交表单,
后端 controller 中的 search 方法接收,然后调用 service 层接口,执行 serviceimpl 实现类,
在调用 dao 层,调用 mapper 层对 MySQL 表进行查询,是否存在包含此关键词的书籍,如
果有的话返回数据库内容显示在前台页面【同时将查询到的数据库结果一层一层返回,响
应到前台页面 】将数据传递到前台页面内
34、模糊查询如何实现的?
用户在搜索框内输入想要查询的关键字,点击查询按钮发送 Ajax 请求,后台执行 like 模糊
查询语句完成查询。
Select *
from product
Where name like %前台传过来的值%;
35、提交表单的时候如果信息不写全,会有弹框提示是怎么实现
的?
去 js 中判断,如果输入框信息不对不全,jquery 中提供的方法,alert 弹出提示信息
36、购买商品时自动生成的唯一订单号是如何实现的?看一下代码,
给我讲一下?
order.setSn("O"+System.curren
Millis());
O+当前时间
37、网站怎么实现安全性?(一般是拦截器登录)
为了确保安全性,某些接口数据是不能访问的,比如后台管理中的用户管理
用户请求访问数据时,拦截器就会判断用户有没有进行登录,有没有访问权限
【前台登录拦截器+后台登录拦截器】
没有登录,跳转页面,提示用户登录
拦截器的位置
5.网站如何实现安全性
在未登录系统的情况下,是不能进行一些关键操作的。使用拦截器,对系统中不需要登录就
能访问的请求直接放行。
如果需要登录才能访问:判断当前用户是否已经登录也就是看 session 中是否有该用户的登
录信息.返回到登录界面,提升登录访问。
38、如何确保数据一致性
用户删除信息后,刷新当前页面,刷新的过程就是从后台重新获取数据的过程
39、用户注册功能怎么实现的?
首先将前端输入的信息在 js 中进行校验,如果不符合,弹出提示信息,如果符合则调
用 js 中的 submit-register 方法,通过 ajax 方法进行后台服务器请求,请求的 url 路径是
register,请求信息传输方式都是 post,在数据中我们将前端获取的信息进行封装,在后台
服务器中接受前端传过来的 json 数据并进行解析,在数据库中查询用户名是否已经存在,
如果存在向前端反馈用户已存在,注册失败,如果不存在则将用户注册信息存储到数据库
中。
1.用户在注册页面根据表单提示,输入相关的信息
2.点击保存按钮,通过 post 请求将数据提交后台
3.后台校验数据合法性,执行“新增”操作,也就是执行 insert 插入语句
4.提示用户注册成功
40、修改密码功能如何让实现?
用户访问修改密码界面,在页面输入相关信息,点击修改按钮,触发绑定的 js 事件,将数
据提交给后台,后台根据用户编号查询到唯一用户,执行 mapper 中的 updateSQL 语句将
新密码保存到数据库中
41、登录功能怎么实现的?
1.前台输入用户名密码,
密码、验证码通过 ajax 方法
户是否已经注册
录按钮,在前端 js 中的 submit 方法中,获取到用户名、
ontroller 里面的 lojin 方法,到后【数据库】判断用
2. 用户在登录页面填写相关的信息,当用户点击登录的时候会触发登录按钮绑定的登
录事件。向后台发送 ajax 请求,参数传递到后台。服务器比对用户输入的用户名密码
于数据库中的用户名密码是否一致。将处理结果告诉前端
·成功,跳转至主页
·失败,弹窗提示错误信息
3.首先将前端输入的信息进行校验,如果不符合弹出提示信息,如果符合则
调用 submit-register 方法,通过 ajax 方法进行后台服务器请求,请求的 url
路径是 register,请求信息传输方式都是 post,在数据中我们将前端获取的
信息进行封装,在后台服务器中接受前端传过来的 json 数据并进行解析,
在数据库中查询用户名是否已经存在,如果存在向前端反馈用户已存在,注
册失败,如果不存在则将用户注册信息存储到数据库中。
4. 首选顾客输入相关信息,点击登录按钮,触发绑定的 js 事件,对输入的数据进行
校验。通过 axios 发送 http 的请求,此请求在后端被 controller 拦截,controller 对请求
进行解析,,调用 mapper 对数据库表进行查询,把刚刚用户提交的用户名和密码和用
户表内的数据进行比对,如果能够查出来就将结果返回给 controller,controller 把结果
返回给前端界面进行响应,跳转到商城首页,登陆成功。商城首页在 view 层渲染出来。
42、三种请求
简单的请求
前端向后端请求,要求后端返回数据
前端向后端请求,要求返回跳转页面的路径
43、对于某功能的实现流程回答:
①前台页面请求 controller 控制器跳转到 service 业务逻辑接口类,在通过 impl 实现类
调用 dao 层数据库执行类,数据库调用 mapper 层对 MySQL 表格的修改,同时将查询
到的数据库结果一层一层返回,响应到前台页面
②点击按钮执行 js 语句,然后会向服务器发送请求, controller 再拦截此请求,根据请
求命令,执行相应的方法,该方法会去调用 dao 层的 SQL 语句,返回查询结果封装起
来,然后返回给页面展示。
44、前台点击某个东西能实现跳转吗?具体怎么实现的?
点击触发 jsp 里面的链接,然后就跳转到这个链接
45、程序和数据库怎么连接?
链接数据库之前需要加载驱动(drivermanager)实现 JDBC 连接数据库
通过 3306 端口访问数据库
同时通过在配置文件设置数据
账户和密码完成数据库的连接
46、你的数据库怎样实现连接的?
1、进行数据库的配置
2、创建实体类以及 dao 接口,
3、创建 mybatis 配置文件
Sql 映射文件、写 sql 语句
4、创建主配置文件
5、将创建的 sqlsession 进行封装
JDBC API 是 Java 数据库编程接口,是一组标准的 Java 语言中的接口和类,使用这些接口
和类,Java 客户端程序可以访问各种不同类型的数据库。
MyBatis 的主要设计目的就是让我们对执行 SQL 语句时对输入输出的数据管理更加方
便,所以方便地写出 SQL 和方便地获取 SQL 的执行结果
发起数据库交互—>创建 sqlsession—>通过内部组件将请求的 sql 转化为真实执行
的 sql—>返回数据库执行结果—>对结果集进行包装—>响应业务处理的代码。
在 db.properties 中进行配置,新建数据库 db_online_shop
创建连接 MySQL 的 url
创建连接加载驱动
创建数据库连接
创建 statement
1.用户名、密码、MySQL 连接 url=jdbc:mysql://localhost:3306/db_online_shop?,连接数
据库所需的驱动
2.加载 jdbc 驱动
在连接数据库之前要加载想要连接的数据库的驱动到 JVM(Java 虚拟机)
通过 java.lang.Class 类的静态方法 forName(String className)hsixian
3.创建数据库的连接
使用 DriverManger 的 getConnection(String url,String username,String password)方
法
4.执行 SQL 语句
Statement 接口执行 SQL 的方法:
47、使用接口编程,mybatis 和数据库交互的过程
1.创建数据库数据表和 Java 实体类,注意表的字段名与实体类的属性是否一致,
不一致的话 sql 语句中要使用别名
2.创建全局配置文件(mybatis-config.xml):配置数据源信息,注册 sql 映射文件
3.创建接口:src/com/mybatis/dao/EmployeeMapper.java
4.创建 sql 注册文件:namespace 值为接口的全类名,id 为接口内定义的方法名,
resultType 为返回数据的类型
5.创建测试类:
( 1 ) 根 据 全 局
文 件 得 到 SqlSessionFactory 对 象 , 调 用 该 对 象 的
openSession()方法获得 SqlSes
对象
(2)调用 SqlSession 对象的 getMapper(Class type)方法,返回一个代理对象
(接口的实现类:由 mybatis 自动创建),通过该代理对象去执行增删改查
(3)调用该代理对象的方法(接口中定义的方法),返回 resultType 类型的对
象
(1) 读取 MyBatis 配置文件 mybatis-config.xml。
mybatis-config.xml 作为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,
其中主要内容是获取数据库连接。
(2) 加载映射文件 Mapper.xml。
Mapper.xml 文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在
mybatis-config.xml 中加载才能执行。mybatis-config.xml 可以加载多个配置文件,每个
配置文件对应数据库中的一张表。
(3) 构建会话工厂。
通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。
(4) 创建 SqlSession 对象。
由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 的所有方法。
(5)MyBatis 底层定义了一个 Executor 接口来操作数据库,它会根据 SqlSession 传递的参数动
态的生成需要执行的 SQL 语句,同时负责查询缓存的维护。
(6)在 Executor 接口的执行方法中,包含一个 MappedStatement 类型的参数,该参数是对映
射信息的封装,用来存储要映射的 SQL 语句的 id、参数等。Mapper.xml 文件中一个 SQL 对
应一个 MappedStatement 对象,SQL 的 id 即是 MappedStatement 的 id。
(7)输入参数映射。
在执行方法时,MappedStatement 对象会对用户执行 SQL 语句的输入参数进行定义(可以
定义为 Map、List 类型、基本类型和 POJO 类型),Executor 执行器会通过 MappedStatement
对象在执行 SQL 前,将输入的 va 对象映射到 SQL 语句中。这里对输入参数的映射过程就
类似于 JDBC 编程中对 prepare
(8)输出结果映射。
ment 对象设置参数的过程。
在数据库中执行完 SQL 语句后,MappedStatement 对象会对 SQL 执行输出的结果进行定
义(可以定义为 Map 和 List 类型、基本类型、POJO 类型),Executor 执行器会通过
MappedStatement 对象在执行 SQL 语句后,将输出结果映射至 Java 对象中。这种将输出结
果映射到 Java 对象的过程就类似于 JDBC 编程中对结果的解析处理过程。
48、演示购买流程
49、用例图的含义
用例图是用例和系统交互最简表达形式,展现了用户和其他相关用例之间的关系,描述参
与者与功能的边界。使用用例和参与者描述系统的边界和它的主要功能
用例的关系有扩展、泛化、包含
50、用例规格说明书的含义
阐述具体用例之间的数据信息,采用用例规格说明书来记录这些信息,
事件流:要记录的重要的事情是用户输入到系统的信息。
51、时序图的含义
它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例
的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转
换的触发事件。
52、怎样判断用户是否登录
各个系统实现不一样,一般分为两种
·用户的登录后,会在 session 中记录下当前用户的登录信息。用户访问其他请求,拦截
器判断 session 是否有登录信息,没有就提示登录。有就放行
。用户登录后后台会给当前用户发放令牌 token。后面每次访问都带着令牌,服务器判断令
牌合法性来确认用户是否已经登录
53、怎么判断用户登录是否成功?失败的话有提示吗?怎么做到
的?
用户输入用户名和密码以及验证码后先到后台进行判断
首先判断验证码是否输入正确
判断用户是否存在,如果用户名未注册过则系统提示:该用户名不存在。
用户存在再判断密码是否正确
三项都正确就可以登陆成功,调用成功登录页面
如果要求的信息有一项 入错误,去 js 中判断,如果输入框信息不对不全,通过
jquery 中提供的方法,aler
弹出提示信息
★★★怎么判断用户登录是否
失败的话有提示吗?怎么做到的?
登录的话 可以从代码里找-校验 username 和 password 的语句,一般都是先从数据库里取
用户名和密码 再用 if 做一些判断 如果 false 会报个错 true 的话就会跳转到登录后的首页。
54、数据库怎么设计的,表与表之间怎么关联
需求分析
概念结构设计
逻辑结构设计
物理结构设计
数据库实施
55、最新上架、商品热卖怎么实现的?
直接写在了 jsp 里面,后台 controller 里面没写
最新上架:每个化妆品上架之后,存入数据库,将最新的存入数据库的往前面排
商品热卖:按照购买量来安排前后顺序,每个化妆品每购买一次就把数据库的销量+1,
排序的时候把销量最高的排在前面
商品热卖:查看已付款的订单数据库数据中,哪一本化妆品多就往前面排,按照销售
数量的累加和进行排序
56、图书三级分类怎么实现的?
首先选择第一级分类去数据库查询,然后再选择第二级分类在执行一轮查询,三级分类
就把第一第二第三级条件加起来去查询
因为分类之间具有父子关系,像一个树形结构,因此需要在分类这个 bean 类中添加一
个属性,用于指向子分类。
57、验证码怎么实现的?
1.验证码图片上的文字是随机生成的,系统中有一个接口,专门生成随机验证码,然后把
验证码放到图片里面,每生成一次验证码都会都会把验证码存到系统的 session 中,前台用
户填写完登陆信息后填写验证码,填写的验证码参数会传递到后台登录接口中,在登录接
口中判断填写的验证码和缓存中存储的是否一致,如果一致,则正确,如果不一致,弹窗
提示。
是一个方法
可以减少服务器的压力,过滤一些无用的请求
2.验证码如何实现的
通过 java 画图出一个图形验证码,将图形上的数字存放的 session 中。用户点击登录后。
后台拿到用户输入的数字于后台 session 中存档的数字进行比对,正确后,再进行比较用户
名,密码。
1)进入登录/注册页面时,获取验证码图片
2)对用户输入的验证码进行简单的规则校验(这个要具体分析,有可能你的系统没有做校
验)3)返回登录结果
58、怎么调用接口?
使用 Ajax 进行调用,一种前后台调用的类型
按照 Ajax 的要求进行书写就能够调用后台
59、表单是否有数据校验,必填项 requerid
·校验指的是:邮箱校验,手机号校验,身份证件号校验,用户名是否重复等
·通过正则表达式校验,在将数据传递后台之前,由前端完成基本校验
60、某些注解的作用?
61、代码部分是自己实现的吗?独立完成的吗
用户后台管理是在 github 和 csdn 网站中,借鉴了前辈们的代
码。自己完成了预定等入住等业务功能。
1.做了什么测试
功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑
盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的
内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错
误推测、因果图和综合策略。
等价类划分法:将测试过程中的输入、输出、操作等相似内容分组,从每组中挑选具有代表
性的内容作为测试用例,划分份有效等价类和无效等价类
更多资源获取:
宫众浩 文心海资源库~