目录
7. Servlet接口 javax.servlet.Servlet 5个抽象方法:
12.servletConfig和servletContext接口
1.Servlet是什么?
Servlet是使用Java语言编写的运行在服务器端的程序,狭义的Servlet指Java语言实现的一个接口,广义的Servlet是指任何实现Servlet接口的类,通常理解为后者。
2. Servlet容器:
指提供了Servlet功能的服务器,支持所有Http协议的请求和响应,这里指Tomcat。
3. Servlet技术
特点:方便,跨平台,灵活性和可扩展性,功能强大,能够在各个程序间共享数据,安全性强。
4. 提供了两个默认的接口实现类:
GenericServlet和HttpServlet:
Protected void doGet/ doPost/ doPut(HttpServletRequset req,HttpServletResponse resp):用于处理get/post/put类型的http请求的方法。
5. 类创建的Servlet和Servlet又什么区别?
因为直接实现Servlet接口来编写Servlet很不方便,需要实现很多方法。
6. servlet为什么会出现?
Servlet = Service + Applet,表示小服务程序。是在服务器上运行的小程序。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。在通信量大的服务器上,JavaServlet 的优点在于它们的执行速度比CGI 程序快,服务器端处理请求的系统开销降低。
7. Servlet接口 javax.servlet.Servlet 5个抽象方法:
Void init(ServletConfig config)初始化方法,容器在创建好Servlet对象后,会调用此方法。
ServletConfig getServletConfig()获取Servlet对象的配置信息。
String getServletInfo()返回一个字符串,包含Servlet的信息。
Void service(ServletRequest requset, ServletResponse response):负责响应用户的请求,当容器(指web服务器)接收到客户端访问Servlet对象的请求时,就会调用此方法。(提供服务的方法,每一次Servlet被访问时执行,会执行多次。)
Void destroy():销毁方法,负责销毁Servlet对象占用的资源,当服务器正常关闭或Servlet对象被移除时,对象被销毁,只执行一次。
8. servlet有什么作用?
Servlet 执行以下主要任务:1读取客户端(浏览器)发送的显式的数据。2读取客户端(浏览器)发送的隐式的HTTP 请求数据。3处理数据并生成结果,这个过程可能需要访问数据库。4发送显式的数据(即文档)到客户端(浏览器)。5发送隐式的HTTP 响应到客户端(浏览器)。
9. Servlet生命周期方法:
初始化阶段 默认情况下,第一次被访问时Servlet被创建,也可以配置执行Servlet的创建时机。
运行阶段 会创建request请求对象和response响应对象,并将其作参数传递给Servlet的service()方法,在Servlet的整个生命周期中,对于Servlet的每次请求访问,Servlet容器都会调用一次Servlet的service方法,并创建新的request和response对象,即service()方法在整个生命周期中会被调用多次。
销毁阶段 当服务器正常关闭或web应用被移除容器时,Servlet随着web应用的销毁而销毁。(看课本88页多学一招第二段。负数或没有设定这个元素,Servlet容器会在客户端首次请求这个Servlet时加载它,正整数或0,Servlet容器在web应用启动时加载并初始化Servlet。)
10.Servlet的多重映射
是指同个servlet可以被映射为多个虚拟路径,就是客户端可通过多个路径实现同一个Servlet的访问。
实现方式:1.配置多个元素(在1处修改为其他虚拟路径)2.在一个元素中配置多个子元素,即在其中配置多个其他虚拟路径。
11.映射路径中的通配符
*.扩展名 /* (两种不能混合使用)
缺省servlet :若某servlet的映射路径是/,这个servlet就是当前web应用的缺省servlet,用于处理其他servlet不处理的访问请求。
12.servletConfig和servletContext接口
servletConfig:自定义初始化信息,首先得到servletConfig的对象,再通过对象调用其方法。
String getInitParameter(String name)根据初始化参数名返回对应的初始化参数。
Enumeration getInitParamterNames()返回一个Enumeration对象,包含了所有的初始化参数名。
ServletContext getServletContext() 返回一个代表当前web应用的ServletContext对象。
String getServletName()返回Servlet的名字。
servletContext:封装了当前web应用的所有信息,实现了多个servlet之间数据的共享。
作用:1获取web应用程序的初始化参数。
2实现多个servlet对象共享数据。
Enumeration getAttributeNames() 返回一个Enumeration对象,包含了存在ServletContext中的所有域属性名。
Object getAttribute(String name) 根据指定属性名返回属性值。
Void removeAttribute(String name) 根据指定属性名删除匹配的域属性。
Void setAttribute(String name,Object obj) 设置域属性,name:域属性名,obj:属性值。
3读取web应用下的资源文件。
Set getResourcePaths(String path) 返回一个set集合,指定匹配资源的部分路径(路径以/开头)。
String getRealPath(String path) 用文件的虚拟路径返回资源文件在服务器系统上的真实路径(绝对路径)。
URL getResource(String path) 返回映射到某个资源文件的url对象。
InputStream getResourceAsStream(String path) 返回映射到某个资源文件的InputStream输入流对象。
13.Get和Post的区别:
1. Get是不安全的,数据被放在请求的URL中;Post的所有操作对用户来说不可见。
2. Get传送的数据量小,不能超过4kb,因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。
3. Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
4. Get执行效率却比Post方法好。Get是form提交的默认方法。
5.get是从服务器上获取数据,post是向服务器传送数据。 6.get安全性非常低,post安全性较高。