是 Servlet 的扩展,本质上还是 Servlet每个 Jsp 页面就是一个 Servlet 实例Jsp 页面会被 Web 容器编译成 Servlet,Servlet 再负责响应用户请求
1.http协议
1.http是网络的一个应用层协议
2.http是超文本传输协议,一定是基于请求响应过程,发起请求,产生响应。
3.基于TCP协议
4.一次请求一次响应,有求必应
2.http的客户端
浏览器
IE/Edge、chrome、safiy、opel、firefox......
Java
URLConnection
HTTPClient
OKHTTP
wget/curl
3.http的服务端
网络应用的服务端
1.启动监听服务,等待连接
2.进行网络通信,接受请求,发送响应(使用对象流)
3.应用服务器(JavaEE)
3.1Tomcat(开源,市场占有高)
3.2Jetty(内嵌应用服务器,主要用来内部测试)
3.3Negix(反向代理,主要用来负载均衡)
3.4Apache(处理静态应用,php最好搭配)LAMP(Linux、Apache、MySQL、Php)
3.5JBoss(功能强大,开源)EJB容器
3.6GlassFish(sum公司开发)
3.7WebLogic/WebShare(EJB支持,服务器集群支持)商用
4.http的请求方法
HTTP1.0 定义了三种请求方法:GET, POST 和 HEAD 方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。
HTTP定义了与服务器进行交互的不同方法,的四种:GET、POST、PUT、DELETE。其中,GET和POST最常用。
GET用来获取资源,它只是获取、查询数据,不会修改服务器的数据,从这点来讲,它是安全的(后面还会从另一方面分析它的不安全性)。由于它是读取的,因此可以对GET请求的数据进行缓存。
POST则是可以向服务器发送修改请求,进行数据的修改的。举个例子:比如说我们要在知乎、或者论坛下面评论,这个时候就需要用到POST请求。但是它不能缓存,为什么呢?设想如果我们将“评论成功”的页面缓存在本地,那么当我发送一个请求的时候,直接返回本地的“评论成功”页面,而服务器端则什么也没有做,根本没有进行评论的更新,岂不是难以想象
get与post区别
GET没有POST安全、GET请求时URL的长度是有限制的、GET没有body而POST有body等等。这些都是针对浏览器中的要求, 在使用HTTP作为接口进行传输时,就没有这么多条条框框了,此时GET和POST只是HTTP协议中的两种请求方式,而HTTP协议是基于TCP/IP的应用层协议, 无论GET还是POST,用的都是同一个传输层协议,所以在传输上没有区别。
因此,在用作为接口进行传输时,最大的不同就在于报文格式上的不同了
POST /url HTTP/1.1 GET /url HTTP/1.1
上面所示的分别为POST方法请求的报文第一行和GET请求的报文第一行, 显而易见的区别就是方法名不同。除此以外,就没有那么多要求了,GET也可以有body,POST也不一定非要使用body,只要客户端和服务器端确定好规范即可,至于形式则你们随意。只不过现在已经习惯了现有的规则,再去改变有些麻烦,毕竟客户端和服务器端要花时间去探讨具体的对接形式。
5.http的响应
MIME (多用途互联网邮件扩展类型)
常见的媒体格式类型如下:
text/html :HTML格式
text/plain :纯文本格式
text/xml :XML格式
image/gif :gif格式
image/jpeg :jpg格式 验证码
image/png:png格式
以application开头的媒体格式类型:
application/xhtml+xml :XHTML格式
application/xml:XML数据格式
application/atom+xml :Atom XML聚合格式
application/json:JSON数据格式
application/pdf:pdf格式
application/msword :Word文档格式
application/vnd.ms-excel excel文档格式
application/octet-stream :二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded :<form encType="">中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:
multipart/form-data :需要在表单中进行文件上传时,就需要使用该格式
6.Tomcat服务器的安装与部署
1.Tomcat是一个java程序必须使用JDK(Tomcat需要编译jsp程序)
2.需要配置JAVA_HOME环境变量(jdk的安装路径)
3.解压即可使用
4.启动:
4.1安装目录下/bin目录打开cmd窗口,输入startup
4.2启动的标志:启动时间,启动端口号
Tomcat的目录结构
/bin这个目录下存放着Tomcat的一些可执行文件,包括启动、停止等
/conf这个目录下存放着Tomcat的配置文件,常用的有
server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码
web.xml可以设置tomcat支持的文件类型
context.xml可以用来配置数据源之类的
tomcat-users.xml用来配置管理tomcat的用户与权限
/webapps这个目录下存放网站的文件夹
一个主机可以装多个Tomcat(区分端口,部署不同的网站)
协议(http/https)、IP、端口只要有一个不一样就是不同的网站(域)
部署网站
1.自动部署(将网站文件夹放在Tomcat的webapp文件夹下)
2.server.xml配置
<Context docBase="你的项目路径" path="浏览器要输入的路径">
3.web.xml
在\conf\Catalina\localhost:添加testA.xml
添加如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:\test\dubbo-admin-2.5.10" reloadable="false" />
docBase还是指向WEB工程的绝对路径。
此时启动tomcat,浏览器输入:localhost:8080/testA,说明部署成功!(访问路径为此XML的名称)
7.JSP与HTML的区别
1.html可以直接被浏览器打开,而JSP不行
2.Jsp可以把java代码嵌入到heml中(脚本代码)
3.Jsp为什么要嵌入到java代码
利用Java代码动态生成HTML
4.动态网页技术(动态生成网页的技术)代码根据实际情况临时线现场产生的网页
常用的动态网页技术
C++,ASP(vb,ASP.NET C#)
ASP、PHP、JSP、Python、Go
里面都可以嵌入html、css、js(模板)
8.Jsp的内部元素
1.编译元素
影响jsp编译为java的class文件
1.page
<%@ page contentType="text/html;charset=UTF-8"/*响应类型*/ language="java" %>
<%@ page import="java.util.LinkedList" %>/*导入包*/
2.include
3.taglib
3.模板元素
HTML
CSS
JS
3.脚本元素
1.普通脚本元素
<% /*普通java代码*/ %>
2.声明式脚本
<%! /*全局变量的定义,函数的定义等*/%>
3.表达式脚本
<%= serviceType.getTitle()/*相当于out.println(serviceType.getTitle()),直接输出一个元素*/%>
4.注释元素
<%--<td><%= serviceType.getTitle()%></td>jsp的注释--%>
<!-- html注释 -->
(1)html注释:html注释又称为显示注释,是指包含在“<!--”和“-->”之间的内容,在客户端源代码中显示注释内容,但不被浏览器直接显示。“<!--”和“-->”之间可以包含jsp表达式,并被jsp容器解释。
(2)jsp隐藏注释:隐藏注释写在jsp程序中,用<%--隐藏注释--%>标记的字符在jsp编译时被忽略。它不会显示在客户端浏览器中,也不会出现在客户端源代码中。
html注释与jsp隐藏注释的区别在于:html是显示注释,注释内容可以在客户端源代码中看到,而jsp隐藏注释的注释内容不能传输到客户端,即在客户端源代码中不能产看到jsp隐藏注释内容;html注释还可以在注释中使用表达式,而在jsp隐藏注释中不能使用表达式。html注释和jsp隐藏注释都不能显示在客户端浏览器中,所以这里的“显示”和“隐藏”是指注释内容是否显示在客户端源代码中。
5.动作指令
使用jsp标签代替java代码
作用:
1.jsp作为一种模板技术,用来显示数据
2.数据与显示分离开
3.被JSTL、EL表达式所替代
4.jsp的include是在运行时包含,而include编译元素是在编译时包含
6.其他模板技术(freeMark、themeleaf、relocity)
发表评论 取消回复