您的位置:首页 > 其它

servlet知识点

2015-10-12 14:48 267 查看
1.什么是servlet

Servlet是sun公司提供的一门用于开发动态web资源的技术。servlet 基于request - response 请求模型 (http协议) Sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1.编写一个Java类,实现servlet接口。 2.把开发好的Java类部署到web服务器中。

servlet可以被认为是服务器端的applet。servlet被Web服务器加载和执行,就如同applet被浏览器加载和执行一样。servlet从客户端(通过Web服务器)接收请求,执行某种作业,然后返回结果。
  使用servlet的基本流程如下:
  ·客户端(很可能是Web浏览器)通过HTTP提出请求。
  ·Web服务器接收该请求并将其发给servlet。如果这个servlet尚未被加载,Web服务器将把它加载到Java虚拟机并且执行它。
  ·servlet将接收该HTTP请求并执行某种处理。
  ·servlet将向Web服务器返回应答。
  ·Web服务器将从servlet收到的应答发送给客户端。

2.servlet的优点

  ■servlet是与平台无关的。如前所述,servlet是用Java编写的,它自然也继承了Java的平台无关性。
  ■servlet是可扩展的。由于servlet是用Java编写的,它就具备了Java所能带来的所有优点。Java是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。servlet自然也具备了这些特征。
  ■servlet是安全的。从外界调用一个servlet的惟一方法就是通过Web服务器。这提供了高水平的安全性保障,尤其是在你的Web服务器有防火墙保护的时候。

3.servet对URL的匹配过程

当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://localhost/test/aaa.html,我的应用上下文是test,容器会将http://localhost/test去掉,剩下的/aaa.html部分拿来做servlet的映射匹配。这个映射匹配过程是有顺序的,而且当有一个servlet匹配成功以后,就不会去理会剩下的servlet了

4.servlet生命周期

Servlet 的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入 Servlet 时结束。包括加载实例化初始化处理请求以及服务结束。这个生存期由 javax.servlet.Servlet 接口的 init, service destroy 方法表达。

描述servlet的生命周期,谁来控制servlet的生命周期,servlet生命周期在J2EE规范中是如何来定义的服务器实例化一个servlet对象,容器运行其init方法,请求到达时运行其service方法,service方法根据请求的类型调用(doGet,doPost)方法,当服务器决定将实例销毁时调用其destory方法

5、ServletJsp的区别?

Servlet是直接执行的文件,Jsp是要被通过编译形成Servlet后才执行。

6.servlet继承体系





7.servlet的线程安全问题

不要在servlet中写成员变量

8.何让Servlet在服务器启动时,加载创建对象(servlet优化)



9.四大共享范围

apage 当前页面。

bsession 同一个用户内。

crequest 从上一页到下一个页面。

dapplication 同一个网站内。

10.servletContext对象



应用一:全局初始化参数配置 (所有Servlet都可以访问)
* 和ServletConfig 配置初始化参数 区分开

1) 配置全局初始化参数(在web.xml的一个servlet中写):

<!-- 全局初始化参数 -->

<context-param>

<param-name>name</param-name>

<param-value>张三</param-value>

</context-param>

2) 获得ServletContext对象 ServletContext context = getServletContext();

3) 通过 String getInitParameter(String name) 获得全局参数

应用二:多个Servlet之间可以共享数据 (ServletContext唯一的)
共享全局唯一数据 :站点访问次数、数据库连接池 ,static

setAttribute(name,object)

getAttribute(name)

应用三:读取web工程中资源文件
在day5工程中创建四个文件

1、在day5工程根目录 创建 1.txt

2、在WebRoot下 创建2.txt

3、在WEB-INF下 创建3.txt

4、在src下创建 4.txt

1.txt因为在WebRoot 外面 不会发布到tomcat服务器,无法端读取

2.txt --- > getServletContext().getRealPath("/2.txt");

3.txt --- > getServletContext().getRealPath("/WEB-INF/3.txt");

4.txt 位于src下,复制到WEB-INF/classes下 ---> getServletContext().getRealPath("/WEB-INF/classes/4.txt");

11.servletConfig对象

Servlet的初始化 init :

init(ServletConfig) ----- ServletConfig 对象 Servlet配置对象,用来在Servlet初始化阶段向Servlet传递信息

* GenericServlet中将 ServletConfig对象保存成员变量,同时提供getServletConfig方法

* 自定义Servlet中 通过 getServletConfig() 获得ServletConfig 对象

String getInitParameter(String name) 根据参数名称 获得 值

企业级应用: load-on-startup 结合 init-param 使一个Servlet在服务器启动时执行初始化,第一时间加载配置文件 ====> Struts 框架

struts1中应用

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<init-param>

<param-name>config</param-name>

<param-value>

/WEB-INF/struts-config.xml,

/WEB-INF/struts-config-Wildcard.xml

</param-value>

</init-param>

<load-on-startup>2</load-on-startup>

</servlet>

*** ServletConfig 配置参数 相当于当前Servlet 局部变量,无法被其它Servlet访问的

12.Servlet的基本架构

public class ServletName extends HttpServlet {
  public void doPost(HttpServletRequest request,HttpServletResponse response) throws
  ServletException, IOException {
  }
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws
  ServletException, IOException {
  }
}

13.统计网站实现次数

思路:



具体代码实现:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: