Servlet理论介绍
来源:互联网 发布:在线全职美工怎么样 编辑:程序博客网 时间:2024/06/10 19:23
1、Servlet介绍
Servlet运行在服务器端,是由Web服务器负责加载的,是独立于平台和协议的Java应用程序。JSP改变了Servlet提供HTTP服务时的编程方式,但内部机制上,每一个JSP都被处理成一个Servlet。
Servlet具有跨平台、可移植性强等有点,但并没有被广泛的使用,是因为Servlet的编写需要全面掌握Java程序设计技巧,而且它将页面的显示和功能处理都混杂在一起,不利于系统开发过程的分工和后期的维护。
2、Servlet生命周期
Servlet运行在Servlet容器中,由容器来管理其生命周期。
- 加载和实例化 —- 由Servlet容器实现,加载Servlet之后,容器会通过Java的反射机制来创建Servlet实例;
- 初始化 —- 在Servlet的实例创建之后,容器会调用Servlet的init()方法来初始化该Servlet对象。初始化的目的是让Servlet对象在处理客户端请求前先完成一些初始化工作。对于每个Servlet实例,只会调用一个init()方法;
- 执行 —- 当客户端请求到来后,Servlet容器首先针对该请求创建ServletRequest和ServletResponse两个对象,容器会自动调用Servlet的service()方法来相应客户端请求,同时把SerletRequest和ServletResponse两个对象传递给service()方法。通过ServletRequest对象,Servlet实例可以获得客户端的请求信息,处理完请求后,则将响应信息放置在ServletResponse对象中。最后销毁ServletRequest和ServletResponse对象;
- 清理 —- 当Serlet实例需要从服务中移除时,容器会调用destroy()方法,让该实例释放掉它所使用的资源,并将实例中的数据保存到持久的存储设备中,Servlet实例被Java GC回收。
3、Servlet的常用类和接口
Serlet API包含在两个包中,分别是javax.servlet和javax.serlet.http。在Servlet架构中,Servlet接口是所有类型的Servlet类必须实现的接口,而最典型的Servlet类则是HttpServlet类。
(1)Servlet接口
void init(ServletConfig config) //初始化ServletServletConfig getServletConfig() //获得Servlet的相关配置信息,该方法会返回一个指向ServletConfig的引用java.lang.String getServletInfo() //获得Servlet开发者定义的信息void service(ServletRequest req, ServletResponse res) //该方法用于响应客户端请求void destroy() //清理方法,用于释放资源
(2)GenericServlet抽象类
有两个Servlet类:GenericServlet和HttpServlet类,它们提供了两种基本的Servlet,分别为Servlet方法提供了一种默认的实现模式。
GenericServlet实现了Servlet接口,它是一个抽象类,其包含的service()方法是一个抽象方法。GenericServlet的派生类必须实现service()方法。
(3)HttpServlet抽象类
HttpServlet是所有基于Web的Servlet类的根类。
void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,java.io.IOException //该方法用于处理和响应HTTP POST请求void doGet(HttpServletRequest request, HttpServletResponse response) throw ServletException,java.io.IOException //该方法用于处理和响应HTTP GET请求
除了doGet()方法和doPost方法外,其他类型的HTTP请求如PUT、DELETE等也有对应的处理方法。编写HttpServlet类的关键就是要多doGet()、doPost()方法进行重写,以实现对客户端请求的响应,不能重写service()方法。
(4)ServletRequest接口和ServletResponse接口
ServletRequest接口和ServletResponse接口都在javax,servlet包中定义。
Object getAttribute(String name) //返回属性名为name的属性值,如果该属性不存在则返回NullEnumeration getAttributeNames() //返回请求中所有属性的名字,如果请求中没有任何属性,则返回一个空枚举集合void removeAttribue(String name) //从请求中移除name属性void setAttribute(String name, Object obj) //在请求中保存属性名为name的属性String getCharacterEncoding() //返回请求正文所使用的字符编码名称。如果未指定字符编码,则返回nullint getContentLength() //返回请求正文的长度,以字节为单位。如果长度位置,则返回-1String getContentType() //返回请求正文的MIME类型。如果类型未知,则返回nullServletInputStream getInputStream() //返回一个输入流,使用该输入流可以以二进制的方式来读取正文String getParameter(String name) //返回请求中name参数的值。如果name参数包含多个值,则返回参数列表中的第一个参数。若在请求中未找到该参数,则返回nullEnumeration getParameterNames() //返回请求中包含的所有参数的名字,如果请求中没有参数,则返回一个空枚举集合String[] getParameterValues(String name) //返回请求中nme参数的所有值,如果请求中不存在name参数,则返回nullServletOutStream getOutStream() //返回一个ServletOutStream对象,同来发送对客户端的响应PrintWriter getWriter() //返回PrintWriter类的对象,用来将字符文本发送到客户端void setContentLength(int length) //设置响应数据的长度void setBufferSzie(int size) //设置发送到客户端的数据缓冲区大小
(5)HttpServletRequest接口
HttpServletRequest接口代表了客户端的HTTP请求。
Cookie[] getCookies() //返回由服务器存放在客户端的Cookie数组,常常使用Cookie来区分不同的用户HttpSession getSession() //获取当前的HTTP会话对象HttpSession getSession(boolean create) //获取当前的HTTP会话对象,若不存在则自动创建一个新会话
(6)HttpServletResponse接口
HttpServletResponse接口表示对客户端的HTTP响应
public void addCoookie(Cookie cookie) //向响应的头部加入一个Cookievoid setStatus(int status) //将响应状态码设置为指定值,只用于不产生错误的响应码
(7)HttpSession接口
Servlet会为HttpSession分配一个唯一标识符,即Session ID。Session ID作为Cookie保存在客户端的浏览器中,每当客户发出HTTP请求时,Servlet容器就可以从HttpRequest对象中读取到Session ID,再根据Session ID找到对应的HttpSession对象,进而获取客户端信息。
String getId() //返回Session IDvoid invalidate() //使当前的Session失效,Servlet容器会释放掉HttoSession对象所占用的资源void setAttribute(String name, Object obj) //为name属性这是参数,并保存懂啊HttpSession对象中Object getAttribute(Stirng name) //根据name参数返回保存在HttpSession对象中的属性值Enumeration getAttributeNames() //返回当前HttpSession对象中所有属性名isNew() //判断该Session是否是新创建,如果是新创建的Session则返回true,否则返回false
- Servlet理论介绍
- Java Servlet理论篇
- 粗糙集理论介绍
- 粗糙集理论介绍
- SVM理论部分介绍
- OSPF理论介绍
- VC++ STL理论介绍
- Lasso算法理论介绍
- 六边形架构理论介绍
- 因子分析理论介绍
- 凸优化理论介绍
- SVM理论详细介绍
- Servlet介绍
- Servlet介绍
- Servlet介绍
- servlet介绍
- Servlet 介绍
- Servlet介绍
- vitamio简述
- 私服 Nexus 的配置
- 【Ionic2】Ionic2 Android 打包 Crosswalk报错问题的解决方案
- Java写XML文件
- java读取word文档
- Servlet理论介绍
- 猎头告诉你,他喜欢怎样的简历!
- RecyclerView实现顶部悬浮、字母排序、过滤搜索最优雅的方式
- crypt.2.最大公约数:欧几里得算法
- 文本框监听输入内容变化事件
- MFC 无边框对话框实现点击任务栏图标 还原窗口的功能
- 一点java的学习思路
- iOS之三目运算符和内联复合表达式
- 小米实习生笔试题<风口的猪-中国牛市>Java代码