Web相关

1、什么是Servlet?
处理请求和发送响应,是为了实现动态页面的东西;
是一种运行在支持Java语言的服务器上的组件;
2、Tomcat与Servlet的关系?
Tomcat是一个Servlet的容器;
Tomcat将http请求文本接收并解析,然后封装成HttpServletRequest类型的request对象,所有的HTTP头数据读可以通过request对象调用对应的方法查询到。
Tomcat同时会要响应的信息封装为HttpServletResponse类型的response对象,通过设置response属性就可以控制要输出到浏览器的内容,然后将response交给tomcat,tomcat就会将其变成响应文本的格式发送给浏览器
3、如何实现Servlet?
(1)配置web.xml
(2)手动的方式:
继承HttpServlet,重写doGet与doPost的方法;
4、Servlet的生命周期
(1)加载和实例化
在Servlet容器启动时,或者在请求到来时,创建Servlet实例(若配置filter则在容器初始化时加载和实例化,若未配置则是在请求到来时)
(2)初始化
Servlet对象在实例化之后,容器将调用Servlet的init()初始化这个对象,目的是为了在处理客户端请求之前完成初始化的工作(例如建立数据库的连接,获取配置信息);
(3)请求处理
Servlet容器调用Servlet的service方法队请求进行处理
(4)调用destory方法,释放其资源;
ps:servlet初始化是不会随着请求结束而消失的;
5、servlet中load-on-startup的作用
(1)作用:是否在容器启动时初始化此servlet;
(2)当值为0或者大于0是,表示在容器启动时就会初始化,且值越小表名优先级越高;
(3)当不设置此值或者值为负数时,只有请求到来时才会初始化;
6、filter的介绍
(1)什么是filter?
过滤器,用来预处理请求,或者Servlet生成响应之后filter进行加工处理;
且过滤器是web服务器在调用service方法之前都会调用filter;
生命周期:随着容器启动而初始化;
(2)filter的作用?
在HttpServletRequest到达servlet之前,拦截,并检查,也可以修改请求头和数据;
在HttpServletResponse到达客户端之前,拦截,也可以修改响应头和数据;
ps:filter是无法直接对用户生成响应的;
7、servlet与filter的区别?
(1)servlet是用来处理请求并生成响应的,filter是用来预处理请求以及加工响应
(2)容器启动后servlet只初始化一次,且初始化的时间于load-on-startup参数配置以及是否配置对应的filter有关系,如果配置了对应的filter或者load-on-startup的值为0或者大于零的数那么就会在容器启动时初始化,否则在请求到来时才会初始化;
(3)filter是容器启动时就会初始化,且在每次调用service方法之前,都会先调用filter的dofilter方法;
8、web.xml内容解析
(1)介绍:
https://www.cnblogs.com/jiaguozhilian/p/5819032.html
的作用:用来声明应用范围(整个web项目)内的上下文初始化参数;
首先得知道web容器的启动过程
1)在启动web项目时,容器会读web.xml配置文件中的俩个节点listenner和context-param;
2)接着容器会创建一个ServletContext(上下文),应用的范围是整个web项目;
3)容器读取到context-param并转换为键值对,交给ServletContext;
4)容器创建listener中的实例,即监听;
5)在监听中会有contextInitialized初始化方法,在这方法中获得ServletContext;
context-param的值 = ServletContext.getInitParameter(“context-param的键”);
6)得到context-param的值之后,就可以做一些操作,且此时web项目还未完全启动,整个动作会比servlet初始化还早;即当你修改context-param时,将会在web项目完全启动之前(比如数据库的初始化,想在项目启动之前就打开数据库);
可以配置多个context-param标签,或者多个value值如下

contextConfigLocation
/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml,/WEB-
INF/jason-servlet.xml



(2)配置文件写在servlet的init-param中与context-param中的区别?
init-param中:在容器启动后,初始化servelet时才会被加载到ServletContext中;
context-param中:在web容器还未完全启动时就已经加载完毕;
(3)listener 监听器
https://blog.csdn.net/PNGYUL/article/details/80396859
1)什么是监听器?
监听某个对象的状态变化的组件,事件源对象的状态变化都会触发监听器,可以监听客户端的请求、服务端的操作等;
2)监听器的分类?
第一维度:按照监听的对象分:ServletRequest域、HttpSession域,ServletConetxt域;
第二维度:按照监听的内容分:监听域对象的创建与销毁,监听域对象的属性变化的;
3)listener的应用:在线人数统计、配置日志等
https://blog.csdn.net/qwyc907/article/details/53860721
9、HTTP的八种请求;
HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,具体介绍如下:

OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*'的请求来测试服务器的功能性。
HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
GET:向特定的资源发出请求。
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
PUT:向指定资源位置上传其最新内容。
DELETE:请求服务器删除Request-URI所标识的资源。
TRACE:回显服务器收到的请求,主要用于测试或诊断。

CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

虽然HTTP的请求方式有8种,但是我们在实际应用中常用的也就是get和post,其他请求方式也都可以通过这两种方式间接的来实现。
10、http为何为无状态协议
每次请求都是独立的,它的执行情况与结果与前面的请求和之后的请求是无直接关系的,
他不会受到前面的请求应答的情况的直接影响,也不会直接影响后面的请求应答情况;
http协议作为技术背景的web引用程序 请求–应答模式也是无状态的,且不会因为加入cookie、session而改变;
web应用=http协议 + session、cookie + 其他的辅助机制
ps:web项目整体还是无状态的只是加入session和cookie这些对象才让整个过程变得有状态
Ip:无状态的
TCP:有状态;
UDP:无状态(ip+prot)
http:无状态的
域名:有状态
https://blog.csdn.net/wu1991924/article/details/8548051

11、cookie与session
一、cookie
Cookie是通过客户端记录信息确定用户身份、

	cookie生命周期:
		默认关闭浏览器就会清除、也可以设置时间,若设置时间则关闭浏览器也不会清除,除非超过指定时间
		客户端第一次访问服务器,服务器在response header中返回用户相关信息的cookie,客户端收到后会将其保存在本地
		,下一次请求会在request header中加入这个cookie,服务器收到cookie就知道用户的状态了
	
二、session
	session通过在服务器端记录信息确认用户身份
	session的生命周期:
		客户端第一次访问服务器。服务器会生成一个sessionId赖标识用户并且保存用户信息(服务器有专门保存所有用户
		的sessionID的地方),在response headers中作为cookie的一个值返回,客户端收到后会吧cookie保存在本地,
		下次再发请求时会在request header中带上sessionID,服务器通过查找sessionId就知道用户状态了,并更新sessionID
		最后访问时间,且是可以设置失效时间的;
	关系:session保存在服务端,且依赖于cookie,cookie保存在客户端
三、缓存
	强缓存:直接从本地缓存中取资源,不会和服务器通信,返回http状态码为200
			cache-control;
			expires:表示失效时间;
	协商缓存:通过服务起来告知是否用本地的缓存;      返回http状态码为304
			Last-Modified/if-Modified-Since:资源修改时间
			Etag/If-None-Match:服务器根据被请求的资源生成一个唯一的字符串,只要资源变换,其值就变
	清缓存:只是将css、js页面图片等静态资源清除了,与cookie并无关系

12、web返回状态码
1开头:接受的请求正在处理
2开头:请求成功;
3开头:重定向:需要进行附加操作完成请求
4开头:服务器无法处理请求
5开头:服务器处理请求出错
13、put、get、post区别?
get 获取
post 新建
put 更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值