一、javax.servlet.ServletConfig接口
javax.servlet.ServletConfig接口是servlet的配置对象,这个servlet的配置对象被servlet容器用来在初始化时传递信息给servlet。该接口能够传递的信息可以从该接口定义的方法中看到:
- public String getServletName()——该方法返回servlet实例的名称。这个名称可以通过分配在web应用部署描述符中的服务器管理来提供。而对于没有注册的servlet实例来说,servlet的名称则是servlet的类名。
-
public ServletContext getServletContext()
——该方法返回调用者正在实际执行的ServletContext对象的引用。
- public String getInitParameter(String name)——该方法通过传递过来的参数名称获得初始化参数中该名称的值,如果该初始化参数不存在,则返回null。
- public Enumeration getInitParameterNames()——该方法返回servlet初始化参数的名称列表,这个名称列表是一个String对象的Enumeration类。如果servlet没有初始化参数,则返回一个空的Enumeration类。
二、javax.servlet.ServletContext接口
javax.servlet.ServletContext接口定义了一系列servlet用来和它的servlet容器进行沟通的方法,比如,获得一个文件的MIME类型,分派请求或者编写一个log文件。
在这里,是一个context对应每个JVM每个web应用(一个web应用是一批servlet和安装在指定服务器的URL命名空间下的子集的内容,比如/catalog,以及通过.war文件安装的内容)
而在一个web应用在它的部署描述符中被标记为"分布式的"的情况下,则每个虚拟机会有一个context实例。在这种情况下,context不能作为一个共享全局信息的位置(因为这些信息不可能为全局的)。这个时候就要使用外部资源代替了比如使用数据库代替。
ServletContext对象包含在ServletConfig对象中,ServletConfig对象在servlet被初始化时,由web服务器生成的servlet提供。
该接口的方法如下所示:
-
public String getContextPath()
——返回web应用的上下文(context)路径。
这个context路径是请求的URI的一部分,这个URI使用来选择请求的context。这个context路径通常来自第一个请求的URI。这个路径以"/"字符开头,但是不会以”/“字符结尾。对于在默认的(根)的context中servlet来说这个方法返回的是""。
有可能的情况是,servlet容器有可能是多于一个context路径可以匹配一个context。在这种情况下,javax.servlet.http.HttpServletRequest.getContextPath()方法会返回被这个请求使用的实际的context路径,而这个方法返回的路径有可能和实际的context路径有点不同。这个方法返回的context路径最好被认为是应用最主要的或者是优先的context路径。
-
public ServletContext getContext(String uripath)
——返回一个与所在服务器上的指定的URL相关联的ServletContext对象。
这个方法允许servlet获得访问服务器各个部分的context的权限,并且在需要的时候从context中获得RequestDispatcher 对象。给定的路径必须是以”/“开头的,它是相对于服务器的文档的根路径来说的,并且匹配在这个容器上的其他web应用的contexxt的根。
在一个有安全意识的环境中,servlet容器可能会对给定的URL返回null。
- public int getMajorVersion()——返回这个servlet容器支持的Java Servlet API的主版本号。所有符合2.5版本的实现中,这个方法必须返回整数2。
- public int getMinorVersion()——返回这个servlet容器支持的Java Servlet API的小版本号。所有符合2.5版本的实现中,这个方法必须返回整数5。
-
public String getMimeType(String file)
——返回指定文件的MIME类型,如果不知道这个文件的MIME类型则返回null。MIME类型是由servlet容器的配置决定的。并且有可能是在web应用中的部署描述中指定的。一般MIME类型会是"text/html" 和"image/gif"。
-
public Set getResourcePaths(String path)
——返回一个类似于目录的在web引用中所有资源的路径的列表。这些web应用中最长的子路径匹配传进来的path参数。路径表明是以一个'/'结束的子目录路径。返回的路径是相对于web应用程序的根路径的,并且以’/‘开头的。比如,如果一个web应用包含了:
/welcome.html
/catalog/index.html
/catalog/products.html
/catalog/offers/books.html
/catalog/offers/music.html
/customer/login.jsp
/WEB-INF/web.xml
/WEB-INF/classes/com.acme.OrderServlet.class,
getResourcePaths("/")则返回{"/welcome.html", "/catalog/", "/customer/", "/WEB-INF/"}
getResourcePaths("/catalog/") 返回{"/catalog/index.html", "/catalog/products.html", "/catalog/offers/"}.
-
public URL getResource(String path) throws MalformedURLException
——返回与指定的路径相对应的资源的URL。这个路径必须以'/'开头,并且是相对于当前context根路径的。
这个方法允许servlet容器标记一个资源对于任意源servlet是否可用。资源可以是在本地或者远程文件系统中的,比如在数据库中或者是.war文件中的。
servlet必须实现URL处理器和URLConnection对象。这些URL处理器和URLConnection对象必须可以访问资源的。
如果没有资源和给定的pathname相对应,则这个方法返回null。
某些容器可能允许通过URL类的方法编写这个方法返回的URL。
资源的内容会被直接返回,因此一旦请求一个a.jsp页面,则返回JSP的源代码。使用一个RequestDispatcher来包含执行的结果。
这个方法和java.lang.Class.getResource()方法相比有不同的目的。java.lang.Class.getResource()方法是在类加载器中查找资源,而这个方法却不使用类加载器。
-
public InputStream getResourceAsStream(String path)
——将位于指定路径的资源作为一个InputStream对象来返回。
在InputStream对象中的数据可以是任意长度或者类型的。这个路径必须根据在getResource()方法中的规则来指定。如果在指定的路径中没有资源存在则返回null。
通过getResource()方法得到的可用的Meta信息(比如content length和content type)使用getResourceAsStream(String path)方法时,这些Meta信息是丢失的。
servlet必须实现URL处理器和URLConnection对象。这些URL处理器和URLConnection对象必须可以访问资源的。
这个方法和java.lang.Class.getResourceAsStream方法不同,java.lang.Class.getResourceAsStream使用了类加载器。而这个方法允许servlet容器标记对于任何位置的servlet来说这个资源是否可用,并且不使用类加载器。
-
public RequestDispatcher getRequestDispatcher(String path)
——返回一个位于指定路径的作为资源包装器的RequestDispatcher对象。一个RequestDispatcher可以被用来将一个请求转发给一个资源或者在reponse中包含这个资源。这个资源可以是动态或者静态的:
路径名必须以'/'开头,并且是相对于当前context的根路径的。使用getContext方法获得外部context的资源的RequestDispatcher。如果ServletContext无法返回一个RequestDispatcher则返回null。
- public RequestDispatcher getNamedDispatcher(String name)——返回已经给定名称的servlet的作为封装器的RequestDispatcher对象。
Servlets (JSP页面也一样)可能通过服务管理器或者通过web应用的部署描述被命名。一个servlet实例可以使用ServletConfig.getServletName()方法来决定这个servlet的名称。
如果ServletContext因为任何原因而无法返回RequestDispatcher则这个方法返回null。
-
public String getRealPath(String path)
——返回一个包含了给定的虚拟路径的绝对路径的字符串。比如,通过请求http://host/contextPath/index.html,会返回路径"/index.html"在服务器文件系统上的绝对文件路径。而这个contextPath则是ServletContext中的context路径。
返回的绝对路径会以适合这个servlet正在运行的计算机和操作系统的格式来返回,并且包含了合适的路径分隔符。如果servlet容器因为任何原因(比如当内容正在被生成一个.war文件时)无法传输虚拟路径到真实路径,则这个方法返回null。
- public String getServerInfo()——返回servlet正在运行的servlet容器的名称和版本号。
返回的string格式是“服务器名/版本号”。比如JavaServer Web Development Kit可能返回的string是“JavaServer Web Dev Kit/1.0”。
servlet容器可能在主要的string之后在圆括号中返回其他可选的信息。比如,JavaServer Web Dev Kit/1.0 (JDK 1.1.6; Windows NT 4.0 x86)。
- public String getInitParameter(String name)——返回一个根据给定的名称的context范围的初始化参数对应的值,如果这个给定名称的参数不存在,则返回null。
这个方法对于条目“web application”可以配置有用的信息。比如它可以提供一个网站管理员的email地址或者系统临时保持住的数据的名称。
-
public Object getAttribute(String name)
——通过给定的名称获得servlet容器中的属性,如果这个给定名称在servlet容器中没有对应的属性值,则返回null。属性允许servlet容器给servelt增加额外的不是由这个接口提供的信息。可以查看你的服务器文档中有关于它的属性的信息。可以通过getAttributeNames()方法获得它所支持的属性列表。
这个属性返回的是java.lang.Object或者是它的子类对象。属性名称最好遵循一些约定,比如包名。java servlet 的api规范预留的名称匹配java.*,javax.*以及sun.*。
-
public Enumeration getAttributeNames()
——返回包含了在这个servlet context中的属性名的枚举列表。使用getAttribute方法以及一个给定的属性名可以获得这个属性的值。
-
public void setAttribute(String name, Object object)
——在servlet context中给一个指定的属性名绑定对象。如果指定的属性已经存在,则会给这个属性设置新的属性值。
如果在ServletContext中配置了监听器,则容器会相应的提醒它们。
如果传过来的值是null,则调用这个方法的效果则是相当于调用removeAttribute()。
属性名最好遵循包名的规定。Java Servlet API的规范预留的名称匹配java.*,javax.*以及sun.*。
- public String getServletContextName()——返回和在部署描述符中对应的web应用的名称。在web应用的部署描述符是通过display-name元素描述的。
三、javax.servlet.RequestDispatcher接口
定义一个接受客户端请求的对象,并且将这些请求发送给服务器上的任意资源(比如一个servelt,HTML文件或者JSP文件)。servlet容器创造了RequestDispatcher对象,这个对象被用来包装位于指定路径或者指定名称的服务器资源。
这个接口是打算作为wrap servlet的,但是一个servlet容器可以创造一个RequestDispatcher对象来包装任意类型的资源。
定义的方法如下所示:
-
public void forward(ServletRequest request, ServletResponse response)throws ServletException, IOException
——转发一个servlet的请求给服务器上另外的资源(servlet,JSP文件或者HTML文件)。这个方法允许一个servlet对一个请求和资源做预处理,并且生成响应(response)。
作为通过getRequestDispatcher()方法获得的RequestDispatcher对象而言,ServletRequest对象有它自己的路径元素和调整的参数来匹配目标资源的路径。
forward()方法在被调用之前必须将response委托给客户端(在resopnse body输出被刷新之前)。如果response已经被委托了,则forward()方法会抛出IllegalStateException的异常。在response缓存中没有被委托的输出会被forward之前被自动清空。
请求和response参数必须要么是同一个对象作为传递到调用的servelt的service方法的参数,要么是ServletRequestWrapper类的子类或者封装了它们的ServletResponseWrapper类。
-
public void include(ServletRequest request, ServletResponse response)
throws ServletException, IOException
——包含了response中的资源(servlet,JSP页面,HTML文件)的内容。实际上,这个方法开启了编程性的服务端包含。
ServletResponse对象有它自己的路径元素和依然没有调用者修改的参数。被包含的servlet无法修改response的status code或者设置header,任何尝试的修改都会被忽略。
请求和response参数必须要么是同一个对象作为传递到调用的servelt的service方法的参数,要么是ServletRequestWrapper类的子类或者封装了它们的ServletResponseWrapper类。
分享到:
相关推荐
Java Servlet 学习课件 Java Servlet 学习课件
java Servlet 学习笔记分享很详细
Servlet学习笔记(java的Servlet)。 jsp的学习基础。此笔记可让你5天内学会使用Servlet,可快速入门,也可当手册使用。 更多:http://download.csdn.net/user/daillo/all
java servlet 中文说明手册,适合新手学习java servlet
深入学习:Java Servlet开发与实例,是java从业者的必备资料
JavaServlet学习资料汇总,对于初学者很有帮助的
学习java servlet jsp jdk的所有帮助
Java Servlet Api文档,希望能给大家的学习工作带来帮助!
这是java servlet的帮助文档,又称API文档。对于学习其中的函数说明与定义很重要。
详细的讲解了javaservlet的知识 助你进步 javaservlet javaservlet javaservlet
非常实用的java web (servlet, jsp) 例子 (非常适合java web初学者)。 该例子麻雀虽小,五庄俱全,非常适合初学java web的初学者,通过该例子的学习可以很快地入门。 积分给得可能高了一下,但是,第一绝对物有所...
servlet学习入门教材 servlet学习入门教材 servlet学习入门教材
Java相关课程系列笔记之九Servlet学习笔记 Java相关课程系列笔记之十JSP学习笔记 Java相关课程系列笔记之十一Ajax学习笔记 Java相关课程系列笔记之十二jQuery学习笔记 Java相关课程系列笔记之十三Struts2学习笔记 ...
Java Servlet API 2.5 《全英文版》 web开发学习必备。
java+servlet代码,是本人在校学习期间使用Myecplise开发的项目包,可以提供给新手学习
java中如何写一个servlet一天学会
看过方立勋老师的课程之后 做的一点小笔记 以后拿出来复习复习 不对之处 请见谅 本人只是默默的一只菜鸟
2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于java ...
深入学习 Java Servlet开发与实例
Java Servlet+jsp在线考试系统源码+项目说明(高分课设).zipJava Servlet+jsp在线考试系统源码+项目说明(高分课设).zipJava Servlet+jsp在线考试系统源码+项目说明(高分课设).zipJava Servlet+jsp在线考试系统...