Servlet & JSP - Servlet API Overview
Servlet & Generic & HttpServlet
类图
Servlet 的生命周期
init、service 和 destroy 是 servlet 的生命周期方法,它们的调用规则如下:
init: 当第一次请求 servlet 时,servlet 容器会调用此方法,而后面即使再接收到请求,容器也不会再调用此方法。因此,可以在 init 方法内做一些初始化的操作。当调用此方法时,容器会传递一个 ServletConfig 参数,可以使用一个类级别的变量将该参数保留。Servlet 不是单例的,但是 servlet 容器对每个 Servlet 类只会构造一个实例。
service: 当接收到请求时,servlet 容器调用此方法。
destory: 当 servlet 被销毁时,容器会调用此方法。这通常是 web 应用从 servlet 容器卸载或者 servlet 容器关闭的时候。可以在 destroy 方法做一些清理操作。
load-on-startup 参数
默认情况下,当 servlet 第一次接收到请求,servlet 容器才会去构造并初始化 servlet 实例。使用 load-on-startup 参数,可以指定容器启动时就加载 servlet。当初始化操作比较复杂,耗时长时,load-on-startup 参数特别有用。load-on-startup 是一个整型的参数,它指定了容器加载 servlet 的顺序。当取值小于 0 或没有指定时,servlet 容器可以选择在任意时候实例化 servlet。当取值大于或等于 0 时,值越小,servlet 容器越优先实例化 servlet。当 load-on-startup 取值一样,servlet 容器自行选择加载 servlet 的顺序。load-on-startup 参数不同通过 @WebServlet 注解指定,而只能 web.xml 中配置:
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>com.huey.hello.servlets.MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
ServletRequest & HttpServletRequest
ServletRequest(HttpServletRequest) 封装了一个(HTTP)请求。下面是 ServletRequest(HttpServletRequest)常用的方法:
getServletContext: 获取 servlet 上下文实例。
getSession: 获取会话实例。
getCookies: 获取 Cookie。
getHeader: 获取 HTTP 请求的首部。类似的方法还有 getIntHeader。还有一些获取特定首部的方法:getContentLength、getContentType 等。
getParameter: 获取表单和 URL 的请求参数。类似的方法还有 getParameterValues、getParameterNames 和 getParameterMap。
getAttribute: 获取请求的属性。
getRemoteAddr: 返回发送请求的客户端或最后一个代理的 IP 地址。
getRemoteHost: 返回发送请求的客户端或最后一个代理的完全限定名称。
getUserPrincipal: 返回当前已经验证过的用户的 java.security.Principal
对象。如果用户没有经过验证,则返回 null。
ServletResponse & HttpServletResponse
ServletResponse(HttpServletResponse) 封装了一个(HTTP)响应。下面是 ServletResponse(HttpServletResponse)常用的方法:
setContentType: 设置响应的内容。
addCookie: 将指定的 cookie 添加至响应。
addHeader: 将指定的首部添加至响应。
ServletConfig
在调用 servlet 的 init 方法时,servlet 容器会传递一个 ServletConfig 对象,ServletConfig 封装了 servlet 的配置信息。有两种方法可以配置 servlet 的初始参数。
在 web.xml 中配置 servlet 的初始参数:
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>com.huey.hello.servlets.MyServlet</servlet-class>
<init-param>
<param-name>user</param-name>
<param-value>huey</param-value>
</init-param>
</servlet>
使用 Servlet3.0,还可以通过 @WebServlet 配置初始参数:
@WebServlet(name = "myServlet", urlPatterns = {"/my"},
initParams = { @WebInitParam(name="user", value="huey")})
public class MyServlet extends HttpServlet {
// ...
}
getInitParameter、getInitParameterNames 等方法可以获取初始参数:
ServletConfig servletConfig = this.getServletConfig();
Enumeration<String> initParamNames = servletConfig.getInitParameterNames();
while (initParamNames.hasMoreElements()) {
String paramName = (String) initParamNames.nextElement();
resp.getWriter().println(paramName + ": " + servletConfig.getInitParameter(paramName));
}
ServletContext
ServletContent 表示的是 servlet 应用,每个 web 应用都只有一个上下文。在分布式环境,一个应用部署在多个容器中,则每个 JVM 有一个 ServletContext 对象。可以通过 servletConfig.getServletContext() 方法获取 ServletContext 对象。下面是 ServletContext 类常用的方法:
getInitParameter: 获取应用的初始参数。初始参数在 web.xml 中 <context-param> 元素指定。类似的方法还有 getInitParameterNames。
getAttribute: 获取应用的属性, 类似的方法还有 getAttributeNames。
setAttribute: 设置应用的属性。
removeAttribute: 删除应用的属性。
getContextPath: 返回 Web 应用程序的上下文路径。
getRealPath(String path): 为给定的虚拟路径返回服务器文件系统上的绝对文件路径。
getResource(String path): 返回指向映射到指定路径的资源的 URL。该路径必须以 "/" 开头,并相对于当前上下文根进行解释。
getResourceAsStream(String path): 类似 getResource,返回的是 InputStream 对象。
Servlet & JSP - Servlet API Overview的更多相关文章
- J2EE总结(2)——Servlet/JSP
Servlet/JSP Servlet定义:部署在java的Webserver上的组件.整个java服务端程序都构建在Servlet之上,以多线程方式提 供服务,具有效率高.可扩展,可移植的特点. J ...
- JSP/Servlet基础语法
相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...
- JSP/Servlet 中的汉字编码问题
JSP/Servlet 中的汉字编码问题 1.问题的起源 每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的 ASCII,中国的 GB2312 -80,日本的 JIS 等,作为该国家/区 ...
- servlet&jsp高级:第三部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Servlet&jsp基础:第一部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Table of Contents - Servlet & JSP
Servlet Servlet API Overview Java Web 访问资源的路径问题 getParameter 与 request.getAttribute 的区别 转发与重定向的区别 中文 ...
- 马士兵Servlet&Jsp学习
Servlet&JSP 1>http常见错误信息: 404--url地址找不找, 403--禁止访问 500--服务器内部错误 2>Servlet的生命周期: *生命全过 ...
- 严重: Servlet.service() for servlet jsp threw exception java.lang.IllegalStateException: getOutputStream() has already been called for this response
严重: Servlet.service() for servlet jsp threw exception java.lang.IllegalStateException: getOutputS ...
- JSP/Servlet(一)
JSP/Servlet(一) Web应用和web.xml文件: 一.构建Web应用: 1.在任意目录下创建一个文件夹. 2.在第1步所建的文件夹内建一个WEB-INF文件夹(注意大小写). 3.进 ...
随机推荐
- srcelement、parentElement
srcElement 是Dom事件中的事件最初指派到的元素. 比如有一个div,里面有一个按钮.你响应div的onclick事件,但实际上,你单击的只是它内部的按钮,那么,srcElement指向的, ...
- Codeforces Round #352 (Div. 2) D. Robin Hood (二分答案)
题目链接:http://codeforces.com/contest/672/problem/D 有n个人,k个操作,每个人有a[i]个物品,每次操作把最富的人那里拿一个物品给最穷的人,问你最后贫富差 ...
- Codeforces Round #349 (Div. 2) D. World Tour (最短路)
题目链接:http://codeforces.com/contest/667/problem/D 给你一个有向图,dis[i][j]表示i到j的最短路,让你求dis[u][i] + dis[i][j] ...
- c++地址对齐
在一些计算机上,由于性能方面的原因,2个字节的变量,必须放在2的倍数的地址中,4个字节的,就必须放在4的倍数中的地址中,以此类推. 也就是说,如果有3个占用两个字节的变量,分别为:A,B,C,如下图: ...
- Servlet 总结
1,什么是Servlet2,Servlet有什么作用3,Servlet的生命周期4,Servlet怎么处理一个请求5,Servlet与JSP有什么区别6,Servlet里的cookie技术7,Serv ...
- MFC实现数独(1)
雨天纷纷扰扰,数月里每日有雨,这个夏天不热,写这个数独的动机很简单:实践是最好的成长方式,想要获得自信,必有这么一遭,我躲不过.至于决定记录成博客,则是因为很久没有写文章,经常感觉脑海里很空白,屡次开 ...
- IOS6 字体高亮显示
ios6之前在一个字符串中如果也让某个字体高亮或者特殊显示(如: 关注[ ]),需要用单独一个的标签进行显示,或者利用CoreText进行字体绘绘制,非常麻烦: 现在IOS6 中TextView,la ...
- notepad++ 输入中文无响应
如果是win7,到用户文件夹 C:\Users\xxxxxxxx\AppData\Roaming\Notepad++ 里面的config.xml 删掉,然后重新打开,应该就可以了, 代价是会删除之前 ...
- iOS开发笔记系列-基础7(C语言特性)
Objective-C是C语言的扩展,因此,也具备很多C语言的基本特性,这里只罗列部分. 块(Blocks) 块是对C语言的一种扩展,它并未作为标准ANSI C所定义的部分,而是Apple添加到语言中 ...
- 几种server模型
TCP測试用客户程序 每次执行客户程序,在命令行參数指定server的ip地址,port,发起连接的子进程数,和一个待发送的字符串数据,客户程序将模拟多个客户依据指定的子进程数创建子进程来并发的连接到 ...