Servlet基础
1.1. 什么是servlet?
♦官方论:servlet是sun公司制定的一种用于扩展web服务器功能的组件规范
♦个人论:servlet其实就是运行在web服务器的一个web组件。
1.2. 容器与组件
♥组件是什么呢?
==>>符合规范,实现特定功能,并且可以部署在容器上的软件模块。
♥容器是什么呢?
==>>符合规范,为组件提供运行环境,并且管理组件的生命周期(将组件实例化,调用其方法,销毁组件的过程)的软件程序。
♥采用容器与组件这种编程模型的优势:
==>>官方论:容器负责大量的基础服务(包括浏览器与服务器之间的网络通讯、多线程、参数传递等等)。
而组件只需要处理业务逻辑。另外,组件的运行不依赖与特定的容器。
==>>个人论:容器其实就是一个人的生存环境,它提供了最基本的服务,让人得以生存。
而组件其实就是人类,主要负责开拓个中世界。
1.3. 如何写一个servlet???
编写servlet的步骤
⇒step1:写一个java类
servlet只能使用java语言来编写;
实现Servlet接口或者继承HttpServlet抽象类。
⇒step2:编译
⇒step3:打包
建立一个如下的目录结构:
–appname
–WEB-INF
–classes 存放.class文件
–lib 存放.jar文件
–web.xml 部署描述文件
备注:该目录结构可以使用jar命令打成一个.war为后缀的文件
⇒step4:部署
将第三步的整个目录结构或者对应的.war文件拷贝到服务器特定的目录
⇒step5:启动服务器,访问Servlet
http://localhost:8080/appname/servlet的url-pattern配置
1.4. servlet是如何运行的呢?
当用户向浏览器地址栏输入http://ip:port/helloweb/sayHello?name=zs
♣浏览器使用ip:port(端口号)连接服务器
♣浏览器将请求数据按照http协议打成一个数据包(请求数据包)发送给服务器,
请求数据包的内容包含了请求资源路径(/helloweb/sayHello?name=zs),
另外,在请求数据包当中,还会包含浏览器自动生成的一些信息。
♣服务器创建两个对象:请求对象(Request)和响应对象(Response).
服务器解析请求数据包,将解析之后的数据存放到请求对象里面,方便servlet读取请求数据。
(因为servlet不用解析请求数据包,如果要解析,需要理解http协议。)
请求对象是HttpServletRequest接口的一个实现。
响应对象是HttpServletResponse接口的一个实现,响应对象存放servlet处理的结果。
♣依据请求资源路径找到相应的servlet配置,通过反射机制创建servlet实例。然后调用其service()方法。
在调用service()方法时,会将事先创建好的请求对象(request)和响应对象(response)作为参数进行传递。
在servlet内部,可以通过request获得请求数据,或者通过response设置响应数据。
♣服务器从response中获取数据,按照http协议打成一个数据包(响应数据包),发送给浏览器。
♣浏览器会解析响应数据包,取出相应的数据,生成相应的界面。