HTTP协议介绍与查看方式
浏览器与服务器传输的数据格式要求:
使用http协议规范浏览器与服务器的传输数据格式
http协议介绍:
hypertext transaction protocol 超文本传输协议,HTTP是一个简单的请求-响应协议,它通常运行在TCP/IP通信基础之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
作用
规范浏览器与服务器之间的请求数据与响应数据的格式。
http协议数据查看方式
- 使用浏览器开发者工具F12查看(常用的,简单,对原生数据进行包装,但是不专业)
- 使用专业抓包工具软件Filter查看(了解,适合学习http协议原生数据格式)
请求数据介绍
http协议请求数据组成

tips:
请求数据组成几个部分?
请求行
请求头
请求体
get提交请求参数数据位于请求信息哪个部分中?
请求行
post提交请求参数数据位于请求信哪个部分中?
请求体
request对象介绍与作用
当浏览器提交请求数据给到服务器,服务器会创建一个对象接收所有请求数据,这个对象就是request
request对象体系结构
idea快捷键查看类关系

作用
- 可以获取所有的请求数据(请求行、请求头、请求体)
- request可以进行请求转发的页面跳转
- request是一个作用域对象(请求域)
request对象的作用
-获取请求数据
-服务器端的页面跳转
-操作服务器内存数据
request作用
获取请求数据1-请求行
常用api

代码实现
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "RowServlet", urlPatterns = "/RowServlet")
public class RowServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//目标:获取请求行数据并打印到控制台输出
//请求行格式:提交数据请求方法+请求的url+使用的http协议版本
//1.获取提交数据的请求方法【重点】
String method = request.getMethod();
//2.获取请求的url
String url = request.getRequestURL().toString();
//3.获取http协议版本
String protocol = request.getProtocol();
//4.扩展其他获取
//4.1 获取当前资源部署目录的名字【重点】
String contextPath = request.getContextPath();
//4.2 获取客户端浏览器的ip地址
String clientIP = request.getRemoteAddr();//客户端浏览器的ip地址:0:0:0:0:0:0:0:1
//当使用localhost本地访问的时候,ip会返回0:0:0:0:0:0:0:1 代表本地ip地址,使用其他就返回真实ip地址
System.out.println("获取提交数据的请求方法:"+method);
System.out.println("获取请求的url:"+url);
System.out.println("获取http协议版本:"+protocol);
System.out.println("资源部署目录的名字:"+contextPath);
System.out.println("客户端浏览器的ip地址:"+clientIP);
}
}
Http协议版本介绍

获取请求数据2-请求头
常用api

请求头相关信息简单介绍

获取请求数据3-请求体
常用api
tips:
Servlet通过与html的action地址链接起来

获取请求参数数据核心方法:
request.getParameter(name) 获取对应一个value,返回String
request.getParameterValues(name) 获取对应一组value, 返回String[]
request.getParaemeterMap() 获取所有键值对Map集合数据,返回Map<String,String[]>
解决Post请求数据中文乱码
request.setCharacterEncoding("utf8");
tips:
request获取post提交中文数据为什么会乱码?如何解决?
request读取post请求的中文数据默认采用iso8859-1码表,不支持中文
设置request码表为utf-8
BeanUtils封装数据
如果客户端提交大量数据,服务器端一个一个获取是非常麻烦,需要使用工具类实现自动封装数据,第三方工具BeanUtils。
BeanUtils 是 Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。它可以将一个表单提交的所有数据封装到JavaBean中。
jar包下载地址:http://www.commons.apache.org/

BeanUtils工具类的api方法

请求转发页面跳转
前端跳转页面包含:
a标签超链接
form表单的提交
location.href操作浏览器地址栏
后端跳转页面有2种:
1.request请求转发跳转
2.response重定向跳转
请求转发跳转的api方法
request.getRequestDispatcher("/要跳转到的地址").forward(request, response);
tips:
request可以实现页面跳转,并且url没有变化
response对象重定向页面跳转
服务器进行页面跳转有2种方式:
request请求转发跳转
response重定向页面跳转
response重定向跳转的api方法
response.sendRedirect("/资源部署目录名字/资源路径");
tips:
response也可以实现跳转,url改变了
请求转换与重定向的区别
request请求转换页面跳转原理——

response重定向页面跳转原理——


转发:跳转前后的2个资源共享同一个request和response
重定向:跳转前后的2个资源不共享request和response
是一个作用域对象(请求域)
servlet作用域介绍
-
作用域介绍
就是服务器的内存对象,可以操作内存存储数据
-
作用域对象一共有3个
请求域request
会话域session
上下文域servletContext
- 作用域对象作用
实现动态资源之间传递数据,使用服务器内存域对象
作用域存储数据的api方法

tips:
1.域对象存储数据到服务器的内存中
2.request请求域的范围:
一次请求内,请求来到服务器创建request和respons对象,服务器响应完后request和response就会被销毁
3.域对象作用:
实现资源之间传递数据
4.什么时候使用重定向?什么时候使用转发?
果跳转前后2个页面传递数据使用请求转发,其他情况建议使用重定向
案例-登录功能-案例介绍与环境搭建
三层架构开发的好处——
1.分层开发,职责明确
dao,数据访问层,专门负责操作数据库增、删、改、查数据
service,处理业务逻辑,举例子:一个业务方法可以操作调用dao多个方法,实现操作多条sql语句
web,表现层,专门负责与用户浏览器交互
2.适合团队开发,三层架构将代码写到很多类中,适合多人一起开发。
网友评论