Javaweb
Maven
Maven是专门管理和Java项目的工具
1.提供一套标准的项目结构
2.提供了一套标准化的构建流程(编译,测试,打包,发布…)
3.提供了一套依赖管理机制
管理项目所依赖的第三方资源(jar包,插件…)
依赖
在pom文件中利用 alt+insert 键直接调出导入相对应的jar包
MyBatis
条件查询 需要不同样的参数
动态SQL
Web核心
HTTP
Hyper Text Transfer Protocal ,超文本传输协议,规定了浏览器和服务器之间数据传输的规则
Web-Maven 项目
在IDEA 中创建maven项目及配置Tomcat服务器
直接创建maven项目,先去配置web工件 再去配置tomcat 将webapp项目放在src包下的main包里
Servlet
servlet 是运行在web服务器上的应用程序 给服务器提供相对应接收请求和处理请求的响应的方法
Servlet 的体系结构 由servlet这个接口其中定义了五个抽象方法 其中HttpServelt重写了service方法在service方法中调用相对应的do方法
JavaWeb 之 Servlet 体系结构 - 格物致知_Tony - 博客园 (cnblogs.com)
Request &Response
Request :使用request对象来获取请求数据
Response: 使用response对象来设置响应数据
Request
解决 request的中文乱码
doGet方式:
Get获得参数的请求方式:getQueryString 获得字符串 因为Tomcat将中文字符转码为ISO_8859_1类型,需要将其转化为utf-8字节类型子啊转化为字符串类型
username = new String(username.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
doPost
设置输入流的编码
在首部添加 req.setCharacterEncoding(“UTF-8”);
username = new String(username.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
请求转发
Response
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kw0yjHvR-1652263559165)(C:\Users\29769\AppData\Roaming\Typora\typora-user-images\image-20220327111713875.png)]
Response重定向
对比请求转发和重定向
响应字符数据
响应字节数据
路径问题
JSP
JSP本质就是一个servlet
JSP 原理
JSP缺点
El表达式
简化JSP页面内的Java代码
JSTL标签
JSP 标准标签库(JSTL) | 菜鸟教程 (runoob.com)
MVC 模式
mvc是一种分层开发的模式
M:Model 业务模型,处理业务
V:View 视图,界面展示
C:Controller,控制器,处理请求,调用模型和视图
三层架构
SSM
会话
用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次响应请求
eg:在访问京东商场的页面的时候,点击商品页面,即为发送请求,点击不同的商品页面的时候,是不同的请求,但是此时的会话连接并没有终止,所以在这一次会话里web服务器可以响应请求的时候,并不需要重新建立
会话跟踪技术
一种维护浏览器状态的方法,服务器需要识别多次请求是否来自同一浏览器,以便在同一次会话的多次请求建共享数据
eg:在京东商场的商品页面添加商品刀购物车为一次请求,在去购物车结算的时候需要获得上一次请求的数据来结算,在登陆界面,登录后进入的是登录这个人的账号个人页面,需要获得这个人的信息,还有登陆界面的记住我的功能下一次浏览器再次访问服务器就不用输入账号密码,还有页面的验证码功能 也是会话跟踪技术 ,同一次会话多次请求的共享数据。
为什么服务器无法识别那些请求是同一浏览器的?
因为服务器和浏览器之间使用的是HTTP协议:HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都将会将该请求视为新的请求,因此我们需要会话跟踪技术实现会话之间的数据共享
实现会话跟踪技术的方式
- 客户端会话跟踪技术:Cookie
- 服务端会话跟踪技术:Session
客户端会话跟踪技术:Cookie
- Cookie 客户端会话技术,将数据保存刀客户端(–将数据保存在客户端浏览器的内存里–),以后每次请求都携带Cookie数据进行访问
URL编码:value = URLEncoder.encode(value, “UTF-8”);
URL解码:value = URLDecoder.decode(value, “UTF-8”);
服务端会话跟踪技术:Session
- 服务端会话跟踪技术:将数据保存到服务端
- JavaEE 提供HttpSession接口,来实现一次会话的多次请求间的数据共享功能
Session原理
- Session是基于Cookie实现的**,session的每次访问都携带一个JSESSIONID来传给浏览器来识别,从而查找有没有对应的Session会话,没有再重新创建**
- session不能长期的存储数据,而cookie可以将数据保存在客户端的内存里
- session的数据保存在服务器内存里
使用Session会话的时候,服务器正常的重启后数据会自动保存(相当于购物车添加商品之后退出了页面,再次访问的时候,购物车的商品仍然存在)
但如果是浏览器的关闭 session会话会重新启动,第一次会话和浏览器关闭后再进行访问服务器的会话是不同的 但session里的数据还在
如果要保持会话相同,那浏览器不能重新启动
小结
Filter 过滤器
- Filter 过滤器,是Javaweb三单组件(Servlet,Filter,Listener)之一
- 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能
- 过滤器一般完成一些通用的操作,比如:权限控制,同一编码处理,敏感字符处理等等
Listener 监听器
AJAX
利用HTML+Ajax取代 jsp页面
从服务端抓取数据到html页面上
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。
AJAX 不是新的编程语言,而是一种使用现有标准的新方法。
AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。
同步
用户在请求服务器的时候,服务器需要处理,此时用户只能等待服务器的响应,在服务器响应客户了之后才能继续访问或者操作另外的服务 操作是不连续的 因为客户端需要等待服务器的响应才能继续操作
异步
用户在请求服务器的时候,服务器需要处理,但是异步的操作客户端不用等待服务器的响应也可以进行其他操作,操作是连续的,可以不用等待服务器也可以操作其他服务
快速入门
AJAX - XMLHttpRequest (w3school.com.cn)
写在html页面的script标签上
xmlhttp.open()三个参数
Axios 异步框架
封装管理Ajax的原生代码 管理Ajax代码的框架
起步 | Axios 中文文档 | Axios 中文网 (axios-http.cn)
JSON
- 对象表示法
- 语法简答,层次结构鲜明,作为数据的载体,在网络中用于数据传输
- json的语法和Javascript里的参数语法差不多
数据转换需要用到fastjson的依赖包来写
- Java转换为Json数据 JSON.toJSONString(参数) ------>返回的是一个json格式的字符串
- JSON转换为Java对象 JSON.parseObject(“json格式的字符串”,转换类型(对象))
Vue
- Vue是一套前端框架,是免除原生Javascript中的DOM操作,简化书写
- 基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上
Element
-
Element:是饿了么公司前端开发工程团队提供的一套基于vue的网站组件库,用快速构建网页
-
组件:组成网页的不见,例如超链接,图片,按钮等等