今天是2月29日明天就是新的一个月了,打卡的第31天,明天也要加油。
ps:笔记是根据尚学堂百战java视频教程写的QAQ
29/2/2020
Servlet
第一节:HTTP协议详解
1.web交互的流程
请求:客户端根据用户的地址信息将数据发送给服务器的过程
响应:服务器将请求处理结果发送给浏览器的过程
怎样实现不同版本浏览器和不同版本服务器之间的数据交互呢?
规范浏览器和服务器的数据交互格式,也就是HTTP协议。
2.HTTP的概念和介绍
概念:超文本传输协议(Hyper Test Transfer Protocol)
作用:规范了浏览器和服务器的数据迁移
特点:
- 简单快速:客户向服务器请求数据时,只需要传送请求的方法和路径。请求方法常用的有GET,HEAD,POST。每种方法规定了客户和服务器的联系类型不通。
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-type加以标记。
- 无连接:无连接的含义是限制每次连接只处理一个请求。节省传输时间。
- 无状态:协议对事物处理没有记忆能力。如果后续处理需要前面的信息则他必须要重传。服务器不需要先前的信息时应答比较快。
HTTP1.1 版本后支持可持续连接
3.HTTP的交流过程
HTTP的交流过程一般分为四个步骤(一次完整的请求):
- 客户端和服务器建立连接
- 客户端发送请求数据到服务器端(HTTP协议)
- 服务器端收到请求后进行处理然后将处理的结果相应给客户端(HTTP协议)
- 关闭客户端和服务器端的连接(HTTP1.1后不会立刻关闭)
4.HTTP协议的请求格式
请求格式的结构
请求行:请求方式、请求的地址和HTTP协议版本
请求头:消息报头。一半来说明客户端要使用的一些附加信息
空行:位于请求行和请求数据之间,空行是必须的
请求数据:非必须
注意:一张网页的内容是及其丰富的,浏览器会遵循HTTP请求的格式将有效数据发送给服务器。
今天一上午忙着弄博客的端口和域名注册购买DNS解析,之类的事物,下午学习的内容就比较少了,还要记纸质版笔记,晚上又得把纸质版笔记誊写到博客上发布,一天下来还是有点小忙,进度稍微少了点,不过尽量明天补上吧!
1/3/2020
示例(get请求方式):
get方式没有请求主体
示例(post请求方式):
Host:服务器主机地址
User-Agent:浏览器版本信息
Content-Type:类型
Content-Length:请求数据的大小
Connection:kepp-Alive:保持连接
5.HTTP协议请求方式
根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法:GET,POST和HEAD方法。
HTTP1.1 新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。
get和post请求方式的区别:
get请求方式:请求数据会以?的形式隔开拼接在请求头中,不安全,没有请求实体部分。
HTTP协议虽然没有规定请求数据的大小,但是浏览器对URL的长度是有限制的,所以get请求不能携带大量的数据。
post请求方式:请求数据在请求实体中进行发送,在URL中看不到具体的请求数据,安全。适合数据量大的数据发送。
6.HTTP协议响应
响应格式的结构:
响应行(状态行):HTTP版本,状态码,状态消息
响应头:消息报头,客户端使用的附加信息
空行:响应头和相应实体之间的,必须的。
响应实体:正文,服务器返回给浏览器的信息
示例
HTTP常见响应状态码的含义:
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP的状态码共分为5种类型:
常见的状态码:
200 OK //客户端请求成功
400 Bad Request //客户段请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态码必须和WWW-Authenticate 报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
第二节:服务器软件介绍和安装-Tomcat
Tomcat安装
下载地址
安装:
下载完成后解压压缩包就可以使用
尽量不要解压在中文目录中
目录结构介绍:
\bin:存放启动和关闭Tomcat的可执行文件
\conf:存放Tomcat的配置文件
\lib:存放库文件
\logs:存放日志文件
\temp:存放临时文件
\webapps:存放web应用
\work:存放JSP转换后的Servlet
校验安装:
打开bin目录,然后双击指向startup.bat文件,打开浏览器在地址栏中输入localhost:8080出现tomcat广告页安装成功
常见问题:
- tomcat运行依赖JDK,必须配置JDK环境。
- 闪退,启动闪退问题一般是因为JDK的环境变量配置有问题。
第三节:Servlet引入
介绍
概念
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现Serblet接口的类,一般情况,人们理解为后者。Servlet允许于支持Java的应用服务器中,从原理上讲,Servlet可以响应任何类型的请求,但是大多数情况下Servlet只是用来扩展基于HTTP协议的Web服务器。
特点
运行在支持java的应用服务器上
Servlet的实现遵循了服务器能够识别的规则,也就是服务器会自动的根据请求调用对应的servlet进行请求处理。
简单方便,可移植性强
使用
- 创建普通的java类并继承HttpServlet
- 重写service方法
- 在service方法中书写逻辑代码即可
- 在webRoot下的WEB-INF文件夹下的web.xml文件中配置servlet
第一个Servlet程序
配置IDEA环境
- 创建一个java EE web项目
- 右上角下拉菜单选择第一个选项 Edit ...
- 点+号找到tomcat选择local
- 填写相关信息即可
- 在project structrue..中将javaEE也就是Tomcat的包导入项目不然会找不到Servlet相关的类
- 在项目的web文件夹下的WEB-INF文件夹创建一个classes来存储编译的类,再创建一个lib文件夹存放第三方包
- 在project structrue.. paths下设置编译生成class文件的地址
IDEA环境配置成功!
书写Servlet
新建包com.yjb.servlet
包下新建类MyServlet
MyServlet继承HttpServlet类重写service方法
public class MyServlet extends HttpServlet {
// 重写service方法
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("这个是我的第一个Servlet程序");
// 写到请求的Html页面上
res.getWriter().write("this is my first servlet");
}
}
修改配置文件web.xml
打开WEB-INF下的web.xml文件
在中写入信息
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.yjb.servlet.MyServlet</servlet-class><!--书写servlet的全限定路径(包名加类命)-->
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/s</url-pattern><!-- 配置servlet访问别名 -->
</servlet-mapping>
注意:
- servlet和servlet-mapping要成对出现,
- 下面的servlet-name要统一
- servlet-class里面要写全限定路径包名加类命
启动项目
启动方式一:因为我们之前已经配置好了IDEA集成环境所以直接点击右上方的的绿色三角启动就可以
启动方式二:将web文件夹下面的全部文件拷入tomcat路径下webapps文件夹自己新建的文件夹中。然后回去bin目录启动startup.bat,浏览器访问localhost:8080/新建的文件夹名称。