总结
计算机开题答辩或者毕业答辩过程中,老师问的问题一般都和你的设计有关,特别是设计中的一些关键技术,比如:数据库链接方式,数据库设计中的 ER 图、范式等。一般不会太难,都是一些学过的知识。用到的所有概念都了解(例如用的 MVC 设计模式、SSM 框架、springboot框架)都要知道概念和优缺点。
毕业答辩问题与答案(回答一定要温柔,不要顶嘴)
始终切记:
遇到不会的问题:只打不辨,问就道歉
1、SSM 框架是指什么,其优缺点,怎样用到在你的程序里
Spring:全栈轻量级开源框架容器框架,可以接管 web 层业务层,dao 层,持久层的合格组件,并且可以配置各种 bean;
spring MVC:基于 Java 实现的 MVC 设计模式的请求驱动类型的轻量级 Web 框架;
mybatis:持久层的一个框架,方便对数据库操作,封装 JDBC,原始 jdbc 操作繁琐核心逻辑代码在 controlle层;Controller 层通过调用 serviceimpl里面接口调用 mybatis 层的 mapper 里的 SQL 语句,SQL 语句执行完毕后反馈数据到controller,controller 再返回给前端 view 层显示;
业务逻辑:controller->service 接口->serviceimpl->dao 接口->daoimpl->mapper->datebase
Controller 入口->service 业务逻辑处理(接口)->dao 访问数据库->引用 mapper 最终执行数据库->引用 entity 与数据库的映射对象。
Controller 是控制器,连接页面请求和服务器,获取页面请求的参数,通过自动装配映射不同的 url 到相应的处理函数。
访问数据库通过 dao 层。Dao 是数据库接口,只是一个接口,实际的实现都在 mapper里面。
2、Mybatis
mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。
mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行sql 并将结果映射为 java 对象并返回。
MyBatis 的主要设计目的就是让我们对执行 SQL 语句时对输入输出的数据管理更加方便,所以方便地写出 SQL 和方便地 取 SQL 的执行结果才是 MyBatis 的核心竞争力。
3、打开代码,介绍一下这个功能的 mapper 的作用是什么?
mapper 层的作用是对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的,现在用 mybatis 逆向工程生成的。
mapper 层,其实就是 dao 层,主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此。
其设计首先是设计 DAO 的接口,然后在 Spring 的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰。
4、JDBC
Java 数据库连接,是 Java 语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
5、jQuery
UI 前端框架实现网页的客户端响应效果
6、B/S 和 C/S 架构的区别?
BS:(Browser/Scrver,浏览器/服务器模式),web 应用可以实现跨平台,客户端零维护,但是个性化能力低,响丛速度较慢。
.CS:(Client/Server,客户端/服务器模式),桌面级应用响应速度快,安全性强,个性化能力强,响应数据较快;
一、网络不同
1、b/s 架构:b/s 架构主要用于外网,可通过广域网进行访问。
2、c/s 架构:c/s 架构主要用于内网,建立在专用的网络上,小范围里访问。
二、安全性不同
1、b/s 架构:b/s 架构的安全性较低,容易受到他人的网络入侵。
2、c/s 架构:c/s 架构的安全性较高,封闭式网络不容易容易受到他人的网络入侵。
C/S:全称是 Client/Server ,是客户端/服务器架构。主要应用于局域网内。是一种典型的两层架构。客户端:用户程序(表示层) 服务器端:一种是数据库服务器,一种是 Socket服务器。(数据库层)
B/S 架 构 : 全 称 : Browser/Server ( 浏 览 器 / 服 务 器 ), 主 要 应 用 于 广 域 网 中 。
Browser 客户端:只有简单的输入输出功能
数据库端:存放大量数据
7、springMVC 工作原理
SpringMVC 以 DispatcherServlet(前端控制器)为核心负责协调和组织不同组件以完成请求处理并返回响应的工作,实现了 MVC 模式。
1.Spring 和 SpringMvc 的关系:
SpringMVC 是一个 MVC 的开源框架,SpringMVC 是 Spring 的一个后续产品,其实就是Spring 在原有基础上,又提供了 web 应用的 MVC 模块,可以简单的把 SpringMVC 理解为是spring 的一个模块(类似 AOP,IOC 这样的模块),网络上经常会说 SpringMVC 和 Spring 无缝集成,其实 SpringMVC 就是 Spring 的一个子模块,所以根本不需要同 spring 进行整合。
SpringMvc 工作流程
第一步:用户发起请求到前端控制器(DispatcherServlet);
第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过 xml 配置或者注解进行查找;
第三步:找到以后处理器映射器(HandlerMappering )像前端控制器返回执行链(HandlerExecutionChain);
第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler);
第五步:处理器适配器去执行 Handler
第六步:Handler 执行完给处理器适配器返回 ModelAndView
第七步:处理器适配器向前端控制器返回 ModelAndView
第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析
第九步:视图解析器像前端控制器返回 View
第十步:前端控制器对视图进行渲染
第十一步:前端控制器向用户响应结果
8、SSM 业务逻辑
Controller 通过调用 serviceimpl 里的接口调用 model 层的 mapper 里的 sql 语句,sql 执行完毕后反馈数据给 controller 层,controller 再返回给前端 view 层显示。
Eg:商品编辑功能
a、 页面点击编辑按钮,form 表单中的 action=“communitylist”响应,communitylist和 controller 中的@requstMapping(/***)中的参数一样
b、 controller 层从前端页面
提交的参数,创建 map 对象,封装参数于 map 中调 用 service 中 的 商 品 编 辑 方 法 , 并 传 入 map 对 象 , 并 返 回 请 求 对 象 。
request.setAttribute( “ commodity ” , commodity); notice : @controller
@requestMaping 在 controller 中每创建一个对象都要引入注解@Autowired
c、 serviceimpl 层 重 写 service 层 的 方 法 , 在 重 写 类 上 面 引 入 注 解
@Service(“CommodityService”)
同时在实现层创建 Dao 层的对象也需要加入自动注入@Autowired 这个注解。在重
写方法上加入重写注解@override。并在重写方法中调用 DAO 层的方法。
d、 dao 层引入注解@mapper,在 mapper 层的.xml 文件中进行 sql 语句的操作。
e、 其中的 namespace 中写的是 dao 层的全路径;其中增删改查标签中的 id 是 Dao 中对应的方法名。
9、JavaScript
向 HTML 页面添加 JavaScript,使得网站的动态性和交互性更强
10、Jquery
jQuery 是 JavaScript 库,简化了 JavaScript 编程
11、JSP
Java server pages 动态网页编程技术,实现了在 Java 中使用 HTML 标签,在服务器端执行
12、MVC 设计模式框架是指什么,其优缺点,怎样用到在你的程序里
在我们实际开发的最后到产品上线,供给客户使用,客户通过浏览器或者 app 等进行数据的操作,实现这个的有,处理发送请求,业务逻辑处理以及访问数据库;
这三个功能我们是可以放到一块使用的,但是如果放在一起,代码便会很臃肿,不利于维护,于是便出现了代码分层思想,把代码按照功能分为三层,即模型层(Model)、显示层(View)、控制层(Controller),这种代码的组织架构就叫 MVC 模式;
模型层(Model):在模型层中又可以分为两层,即 Service 层和 Dao 层,这两层的主要功能是:
Service 层:负责一些业务处理,比如说:获取数据库连接,关闭数据库连接,事务回滚或者一些复杂的逻辑业务处理;
Dao 层:(Database Accept Object) 负责访问数据库,对数据的操作,获取结果集,将结果集中的数据装到 OV(Object Value)对象中,之后再返回给 Service 层;
Controller 层:处理用户请求
View 层:主要负责显示数据(Html、Css、jQuery 等等)
一种设计模式,分层设计思想
M:model 模型
V:view
C:controller
13、前端用到了什么技术
答:(例如 CSS、HTML)
14、controller 代码
@RequestMapping(value = "/register",method = RequestMethod.GET)
public ModelAndView register(ModelAndView model){
model.addObject("title", "用户注册");
model.setViewName("home/index/register");
return model;
}
这是定义的接口,这个是 register 接口
15、msg 是 message 的缩写
16、 Axios
Axios,是一个基于 promis网络请求库,作用于 node.js 和浏览器中,它是isomorphic 的(即同一套代码可以运行在浏览器和 node.js 中)。在服务端它使用原生node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequest。
编辑
17、Ajax
请求 url ,请求类型 post或者get , 同步异步,参数;
前端往后端提交:异步提交;
无需重新加载整个页面,能够更新部分页面内容;
Ajax 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面刷新局部网页,只刷新网页的某一部分;
Ajax 是异步 JavaScript 和 XML,是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
同步与异步的区别:
同步提交:当用户发送请求时,当前页面不可以使用,服务器响应页面到客户端,响应完成,用户才可以使用页面。
异步提交:当用户发送请求时,当前页面还可以继续使用,当异步请求的数据响应给页面,页面把数据显示出来
创建了 XMLHttpRequest 对象之后,必须为 XMLHttpRequest 对象创建 HTTP 请求,用于说明 XMLHttpRequest 对象要从哪里获取数据。通常可以是网站中的数据,也可以是本地中其他文件中的数据。
URL:该参数用于指定 HTTP 请求的 URL 地址,可以是绝对 URL,也可以是相对 URL。
18、为什么选用 MySQL 数据库(看你用的是什么数据库)
19、采用的什么数据库,数据库端口号
MYSQL 一般端口号是 3306 开源免费、运行速度快、可移植性高
20、页面怎么传值?
Post 表单提交、Get 请求、url 地址传值
- 当点击登录按钮时,通过按钮触发页面 ajax 请求【请求方式分为 POST(有数据返回页面)和 GET(无返回)】,前端数据通过 json 进行传递。根据 ajax 中的配置 URL 找到对应的 controller 方法。然后从 controller 层发送到 service 层再通过实现类发送到 DAO 层,dao 层再根据 mybatis 中 XML 的映射关系找到对应的 SQL 进行数据库,进行相应处理。简述:用 ajax 发送前端请求到后端处理,并返回数据。通过 json 进行传递。用户登录如何实现的:简述+服务器比对用户输入的用户名密码于数据库中的用户名密码是否一致。
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、图片上传功能
-
图片上传是传到了服务器中,在访问的时候访问 tomcat 中的图片,数据库中存储的这个图片的字段实际上是图片的地址;
-
实际上上传到了系统中的某一个盘的 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.currenMillis());
37、网站怎么实现安全性?(一般是拦截器登录)
为了确保安全性,某些接口数据是不能访问的,比如后台管理中的用户管理用户请求访问数据时,拦截器就会判断用户有没有进行登录,有没有访问权限;
【前台登录拦截器+后台登录拦截器】没有登录,跳转页面,提示用户登录。
拦截器的位置
网站如何实现安全性
在未登录系统的情况下,是不能进行一些关键操作的。使用拦截器,对系统中不需要登就能访问的请求直接放行。如果需要登录才能访问:判断当前用户是否已经登录也就是看 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 方法中,获取到用户名、密码、验证码通过 ajax 方法匹配controller 里面的 lojin 方法,到后【数据库】判断用户是否已经注册。
- 用户在登录页面填写相关的信息,当用户点击登录的时候会触发登录按钮绑定的登录事件。向后台发送 ajax 请求,参数传递到后台。服务器比对用户输入的用户名密码于数据库中的用户名密码是否一致。将处理结果告诉前端:
·成功,跳转至主页
·失败,弹窗提示错误信息
3.首先将前端输入的信息进行校验,如果不符合弹出提示信息,如果符合则调用 submit-register 方法,通过 ajax 方法进行后台服务器请求,请求的 url路径是 register,请求信息传输方式都是 post,在数据中我们将前端获取的信息进行封装,在后台服务器中接受前端传过来的 json 数据并进行解析,在数据库中查询用户名是否已经存在,如果存在向前端反馈用户已存在,注册失败,如果不存在则将用户注册信息存储到数据库中。
- 首选顾客输入相关信息,点击登录按钮,触发绑定的 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()方法获得 SqlSessin对象;
(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、服务器(web 服务器)
Tomcat 端口号 8080/8088
49、用例图的含义
用例图是用例和系统交互最简表达形式,展现了用户和其他相关用例之间的关系,描述参与者与功能的边界。使用用例和参与者描述系统的边界和它的主要功能用例的关系有扩展、泛化、包含;
50、用例规格说明书的含义
阐述具体用例之间的数据信息,采用用例规格说明书来记录这些信息,事件流:要记录的重要的事情是用户输入到系统的信息。
时序图的含义
它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。
52、怎样判断用户是否登录
各个系统实现不一样,一般分为两种:
a用户的登录后,会在 session 中记录下当前用户的登录信息。用户访问其他请求,拦截器判断 session 是否有登录信息,没有就提示登录。有就放行。
b用户登录后后台会给当前用户发放令牌 token。后面每次访问都带着令牌,服务器判断令牌合法性来确认用户是否已经登录
53、怎么判断用户登录是否成功?失败的话有提示吗?怎么做到的?
用户输入用户名和密码以及验证码后先到后台进行判断,首先判断验证码是否输入正确,判断用户是否存在,如果用户名未注册过则系统提示:该用户名不存在。用户存在再判断密码是否正确,三项都正确就可以登陆成功,调用成功登录页面,如果要求的信息有一项 入错误,去 js 中判断,如果输入框信息不对不全,通过jquery 中提供的方法,alert弹出提示信息;
★★★怎么判断用户登录是否成功?失败的话有提示吗?怎么做到的?
登录的话 可以从代码里找-校验 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 网站中,借鉴了前辈们的代码。自己完成了预定等入住等业务功能。