JavaWeb知识点总结

1.MVC和三层架构

(1)MVC:

  • Model:指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。接收到控制器传过来的模型更新请求后,执行特定的业务逻辑处理,然后返回相应的执行结果。

  • View:负责提供页面为用户展示数据,提供相应的表单用于用户的请求,并在点击按钮时候向控制器发出请求来请求模型进行更新。

  • Controller:用来接收用户提交的请求,然后获取请求中的数据,然后调用业务模型相应的业务方法进行更新,同时根据业务执行结果来选择要返回的视图。

(2)三层架构:

  • 表现层:负责接收前端传递过来的数据,然后传递给业务层
  • 业务层:负责业务逻辑处理
  • 持久层:负责连接数据库、操作数据库中表

2.Mybatis

什么是Mybatis?

Mybatis是持久层的框架,用于简化JDBC操作

参数占位符

  • #{}:会将其替换为?,防止SQL注入
  • ${}:拼sql,会存在SQL注入问题
  • 二者使用场景: 参数传递的时候使用:#{}; 表名或者列名不固定的情况下,使用:${};

注意:Mybatis框架不会默认开启提交事务,所以需要手动设置,设置方法如下:

  • openSession():默认开启事务,进行增删改查操作后需要使用sqlSession.commit();手动提交事务
  • openSession(true):可以设置为自动提交事务(关闭事务)

3.B/S架构

概念:Browser/Server,浏览器/服务器 架构模式。

思路:客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端,浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可。

4.javaWeb词汇理解

  • 静态资源:HTML、CSS、JavaScript、图片等。所有人访问都是一样的页面
  • 动态资源:Servlet、JSP等。
  • HTTP协议:规定了浏览器和服务器之间数据传输的规则。特点:每次请求-响应都是独立的。多次请求不能共享数据。Java中使用会话技术(Cookie、Session)来解决这个问题。
  • web服务器:负责解析HTTP协议、解析请求数据,并发送响应数据。将Web项目部署到服务器中,对外提供网上浏览服务

5.HTTP请求数据格式

请求数据分为3部分

  • 请求行:请求数据的第一行。
  • 请求头:第二行开始,格式为key:value形式
  • 请求体:POST请求的最后一部分,存放请求参数

get和post请求方式区别

  • GET请求请求参数在请求行中,没有请求体。POST请求请求参数在请求体中
  • GET请求请求参数大小有限制,POST没有

6.HTTP响应数据格式

响应数据分为3部分

  • 响应行:响应数据的第一行。其中HTTP/1.1表示协议版本,200代表响应状态码,OK表示状态码描述
  • 响应头:第二行开始,格式为key:value形式
  • 响应体:最后一部分。存放响应数据

响应状态码状态码

7.Servlet详解

  • 介绍:Servlet是Java提供的一门动态web资源开发技术
  • servlet执行流程Servlet由web服务器创建,Servlet方法由web服务器调用

  • servlet生命周期:

1.加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象。通过设置loadOnStartup = 1该参数的值可以设置Servlet对象被创建的时间

  • 负整数:第一次被访问时创建Servlet对象
  • 0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高

以上注意:加载谁?实例化谁?——加载Servlet类。实例化Servlet的对象

2.初始化
在Servlet实例化之后,容器(web服务器)将调用Servlet的init()初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次

3.请求处理
每次请求对应路径的Servlet时,容器(web服务器)都会调用Servlet的service()方法对请求进行处理
4.服务终止
当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收

8.Request(获取请求数据)

(1)基本继承体系

  • ServletRequest —— Java提供的请求对象根接口
  • HttpServletRequest —— Java提供的对Http协议封装的请求对象接口

(2)获取请求参数

String[] getParameterValues(String name)根据名称获取参数值,结果为数组
String getParameter(String name)根据名称获取参数值,结果为单个值

(3)乱码问题

  • 原因浏览器编码方式为UTF-8,而tomcat解码的默认字符集是ISO-8859-1
  • 解决方法:

1.先对乱码数据进行编码:转为字节数组
2.字节数组解码

byte[] bytes = userName.getBytes(StandardCharsets.IOS_8859_1);
userName = new String(bytes, StandardCharsets.UTF_8);

9.Response(设置响应数据)

(1)基本继承体系

  • ServletResponse—— Java提供的请求对象根接口
  • HttpServletResponse —— Java提供的对Http协议封装的请求对象接口

(2)响应数据

  • 响应行
  • 响应头
  • 响应体

(3)重定向

  • 代码如下
resp.sendRedirect("重定向资源路径")
  • 特点
  1. 浏览器地址栏路径发生变化
  2. 可以重定向到任意位置的资源(服务器内部、外部均可)
  3. 两次请求,不能在多个资源使用request共享数据

10.请求转发(实现服务器内部资源共享)

  • 代码如下
req.getRequestDispatcher("转发资源路径").forward(req.resp);
  • 特点
  1. 浏览器地址栏路径不发生变化,一次请求
  2. 只能转发到当前服务器的内部资源

11.会话跟踪技术

(1)为什么要用会话跟踪技术?

HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享

(2)什么是会话?

在浏览器中,访问web服务器的资源,会话就此建立,直到有一方断开连接,该会话结束。(一次会话中可以包含多次请求和响应)

(3)服务端会话跟踪技术:Session

  • 服务端会话跟踪技术将数据保存到服务端
  • session快速入门
HttpSession session = request.getSession();//获取Session对象
void setAttribute(String name, Object o)//存储数据到session域中
Object getAttribute(String name)//根据key,获取值
void removeAttribute(String name)//根据key,删除该键值对
  • session原理:基于Cookie实现
  • session钝化、活化:
    问题引入:

服务器重启后,Session中的数据是否还在?

钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中
活化:再次启动服务器后,从文件中加载数据到Session中

  • Session销毁(默认情况下,无操作,30分钟自动销毁,可在web.xml中配置)

调用Session对象的invalidate()方法即可自我销毁

(4)客户端会话跟踪技术:Cookie

  • 思路:客户端会话技术,将数据保存在客户端,以后每次请求都携带Cookie数据进行访问
  • cookie快速入门
Cookie cookie = new Cookie("key", "value");//创建cookie
response.addCookie(cookie);//发送Cookie到客户端
Cookie[] cookies = request.getCookies();//获取客户端携带的所有Cookie

cookie.getName();
cookie.getValue();//使用Cookie对象方法获取数据
  • Cookie原理:通过response对象添加响应头set-cookie ,当浏览器再次请求服务器时会在resquest请求头中携带cookie
  • Cookie存活时间设置
setMaxAge(int seconds)//正数:到时间销毁	负数:当浏览器关闭,则Cookie被销毁 零:删除对应Cookie

12.Cookie和Session总结

(1)共同目的:

Cookie和Session都是为了完成一次会话内多次请求间数据共享

(2)二者区别:

  • 安全性:Cookie不安全,Session安全
  • 存储时间:Cookie可以长期存储,Session默认30分钟
  • 存储位置:Cookie实践爱那个数据存储在客户端,Session将数据存储在服务端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值