第十次的记录,哟吼

第十次的记录,哟吼
今天想记录一下自己学的servlet,不管有没有用,学习都是给自己的,自己学到了就好了
servlet我一直不太明白是个什么东西,现在觉得servlet是一个解决请求和响应方式的一个东西吧。但是个人认为还是很重要的,今天先记录一下自己的理解,以后时间长了有新的理解再改一改,再补一补。
说道servlet就觉得他很厉害,感觉他传奇了一串的东西。比如说一个servlet的执行过程。
在这里插入图片描述
我们正常想要浏览网页就先要倒开浏览器,之后选择一个网页,但是每个网页都有一个网页地址嘛,这时候就是从客户端传过来的一个路径。

第一步
1.首先浏览器通过http协议想服务器传送一个路径,这里面提到了http协议,http协议就是规定请求和响应的数据格式的(a.规定了客户端和 服务端交流时的数据格式)。
特点:
1. 请求和响应都由三部分组成
请求信息(3部分组成):
1)请求行 (由3部分组成)
a) 请求的方式
b) 请求的资源地址
c) 请求协议
2)请求头信息(2部分组成)
a) 头名称
b) 头值
3)请求正文 (只有请求的类型是post才会有)
响应信息:(3部分组成)
1)响应行(由3部分组成)
a)响应协议
b)状态吗
c)状态信息
2) 响应头信息(2部分):
a): 响应头
b): 头值
3) 响应正文.
在这里插入图片描述
还有两种请求方式get和post这两个的区别就是
1. get方式请求参数会附加在url后,而post是看不到的,post相对安全
2. get方式对提交的数据大小有限制(1k),post方式对数据大小没有限制.

MIME类型,这个东西可以查一下

第二步
之后将后面的工程路径传到tomcat中,tomcat是一个容器,并且是apache公司产品支持JavaEE规范,免费(实现了什么样的规范,就称为什么样的容器)。
tomcat目录:
在这里插入图片描述
webapp里面有个WEB-INF文件
WEB-INF : 文件夹(必须大写,不是必须的,当有动态的资源的时候,此文件夹必须写上) :下面的资源不允许浏览器直接访问,里面的资源是提供给服务器来访问的,我们可以间接的去访问.
这个文件夹里面有很多文件
web.xml:你的Web应用程序配置文件,这是一个XML文件,其中描述了 servlet 和其他的应用组件配置及命名规则。
classes:这个目录包含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中。 站点的类的
存放规则应该按照Java的打包规则执行。例如:有一个类命名为com.mycompany.mypackage.MyServlet,你应该按照以
下形式部署: /WEB-INF/classes/com /mycompany/mypackage/MyServlet.class;
按照包名结构放置各个类(JavaBean和Servlet)。
lib:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件 。
src:src=source 源码目录,按照包名结构放置各个java文件 。
database.properties:数据库配置文件 。
tags:标签文件库,存放了客户定义的标签文件,该目录并不一定为 tags,用户可以根据自己的喜好和习惯为自己的标签文件库命
名,当使用了用户定义的标签文件库名称时,在用户使用标签文件时就必须声明正确的标签文件库路径。例如:当自定义标签
文件库名称为simpleTags时,在使用simpleTags目录下的标签文件时,就必须在jsp文件头声明为:
<%@ taglib prefix=“tags” tagdir="/WEB-INF /simpleTags" % >;
META-INF:相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和
服务 manifest.mf文件,在用jar打包时自动生成
第三步
分析url:分析工程路径之后找到web.xml对应的标签中的参数根据对应的name找到路径就OK了。
第四部
找到对应的servlet的类,创建对象,调用service方法,所以说service可能是一个写逻辑的好地方。
总结:这四部做完就是一个request请求的过程。
第五步
执行servlet完毕之后传回去tomcat中。
第六步
根据http协议返回给浏览器
总结:最后两步是一个response响应的一个过程。

	第四步中提到了调用service方法:
	想到了service的生命周期:
		1.加载Servlet。当Tomcat第一次访问Servlet的时候,Tomcat会负责创建Servlet的实例
		2.初始化。当Servlet被实例化后,Tomcat会调用init()方法初始化这个对象
		3.处理服务。当浏览器访问Servlet的时候,Servlet 会调用service()方法处理请求
		4.销毁。当Tomcat关闭时或者检测到Servlet要从Tomcat删除的时候会自动调用destroy()方法,让该实例释放掉所占的资源。一个Servlet如果长时间不被
		   使用的话,也会被Tomcat自动销毁。
		5.卸载。当Servlet调用完destroy()方法后,等待垃圾回收。如果有需要再次使用这个Servlet,会重新调用init()方法进行初始化操作。
		简单总结:只要访问Servlet,service()就会被调用。init()只有第一次访问Servlet的时候才会被调用。 destroy()只有在Tomcat关闭的时候才会被调用。

servlet的实现方式:
实现Servlet有三种方式:
1.实现 javax.servlet.Servlet 接口;
2.继承 javax.servlet.GenericServlet类;
3.继承 javax.servlet.http.HttpServlet类;

servlet的小特点(servlet是单例的)
他是一个单例多线程的对象。浏览器多次对Servlet的请求,一般情况下,服务器只创建一个Servlet对象,
也就是说,Servlet对象一旦创建了,就会驻留在内存中,为后续的请求做服务,直到服务器关闭。
每次访问请求对象和响应对象都是新的
对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,
然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。
在web访问任何资源都是在访问Servlet
当你启动Tomcat,你在网址上输入http://localhost:8080。为什么会出现Tomcat小猫的页面?这是由缺省Servlet为你服务的!
比如:

default
/

总结:
无论在web中访问什么资源【包括JSP】,都是在访问Servlet。没有手工配置缺省Servlet的时候,你访问静态图片,静态网页,
缺省Servlet会在你web站点中寻找该图片或网页,如果有就返回给浏览器,没有就报404错误。

Servletconfig对象
作用:通过此对象可以读取web.xml中配置的初始化参数。
把参数信息放到web.xml的好处:能够让你的程序更加灵活,更换需求,更改配置文件web.xml即可,程序代码不用改。
另一方面,我们可以在Servlet中获取ServletConfig对象,通过ServletConfig对象获取在web.xml文件配置的参数 。
Servletcontext对象
当Tomcat启动的时候,就会创建一个ServletContext对象。它代表着当前web站点,每个web工程都会对应一个ServletContext
对象。
作用:
1.ServletContext代表着当前web站点,那么所有Servlet都共享着一个ServletContext对象,所以Servlet之间可以
通过ServletContext实现通讯。
2.ServletConfig获取的是配置的是单个Servlet的参数信息,ServletContext可以获取的是配置整个web站点的参数信息。
3.利用ServletContext读取web站点的资源文件。
4.实现Servlet的转发【用ServletContext转发不多,主要用request转发】。
ServletContext对象可以被称之为域对象(域对象可以简单理解成一个容器,类似map集合)
实现Servlet之间通讯就要用到ServletContext的setAttribute(String name,Object obj)方法, 第一个参数是关键字,
第二个参数是你要存储的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值