init()方法被GenericServlet.init(ServletConfig config)方法调用。
init()方法方便了开发人员定制Servlet的初始化,而无须去维护ServletConfig对象的存储工作。
重写GenericServlet.init(ServletConfig config)必须要显示的调用super.init(config)方法。
返回同一Server中指定的path对应的ServletContext对象,通过该对象可以实现与Server中的其他Context打交道。
uripath必须是以"/"开始(该路径的含义是相对于整个Servlet文档的根路径,而不是当前ServletContext的根路径)。
一般的Servlet(GenericServlet,即与协议无关的Servlet)的生命周期:init() --> GenericServlet.service(ServletRequest req, ServletResponse res) --> destroy.
HttpServlet的生命周期: init() --> GenericServlet.service(ServletRequest req, ServletResponse res)---> service(HttpServletRequest req, HttpServletResponse resp) --> doXXXX()-->destroy.
对于HttpServlet来说没有必要。只需要重写它的doXXXX()方法就可以了。HttpServlet中service()方法会自动的根据用户请求类型把请求转发给相应的doXXXX()方法(例如doGet()方法)。
注意两个方法不能同时使用。
请使用ServletContext.getRealPath(String path)方法。
ServletResponse缺省的字符集(charset)是ISO-8859-1,可以通过setContentType(java.lang.String)方法改变新的字符集。
例如:setContentType("text/html; charset=Shift_JIS").
关于字符集信息,可以浏览RFC 2045
request.getRequestURI() 返回值类似:/xuejava/requestdemo.jsp
request.getRequestURL() 返回值类似:http://localhost:8080/xuejava/requestdemo.jsp
当用URL-rewriting方式来管理Session的时候,需要用到以上的两个方法。
两个方法的不同点是:两个方法确定是否需要包含session ID的逻辑不同。
在调用HttpServletResponse.sendRedirect前,应该先调用encodeRedirectURL()方法,否则可能会丢失Sesssion信息。 ...
对于Servlet实现javax.single.SingleThreadModel接口。
对于JSP,在Page Directive中写如下的语句<!--page isThreadSafe="false"-->
...
实现方法: <!--page isErrorPage="true"-->
为什么? 因为需要获取Exception 对象(缺省情况下,在JSP Page中是不能直接使用“隐含对象” exception的)。
JSP Page的执行顺序如下:
JSP Page Translation. JSP Page --> Servlet source code. JSP Page Compilation. Servlet source code --> Servlet class. Load Class(First time or the server restarted) Create instance(可能会很多次,如果JSP Page中声明了<!--page isThreadSafe="false"-->) Call jspInit method(一般的JSP Page都没有重写这个方法,重写需要在声明语句段中)。 Call _jspService method(类似与一般HttpServlet的doGet和doPost方法,但是可以同时用来处理Post和Getq请求)。 Call jspDestroy method(Server在卸载Servet的时候,例如当Servlet很久没有使用的情况)。
request -- reponse -- session -- application -- out -- page -- pagecontext -- exception -- 只有在当前JSP Page为Error Page的时候才有效。 config --
<@ include ... -- Page translation time.
Standalone Tomcat standalone modeIn-process Tomcat running inside Apache Web Server.Out-of-process Apache + mod_jk + Tomcat
Servlet,Servlet开发人员 --->Servlet API --> Servlet Container
Message part Description The initial line: Specifies the purpose of the request or response message 例子:GET /reports/sales/index.html HTTP/1.0 The header section:Specifies the meta-information, such as size, type, and encoding, about the content of the message A blank line: An optional message body: The main content of the request or response message下面是一个Response的例子:
HTTP/1.0 200 OK Date: Tue, 01 Dec 2001 23:59:59 GMT Content-Type: text/html Content-Length: 52Hello, John!
GET HEAD POST
从 Http 1.1规范开始,增加了以下的方法:
PUT OPTIONS TRACE DELETE CONNECT
根据HTTP协议规范,Request 和 Response一样也有这些必不可少的内容!
所以需要首先了解 HTTP Message的概念和其内容的格式,这些东西对于Request和Reponse是一样的。
对于GET方式发送的请求,其内容类型为:null
对于POST方式发送的请求,其内容类型为:application/x-www-form-urlencodedPOST方式发送请求的内容类似于:username=xuejava.
RequestDispatcher.forward()是在服务器端运行;HttpServletResponse.sendRedirect()是通过向客户浏览器发送命令来完成。
所以RequestDispatcher.forward()对于浏览器来说是“透明的”;而HttpServletResponse.sendRedirect()则不是。
另外,还要注意RequestDispatcher.forward()在调用的时候Response不能已经Commit了(Response.isCommitted())。
ServletContext.getRequestDispatcher(String url)中的url只能使用绝对路径;而ServletRequest.getRequestDispatcher(String url)中的url可以使用相对路径。
因为ServletRequest具有相对路径的概念;而ServletContext对象无次概念。
ServletContext.getRequestDispatcher(String url)和ServletRequest.getRequestDispatcher(String url)只能把请求转移到同一个Web App中的地址。
如果需要把请求转移到另外一个Web App中的某个地址,可以按下面的做法:
1. 获得另外一个Web App的ServletConext对象(currentServletContext.getContext(uripath)).
2. 调用ServletContext.getRequestDispatcher(String url)方法。
相关推荐
Java开发指南-Servlets和JSP篇下载 Java开发指南-Servlets和JSP篇下载
head first servlets&jsp;(第二版)并没有给你一大堆需要死记硬背的条条框框;它能将知识直接送入你的大脑。你会通过不寻常的方式同servlet和jsp打交道,可以学得更深入、更快捷。读完全书后,你会看到一个全新的...
Java开发指南--Servlets和JSP篇
软件介绍 Java开发指南--Servlets和JSP篇(PDG)
Java开发指南-Servlets和JSP篇(PDG) 注意:pdg格式
Servlets和JSP开发原则.pdf
JSP、Servlets与MySQL开发指南.rar
下载积分是CSDN默认的,我没有选择的权力,啊啊啊 Head First Servlets and JSP 中文版 第2版 PDF电子书下载 带书签目录 完整版
Bill Brogden的Java Developer's Guide to Servlets and JSP,翻译成汉语了,电子书格式,内容全面,Servlets API和 JSP API例子实用,很好的参考资料。
Head First Servlets and JSP(中文版) 第三部分(共三部分) 在我的资源下可找到其他两部部分 目录 引子 1 为什么使用Servlets&JSP;:前言与概述 2 Web应用体系结构:高层概述 3 MVC迷你教程:MVC实战 4 ...
Head First Servlets&JSP;-第2版-高清扫描版-带详细书签 高清扫描版,书签比较详细,和目录一样
了解一些servlet和jsp的开发原则,可以为成为一个懂得开发规范的程序员做准备。
个人的Head First Servlets & JSP (SCWCD)读书及学习笔记
Head First Servlets and JSP PDF
Head First Servlets and JSP(中文版) 第二部分(共三部分) 在我的资源下可找到其他两部部分 目录 引子 1 为什么使用Servlets&JSP;:前言与概述 2 Web应用体系结构:高层概述 3 MVC迷你教程:MVC实战 4 ...
深入浅出Servlets&JSP,感兴趣的人看一下吧
你将能很好地掌握Servlet和JSP,顺利通过Sun认证Web组件开发人 员(SCWCD)考试。也许你并不在乎考试,而是要在下一个项目里实际使用Servlet和JSP。你要对付最后期限,而且时间不多了。此时要选精心研读一本书而成为...
Head First Servlets and JSP, 2nd Edition 英文版 第2版
Murach's Java Servlets and JSP 2nd Edition 源代码