1.什么是Servlet
Servlet是一种Java程序,它扩展了Web服务器的功能,作为一种服务器端的应用,当被请求时开始
执行。
Servlet是sun公司提供的一门用于开发动态web资源的技术。
Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),
需要完成以下2个步骤:
1、编写一个Java类,实现servlet接口。
2、把开发好的Java类部署到web服务器中。
按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet
2.servlet实现的三种方式,以及他们之间的联系.
实现Servlet接口
继承GenericServlet类
继承HttpServlet类
联系:
1. 实现了Servlet接口的类 属于Servlet规范,可以放在容器中运行
2. GenericServlet.但是
没有重写Service方法.是抽象类,实现了Servlet接口,并重写了Servlet中的init(ServletConfig config)方法
3. HttpServlet继承了GenericServlet类,重写了Service方法,并将Service方法的参数
ServletRequest,ServletResponse强转成HttpServletRequest,HttpServletResponse,并且此处为7中请求
对应的提供7种方法,根据请求的方式调用对应的方法.
3.Servlet生命周期
是指一个Servlet创建、初始化、执行、销毁的过程
1.创建:
编写servlet---->配置web.xml---->部署项目至tomcat----->启动tomcat--->
通过配置来创建:默认(第一次被访问)
2.初始化:
通过Init来初始化Servlet
3.执行
因为父类中对service方法进行了重写,里面调用了doxxx方法,我们只需要在子类中去重写doxxx方法
父类再去调用
3.4销毁
当前服务器进行正常关闭或者重启的时候,Tomcat会调用Servlet实例的 destroy() 方法,
4.简述Get请求和Post请求的区别
0.
HTTP底层是Tcp/Ip,所以GET/POST底层也一样,本质上都是TCP链接,
只不过由于HTTP的规定,和浏览器的限制导致的不同
1.
GET方式传参,参数会显示在地址栏中
POST方式传参,参数不会显示在地址中
2.
GET方式传参,并且参数的长度也会被地址栏的长度而限制
POST方式传参,参数是在请求体中,并且参数长度并没有直接限制
3.
GET产生一个TCP数据包,post产生两个TCP数据包
get:浏览器先发送header,和data给服务器,服务器响应200(返回数据)
post:浏览器先发送header,服务器响应100,浏览器在发送data,服务器响应200(返回数据)
5.跳转和重定向
服务器内部跳转:
1.使用request完成
2.URL不变,跳转的本质是在服务器内部把请求和响应进行转发,转发给下一个指定的资源
3.浏览器做了一次访问请求
4..request.getRequestDispatcher(path).forward(request, response)方法
客户端重定向:
1.使用response完成
2.URL改变,重定向的本质是把新的资源路径返回给浏览器
3.3.浏览器做了至少两次访问请求
4.sendRedirect(path)方法
5.HTTP协议是什么?为什么要使用HTTP协议
超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通
信的规则,通过因特网传送万维网文档的数据传送协议。HTTP是一个应用层协议,由请求和响应构成,
是一个标准的客户端服务器模型。
因为所有的服务器默认状态是用http协议进行信息发布和处理的,虽然web服务器基本都支持SSL
但是由于https服务需要对服务器进行配置,需要特定的证书,就会增加成本。
6.简述HTTP请求的组成
客户端请求:
请求行,request line
消息报头(请求头),request head
请求正文,request body
服务端响应:
状态行
响应报头
响应正文
请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。
可见性:get会将提交的数据显示到url上,页面会被浏览器缓存,
请求参数长度限制:get请求最多1024kb,post没有限制