Servlet技术(Servlet)
- 格式:doc
- 大小:43.00 KB
- 文档页数:6
第二章Servlet技术一、Servlet API1、Java Servlet特点:(1)不是独立的应用程序,没有main()方法。
(2)没有图形界面,不是由用户或程序员直接调用,而是生存在容器中,由容器管理。
(3)有生命周期,包含init()和destroy()方法。
2、要编写一个Servlet,需要实现javax.servlet.Servlet接口。
该接口有如下5个方法:(1)init():方法中有一个类型为ServletConfig的参数,Servlet容器通过这个参数向Servlet传递配置信息;Servlet使用ServletConfig对象从Web应用程序的配置信息中获取以名-值对形式提供的初始化参数;在Servlet中,还可以通过ServletConfig对象获取描述Servlet运行环境的ServletContext对象,使用该对象,Servlet可以和它的Servlet容器进行通信。
(2)service():容器调用service()方法来处理客户端的请求。
(3)destroy():Servlet对象可以释放它所使用的资源,保存数据到持久存储设备中;之后容器会释放这个Servlet对象,在随后的时间里,该对象会被Java的垃圾收集器所回收。
(4)getServletConfig():返回容器调用init()方法时传递给Servlet对象的ServletConfig对象,ServletConfig对象包含了Servlet的初始化参数。
(5)getServletInfo():返回一个String类型的字符串,其中包含了关于Servlet的信息,例如作者,版本和版权。
3、Servlet由Servlet容器来管理,当客户请求到来时,容器创建一个ServletRequest对象,封装请求数据,同时创建一个ServletResponse对象,封装响应数据。
这两个对象将被容器作为service()方法的参数传递给Servlet,Servlet利用ServletRequest对象获取客户端发来的请求数据,利用ServletResponse对象发送响应数据。
4、ng.IllegalStateException是ng.RuntimeException的子类。
对于RuntimeException及其派生的异常是由Java运行系统自动抛出并自动处理,不需要我们去捕获,所以也就不需要在函数声明时声明抛出异常了。
5、Servlet容器使用ServletConfig对象在Servlet初始化期间向它传递配置信息,一个Servlet只有一个ServletConfig对象。
6、javac -d<目录>:指定存放生成的类文件的位置,如:javac -d . Hello.java意思为在当前目录生成类文件。
7、在编译源文件时,注意设置classpath环境变量的值,即指定servlet-api.jar。
8、Servlet是Web应用程序中的一个组件。
一个Web应用程序是由一组Servlet、HTML、类,以及其他的资源组成的运行在Web服务器上的完整地应用程序,以一种结构化的有层次的目录形式存在。
9、根目录代表了整个Web应用程序的根,也称为Web应用程序的上下文根。
10、在Servlet容器运行时,Web应用程序的类加载器首先加载classes目录下的,其次才是lib目录下的类。
11、WEB-INF并不属于Web应用程序可以访问的上下文路径的一部分,对客户端来说,这个目录是不可见的。
12、WEB-INF目录下的内容对于Servlet代码是可见的,在Servlet代码中可以通过调用ServletContext对象中的getResource()或者getResourceAsStream()方法来访问WEB-INF目录下的资源,也可以使用RequestDispatcher调用将WEB-INF目录下的内容呈现给客户端。
13、<servlet>元素用于声明Servlet。
<servlet-name>子元素用于指定Servlet的名字(一个Web应用程序中需唯一且不能为空)。
<servlet-class>子元素用于指定Servlet类的完整限定名(如果有包名,要同时给出包名)。
14、<servlet-mapping>元素用于在Servlet和URL样式之间定义一个映射。
<servlet-name>子元素指定的Servlet名字必须和Servlet元素中子元素<servlet-name>给出的名字相同。
<url-pattern>子元素用于指定对应于Servlet的URL路径,该路径是相对于Web应用程序上下文根的路径。
15、%CATALINA_HOME%\webapps\ROOT目录是Tomcat默认的Web应用程序的起始路径。
16、Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。
它为用户提供了在本地计算机上完成远程主机工作的能力。
在终端使用者的电脑上使用telnet程序,用它连接到服务器。
终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。
可以在本地就能控制服务器。
要开始一个telnet会话,必须输入用户名和密码来登录服务器。
Telnet是常用的远程控制Web服务器的方法。
17、Web应用程序的开发分为设计开发与配置部署两个阶段。
18、类 PrintWriter向文本输出流打印对象的格式化表示形式。
19、ServletResponse.getWriter():Returns a PrintWriter object that can send character text to the client.20、为了简化Servlet的编写,在javax.servlet包中提供了一个抽象的类GenericServlet,它给出了除service()方法外的其他4个方法的简单实现。
GenericServlet类定义了一个通用的、不依赖于具体协议的Servlet,它实现了Servlet接口和ServletConfig接口。
21、在GenericServlet类中,定义了两个重要的init()方法:init(ServletConfig config)和init()。
第一个init()方法时Servlet接口中init()方法的实现。
在这个方法中,首先将ServletConfig对象保存在一个transient实例变量中,然后调用第二个不带参数的init()方法。
通常,我们只需要重写第二个不带参数的init()方法即可。
如果覆盖了第一个init()方法,那么应该在子类的该方法中,包含一句super.init(config)代码的调用。
22、Javax.servlet.http包中的HttpServlet继承自GenericServlet类,用于创建适合Web站点的HTTP Servlet。
23、HttpServlet类中提供了两个重载的方法:service(ServletRequest req,ServletResponse)和service(HttpServletRequest req,HttpServletResponse)。
第一个service()方法是GenericServlet类中service()方法的实现。
在这个方法中,首先将req和res对象转换为HttpServletRequest req和HttpServletResponse类型,然后调用第二个service方法,对客户请求进行处理。
24、针对HTTP1.1中定义的7种请求方法:GET,POST,HEAD,PUT,DELETE,TRACE和OPTIONS,HttpServlet分别定义了7个处理的方法: doGet(HttpServletRequest req,HttpServletResponse)doPost(HttpServletRequest req,HttpServletResponse)doHead(HttpServletRequest req,HttpServletResponse)doPut(HttpServletRequest req,HttpServletResponse)doDelete(HttpServletRequest req,HttpServletResponse)doTrace(HttpServletRequest req,HttpServletResponse)doOption(HttpServletRequest req,HttpServletResponse)25、在保护的service()方法中,首先调用HttpServletRequest对象的getMethod()方法,获取请求方法的名字,然后根据请求方法的类型,调用相应的doXxx()方法。
因此我们在编写HttpServlet的派生类时,通常不需要去覆盖service()方法,而只需重写相应的doXxx()方法。
26、ServletRequest.getProtocol():Returns the name and version of the protocol the request uses in the form protocol/majorVersion.minorVersion, for example, HTTP/1.1.二、几个实例1、web.xml中的映射与form中的action的关系。
2、GenericServlet.getInitParameter():Returns a String containing the value of the named initialization parameter, or null if the parameter does not exist。
(与XML文档对应)例如:xml文档中为:<servlet><init-param><param-name>初始化参数名</param-name><param-value>实例化参数的值</param-value></init-param></serlet>在Servlet中要获得该参数的值可以:String str=GenericServlet对象.getInitParameter("初始化参数名")3、GenericServlet.getInitParameter(String name)等同于GenericServlet.getServletConfig().getInitParameter(String name)。