Servlet技术基础
由于Servlet部分涉及较多的类,要想尽快掌握Servlet基础,必须熟悉使用这些类之间的关系以及其常用的方法。
主要讲解部分包括:
1)通过实现Servelt接口来编写Servlet
2)熟悉ServletRequest/ServletResponse/ServletConfig接口
3)学习GernericServlet/HttpServlet抽象类
4)熟悉HttpServletRequest和HttpServletResponse接口
5)Servlet开发中一些方法和技巧的使用、Servlet异常、Servlet上下文
6)RequestDispatcher对象的使用
7)区分sendRedirect()和forward()方法的使用,即重定向和转发的区别。
1 Servlet API
开发Servlet需要使用的核心类和接口如下图:熟悉接口或者类中的常用方法。

1)Servlet接口
Servlet运行在服务器端的Servlet容器中,具有生命周期:
该接口中定义了5个方法:
public abstract void init(ServletConfig servletconfig)throws ServletException;
public abstract ServletConfig getServletConfig();
public abstract void service(ServletRequest servletrequest, ServletResponse servletresponse)throws ServletException, IOException;
public abstract String getServletInfo();
public abstract void destroy();
下面分别介绍这五个方法的主要作用:
init()方法:
在Servlet实例化之后,Servlet容器会调用Init()方法,来初始化该对象,主要是为了让Servlet对象在处理客户请求前可以完成一些初始化工作。比如说建立数据库连接、获取配置信息等,对于每一个Servlet实例,init()方法只能被调用一次,init()方法有一个类型为ServletConfig的参数,Servlet容器通过这个参数向Servlet传递配置信息。Servlet使用ServletConfig对象从web应用程序的配置信息中(web.xml中Servlet标签内配置的参数)获取以名-值对形式提供的初始化参数。另外,在Servlet中,还可以通过ServletConfig对象获取描述Servlet运行环境的ServletContext对象,使用该对象,Servlet可以和其他的Servlet容器进行通信,共享一些信息。
service()方法:
容器调用service()方法来处理客户端的请求,注意:在service()调用之前,必须确保init()方法正确完成。容器会构造一个表示客户端请求信息的请求对象ServletRequest和一个用于对客户端进行响应的响应对象ServletResponse作为参数传递给service()方法。在service()方法中通过ServletRequest得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。
getServletConfig()方法:
该方法返回容器调用init()方法时传递给Servlet对象的ServletConfig对象,ServletConfig对象包含Servlet的初始化参数。
destroy()方法:
当容器检测到一个Servlet对象应该从服务中被移除时,容器会调用该Servlet对象的destroy()方法,以便让Servlet对象可以释放它所使用的资源,保存数据到持久化存储设备中。在Servlet容器调用destroy()方法前,如果还有其他的线程正在执行service()方法,容器会等待这些线程执行完毕或者等待服务器设定的超时值到达。一旦Servlet对象的destroy()方法被调用,容器不会再把其他的请求发送给该对象,如果需要该Servlet对象再次服务,容器将会重新产生一个Servlet对象来处理客户端的请求。在destroy()方法调用之后,容器会释放这个Servlet对象,在随后的时间内,该对象会被java的垃圾回收器回收。(一旦执行此方法,该对象就不能再使用了)
2)ServletRequest和ServletResponse接口
Servlet由Servlet容器来管理,当客户端请求到来时,容器会创建一个ServletRequest对象,并封装请求数据,同时创建一个ServletResponse对象,封装响应数据。这两个对象被容器作为service()方法的参数传递给Servlet,Servlet利用ServletRequest对象获取客户端发来的请求数据,利用ServletResponse对象发送响应数据。
ServletRequest常用的方法:
public abstract Object getAttribute(String s);
public abstract Enumeration getAttributeNames();
public abstract String getCharacterEncoding();
public abstract void setCharacterEncoding(String s)throws UnsupportedEncodingException;
public abstract int getContentLength();
public abstract String getContentType();
public abstract ServletInputStream getInputStream()throws IOException;
public abstract String getParameter(String s);
public abstract Enumeration getParameterNames();
public abstract String[] getParameterValues(String s);
public abstract String getProtocol();
public abstract String getServerName();
public abstract int getServerPort();
public abstract BufferedReader getReader()throws IOException;
public abstract String getRemoteAddr();
public abstract String getRemoteHost();
public abstract void setAttribute(String s, Object obj);
public abstract void removeAttribute(String s);
public abstract RequestDispatcher getRequestDispatcher(String s);
public abstract int getRemotePort();
public abstract String getLocalName();
public abstract String getLocalAddr();
public abstract int getLocalPort();
public abstract ServletContext getServletContext();
ServletResponse常用的方法:
3)ServletConfig接口
注意:一个Servlet只有一个ServletConfig对象
方法:
public abstract String getServletName();
public abstract ServletContext getServletContext(); //返回Servlet上下文的引用,ServletContext将在后面详细介绍
public abstract String getInitParameter(String s); //初始化参数在web.xml文件中进行配置,如果不存在返回null
public abstract Enumeration getInitParameterNames();
Servlet技术基础的更多相关文章
- Java Web之Servlet技术
1.Servlet基础 针对Servlet技术开发,Sun公司提供了一些列接口和类,其中最重要的是javax.servlet.Servlet接口,两个重要的包是javax.servlet和javax. ...
- Java Servlet 技术简介
Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么 ...
- JavaWeb开发技术基础概念回顾篇
JavaWeb开发技术基础概念回顾篇 第一章 动态网页开发技术概述 1.JSP技术:JSP是Java Server Page的缩写,指的是基于Java服务器端动态网页. 2.JSP的运行原理:当用户第 ...
- JSP+JavaBean+Servlet技术(MVC模型)
一,Servlet开发用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这种 ...
- JavaWeb:Servlet技术
JavaWeb:Servlet技术 快速开始 Servlet是什么 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 ...
- JSP Web第四章整理复习 JSP技术基础
P104 JSP简介 (1)基本概念:jsp技术.jsp.jsp网页组成 JSP技术基础java servlet和整个java体系的Web服务器端开发技术. JSP表示它是用java写的Web服务页面 ...
- Java Web程序设计笔记 • 【第5章 Servlet技术】
全部章节 >>>> 本章目录 5.1 Servlet 技术介绍 5.1.1 为什么需要Servlet 5.1.1 Servlet 简介 5.1.2 Java Web 处理流 ...
- JNI技术基础(2)——从零开始编写JNI代码
书接上文: <JNI技术基础(1)——从零开始编写JNI代码> 2.编译源程序HelloWorld.java并生成HelloWorld.class 3.生成头文件HelloWorld.h ...
- Web---演示servlet技术(servlet生命周期),解决中文乱码问题
本节讲解决中文乱码问题的4种方法. 还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼♪(^∇^*)~过段时间才会学. servlet生命周期演示: index.jsp: <%@ ...
随机推荐
- 20145105 《Java程序设计》第1周学习总结
20145105 <Java程序设计>第1周学习总结 教材学习内容总结 学习了教材的第一章后,我初步了解了Java的发展历程,以及什么是JCP,JSR,JVM.JCP是一个开放性国际组织, ...
- 20135320赵瀚青LINUX第八周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周学习的是linux ...
- HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解
思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...
- kylin构建cube优化
前言 下面通过对kylin构建cube流程的分析来介绍cube优化思路. 创建hive中间表 kylin会在cube构建的第一步先构建一张hive的中间表,该表关联了所有的事实表和维度表,也就是一张宽 ...
- KMP&拓展KMP
KMP算法 说明 KMP算法是一种比较高效的字符串匹配算法,可以在线性时间内求出一个串在另一个串的所有匹配位置. 解析 详解KMP 设模板串是 \(pattern\) 令 \(next[i] = ma ...
- UVa 11825 黑客的攻击(状态压缩dp)
https://vjudge.net/problem/UVA-11825 题意: 假设你是一个黑客,侵入了一个有着n台计算机(编号为0,1,...,n-1)的网络.一共有n种服务,每台计算机都运行着所 ...
- 最近公共祖先问题 LCA
2018-03-10 18:04:55 在图论和计算机科学中,最近公共祖先,LCA(Lowest Common Ancestor)是指在一个树或者有向无环图中同时拥有v和w作为后代的最深的节点. 计算 ...
- C#通过WMI读取MAC地址
该方法依赖WMI的系统服务,该服务一般不会被关闭;但如果系统服务缺失或者出现问题,该方法无法取得MAC地址,需要重启Windows Management Instrumentation服务. publ ...
- Android之Glide(非常好用的图片加载框架)
谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech. Glide是一种快速.高效的开源媒体管理和Android的包裹mediadecoding图像加载框架,内 ...
- python爬虫脚本下载YouTube视频
python爬虫脚本下载YouTube视频 爬虫 python YouTube视频 工作环境: python 2.7.13 pip lxml, 安装 pip install lxml,主要用xpath ...