HTTP(超文本传输协议)
HTTP简介
- WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。
- HTTP是hypertexttransferprotocol(超文本传输协议的简写,它是TCPP协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程 以及数据本身的格式。
- HTTP协议的版本: HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP/3.0
HTTP的会话方式
- 浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。
- 对每一个页面的访问,浏览器与WEB服 务器都要建立一次单独的连接。
- 浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。
HTTP请求结构:
一个请求行,若干请求头,以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
HTTP响应结构:
一个状态行,若干消息头,以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
GET请求 and POST请求
使用GET请求
- 在浏览器地址栏中输人某个URL地址或单击网页上一的个超链接时,浏览器发出的HTTP请求消息的请求方式为GET。
- 如果网页中的表单元素的 method 属性被设置为了 “GET" ,浏览器提交这个FORM表单时生成的HTTP请求消息的请求方式也为GET。
- 使用GET请求方式给WEB服务器传递参数的格式:
http://www.example.com?name=hhh&password=123 - 使用GET方式传送的数据量一般限制在1KB以下。
使用POST请求
- POST 请求方式主要用于向 WEB 服务器端程序提交 FORM 表单中的数据。
- POST 方式将各个表单字段元秦及其数据作为 HTTP 消息 的实体内容发送给 WEB 服务器,传送的数据量要比使用 GET 方式传送的数据量大得多
JSP(已过时)
(Java Server Pages, Java服务器端网页) / 已经过时的技术
JSP起源
- 在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变。
- 如果使用 Servlet 程序来输出只有局部内容需要动态改变的网页,其中所有的静态内容也需要程序员用 Java 程序代码产生, 整个Servlet程序的代码捋非常臃肿,编写和维护都将非常困难。
- 对大量静态内容的美工设计和相关HTML语句的编写,并不是程序员所要做的工作, 程序员对此也不一定在行。
- 网页美工设计和制作人员不懂 Java 编程, 更是无法来完成这样的工作。
- 为了弥补 Servlet的缺陷,SUN公司在 Servlet 的基础上推出了 JSP ( Java Server Pages) 技术作为解决方案。
- JSP是简化 Servlet 编写的一种技术,它将 Java 代码和 HTML 语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用Java代码来编写,而对固定不变的静态内容采用普通静态HTML页面的方式编写。
JSP运行原理
- WEB容器 (Servlet 引擎) 接收到以 .jsp 为扩展名的 URL 的访问请求时它将把该访问请求交给 JSP 引擎去处理
- 每个JSP页面在第一次被访问时,JSP 引擎将它翻译成一个Sevlet 源程序,接着再把这个 Servlet 源程序编译成 Servlet 的 class 类文件,然后再由WEB容器 ( Servlet 引擎) 像调用普通 Servlet 程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。
- JSP规范也没有明确要求JSP中的脚本程序代码必须采用Java语言,JSP中的脚本程序代码可以采用 Java 语言之外的其他脚本语言来编写,但是 JSP页面最终必须转换成 Java serve程序。
- 可以在WEB应用程序正式发布之前,将其中的所有 JSP页面预先编译成 Serlvet程序。
JSP隐含对象
没有声明就可以使用的对象,JSP页面一共有9个
public void jspservice(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
PageContext pageContext null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
//。。。
//使用<% %>编写的代码在此位置,可以用到 request, response, pagecontext, session
// application, config, out, page这8个隐含对象, (实际上还可以使用一个叫 exception 的隐含对象)
}
- request:HttpServletRequest 的一个对象
- response:HttpServletResponse 的一个对象(几乎不用)
- pageContext:页面的上下文,是 PageContext 的一个对象,可以从该对象中获取到其他 8 个隐含对象,也可以从中获取当前页面的其他信息(自定义标签)
- session:浏览器和服务器的一次对话,是HttpSession 的一个对象
- application:代表当前 WEB 应用,是 ServletConext 的一个对象
- config:当前JSP对应的 ServletConfig 对象 (几乎不使用),若需要访问当前 JSP 配置的初始化参数,需要通过映射的地址才可以
</servlet>
<servlet-name>hellojsp</servlet-name>
<jsp-file>/hello.jsp</jsp-file>
<init-param>
<param-name>test</ param-name>
<param-value>testvalue</param-value
</init-param>
</servlet>
<servlet-mapping>
<servlet-name >helloisp</servlet-name>
<url-pattern>/hellojsp</url-pattern>
</servlet-mapping>
- out:JspWriter 对象,调用out.println() 可以直接把字符串打印到浏览器上
- page:是指向当前 JSP 对应的Servlet对象的引用,但为Object 类型, 只能调用Object 类的方法(几乎不使用)
- exception:在声明了 page 指令的 isErrorPages 为 “true”时,才可以使用