`
zhangyuanjava
  • 浏览: 129507 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论
阅读更多
什么是Servlet?

   J2EE规范的一部分,是用java语言编写的服务器端程序,用于创建动态页面,不依赖于具体的协议,必须运行在web容器中。Servlet是J2EE的其中的一个标准,servlet开发人员遵循这个标准开发的Servlet可以部署到任何的web application server中。

1.模块化的程序,运行在服务器端,增强了请求、响应导向服务。

2.应用示例:

   a)访问远端对象

   b)跟踪大量信息

   c)多用户协作

------------------------------------------------------------------------------------------------------------------------------------

CGI和Servlet的优缺点

CGI程序可以有多种语言编写,但是服务器端处理请求使用单进程,消耗服务器端资源。

Servlet只能由java编写,服务器端处理请求使用多线程,移植性好。

------------------------------------------------------------------------------------------------------------------------------------

使用Servlet的步骤

1.写Servlet类

(1)继承HttpServlet

(2)重写服务方法,一般是以下两种方式:

          doGet(HttpServletRequest request,HttpServletResponse response)

          doPosr(HttpServletRequest request,HttpServletResponse response)

(3)设置响应的文本类型

     response.setContext("text.xml");

(4)获取输出流

    response.getWriter();

    response.getOutputStream();

(5)往客户端写内容

    pw.print(...);

(6)关闭输出流

    pw.close();

(7)可以记录日志

    getServletContext().log(...);

2.编译Servlet

    javac -classpath javax.servlet.jar -d Servlet类.java==>产生.class文件

3.创建符合要求的WEB应用目录结构

应用名

         ---->WEB-INF

                       ----->classes   :存放生成的.class文件

                       ----->lib           :存放第三方jar包

                       ----->web.xml  :配置Servlet

web.xml中的配置:

<servlet>

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

<servlet-class>class</servlet-class>

</servlet>

<servlet-mapping>

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

   <url-pattern>url</url-pattern>

</servlet-mapping>

4.将web应用程序打成war包

   jar -cvf hello.war

   在Tomcat中能自动识别war包,并对其进行解压

5.将war包考到Tomcat/webapps下

6.启动Tomcat

7.打开浏览器访问 http://127.0.0.1:8080/应用名/servlet的url-pattern

-----------------------------------------------------------------------------------------------------------------------------------

Servlet 的生命周期

1.通过web Container容器装载(J2EE的组件都是被动地装载入Container)并实例化Servlet对象,产生一个实例。

2.调用init()方法(在整个生命周期中只被调用一次)

   init(ServletConfig config)先被调用, init()后被调用

  设置初始化参数:

  (1) 全局的

   <context-param>

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

       <param-value>20</param-value>

  </context-param>

   通过ServletConfig.getServletContext().getInitParameter(...)获取

   通过getServletContext()获得运行上下文环境才能获取到全局参数的值

  (2)局部的

  <servlet>

     <servlet-name>helloServlet</servlet-name>

     <servlet-class>HelloServlet</servlet-class>

     <init-param>

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

            <param-value>value</param-value>

    </init-param>

</servlet>

通过ServletConfig.getInitParameter(....)获取

3.根据用户的每一次请求,调用一次service()服务方法doGet()/doPost()等(在整个生命周期中可被多次调用);

a.service(ServletRequest req,ServletResponse res)

b.service(HttpServletRequest req,HttpServletResponse res)

c.doGet()/doPost()

需要考虑多线程的问题:

多线程的处理

1)implements SingleThreadModel每个请求创建一个Servlet实例为其服务,性能低。

2)建议在servlet类不要用实例变量,如果用,使用synchronized进行同步

4.调用destroy()方法(在整个生命周期只被调用一次)

-----------------------------------------------------------------------------------------------------------------------------------

用Servlet处理表单数据
1. Form元素的属性
     1) ACTION: 用来指定要处理FORM数据的Servlet的URL,也可以指定FORM数据将要发送到的电子邮件;
     2) METHOD: 指定数据传送给HTTP服务器的方法;
     3) ENCTYPE: 指定数据在传输之前进行编码的方式, 例multipart/form-data 编码将每个字段作为MIME可兼容的文档的单独部分传输。
2. 解析请求
    对于所有的请求:
       a. getParameterNames: 以Enumeration形式获取表单中清单, 每一项都可以转换成String;
       b. getParameter: 返回表单中参数名(区分大小写)对应的值(没有这样的参数,返回null;没有任何值,返回空String);
       c. getParameterValues: 返回表单中参数名(区分大小写)对应的字符串数组(没有这样的参数,返回null;只有一个值,返回值为单一元素组);
http请求:包括请求头和请求体

Get请求:浏览器提交的数据是放在请求头部的;

Post请求:浏览器提交的数据是放在请求体部的;

----------------------------------------------------------------------------------------------------------------------------------

Servlets中的持久状态
1. HTTP协议中无状态的优缺点:
   优点:可以服务很多客户端;
   缺点:不能在多个请求之间共享信息(通过Cookie和Session解决);
2. Cookies
   1) Cookies是Web服务器发送到浏览器的简短文本信息,以后在访问同一个Web站点或域时浏览器就会毫无更改地返回该文本信息。
   2) 用户可以决定是否接受Cookie。
   3) 一个Cookie由以下内容组成:
       a. 名称;
       b. 单个值;
       c. 一些操作属性:路径或所在域、有效期以及版本号。
    4) 每个站点,浏览器通常只接受20条Cookie,总共接受300条,以及每条Cookie限制为4KB。
3.  设置Cookie
   1) 创建Cookie:
       Cookie c = new Cookie("CookieName", "CookieValue");
    2) 设置有效期:
       c.setMaxAge(int lifetime); 黙认为负值,只作用于当前会话,不能存储在磁盘上;如为0值表示删除Cookie;有效值为秒为单位。
    3) 在响应头中放置Cookie:
       response.addCookie(c);
    4) 从客户端读取Cookie:
       Cookie[] cookies = request.getCookies();
       Cookie cookie;
       for(int i=0; i<cookies.length; i++)
       {
          cookie = cookies[i];
          out.println("<tr><td>" + cookie.getName() + "</td><td>" + cookie.getValue());
       }
4. Sessions
    1) 一个客户端和一个服务器端一次连接信息的所有集合,通过brower发出,由服务器端的servlet调用;
    2) 提供一种方式在多个页面请求间确认用户或者储存关于用户的信息;
    3) 实现会话跟踪的三种方式:a. cookie; b. URL重写; c. 隐藏的表单段
5. 设置Sessions
    1) 创建Sessions:
       HttpSession session = request.getSession(true);      // true表示如不存在则创建一个新的session
    2) 用指定名称将一个对象绑定到session:
       public void setAttribute(String name, Object value);
    3) 删除与指定名称相关的所有值:
       public void removeAttribute(String name);
    4) 返回会话中所有属性名
       public Enumeration getAttributeNames();
    5) 返回指定名称对象
       public Object getAttribute(String name);
6. Cookies和Sessions的比较
   1) Cookies可由用户决定是否需要, Sessions不能; 
   2) Cookies是一种装载sessionID的可能;
   3) Cookies存储在客户端, Sessions存储于服务器端;
   4) Cookies可以构造,可以由Request取出,由Response返回
1
0
分享到:
评论

相关推荐

    Java Servlet API 2.5

    Java Servlet API 2.5是Java Web开发中的一个重要组成部分,它是Java服务器端程序与Web应用程序交互的核心接口。这个API定义了一系列用于处理HTTP请求和响应的类和接口,为开发动态、交互式的Web应用提供了基础。在...

    JAVA servlet 编程指南

    **JAVA Servlet 编程指南** Java Servlet是一种Java技术,用于扩展服务器的功能,特别是在Web应用程序中。Servlet是Java EE(企业版)的一部分,它允许开发者创建动态、交互式的Web服务。Servlet容器,如Tomcat,...

    Java Servlet详细讲解

    Java Servlet是一种基于Java技术的服务器端组件,用于创建动态web应用程序。SUN公司(现在是Oracle)开源的Servlet规范使得开发者能够用Java语言编写能够处理HTTP请求的服务端程序。Servlet在Web开发中扮演着核心...

    java servlet jar包

    Java Servlet是Java编程语言中用于开发服务器端应用程序的API,主要用于构建动态Web应用程序。Servlet是Java EE(Enterprise Edition)的一部分,它允许开发者扩展Web服务器的功能,处理HTTP请求并返回响应。在Java ...

    JAVA SERVLET 高级编程

    **JAVA SERVLET 高级编程** 在Java Web开发领域,Servlet是不可或缺的一部分,它为开发者提供了处理HTTP请求的能力。本教程将深入探讨Java Servlet在处理多媒体信息、集成Java Server Pages (JSP)技术、实现Servlet...

    Java Servlet Api文档

    在Java Servlet API 2.5版本中,包含了对Servlet、Filter、Listener等关键概念的详细描述,以及它们在Web应用程序中的应用方式。 1. **Servlet接口**:Servlet是Java中处理网络请求的基础,它定义了web服务器如何与...

    深入 Java Servlet 网络编程

    1.1 Servlet 定义:Servlet 是 Java 类,遵循 javax.servlet.Servlet 接口,用于接收和响应来自客户端(如浏览器)的请求。它们是服务器端的组件,主要用来生成动态内容。 1.2 Servlet 生命周期:包括加载、初始化...

    JavaServlet示例代码

    在这个"JavaServlet示例代码"中,我们可能会看到以下关键点: 1. **注册功能**: - 用户信息可能被存储在一个数据库中,因此需要与数据库的交互。这通常通过JDBC(Java Database Connectivity)实现,包括加载...

    Java Servlet

    本篇将深入探讨Java Servlet的基础概念、核心组件、工作原理以及实际应用。 一、Java Servlet概述 Java Servlet是一个服务器端的Java程序,它运行在Web服务器上,接收并响应来自客户端(如浏览器)的请求。Servlet...

    java Servlet学习笔记

    Java Servlet是Java编程语言中用于处理Web服务器与客户端交互的一种技术,主要应用于构建动态Web应用程序。Servlet是Java EE(企业版)的一部分,它允许开发者在服务器端创建强大的、可扩展的网络应用程序。以下是对...

    Java Servlet API说明文档.doc

    Java Servlet API是Java Web开发的核心组件,用于创建和管理服务器端的动态Web应用程序。这个API定义了一组接口和类,允许开发者编写能够处理HTTP和其他网络协议的Java程序,这些程序通常被称为Servlets。Servlets是...

    Java Servlet Specification__ Version 2.3

    Java Servlet Specification Version 2.3 是一份详细的文档,它定义了Java Servlet技术的规范,用于创建Web应用程序。Servlet是一种基于Java的服务器端组件,由Web容器管理,用于生成动态内容。这个规范是Java 2平台...

    深入java servlet 网络编程

    Java Servlet 是Java平台上的一个核心技术,用于构建动态web应用程序。它是一个服务器端的API,提供了处理HTTP请求和响应的功能,使得开发者可以扩展web服务器的能力,实现与客户端的交互。本篇文章将深入探讨Java ...

    JAVA SERVLET帮助文档(API)

    Servlet API是Java Servlet的核心部分,提供了一系列的接口和类,供开发者用来构建可部署在Web服务器上的Java应用程序。这篇帮助文档详细阐述了这些接口和类的使用方法、功能以及它们之间的关系。 在Servlet API中...

    JavaServlet帮助文档

    JavaServlet帮助文档中的CHM文件是一个编译过的HTML帮助文档,它包含详细的API参考、教程、示例代码和常见问题解答,是开发者学习和查阅Servlet技术的重要资源。利用其内置的搜索功能,开发者可以快速找到所需的信息...

    javaservlet帮助文档

    在本文中,我们将深入探讨Java Servlet的相关知识点,包括其概念、工作原理、生命周期、请求和响应处理,以及如何在实际开发中使用。 ## 1. Java Servlet 概念 Java Servlet 是一个Java类,它遵循Servlet API规范,...

    深入Java Servlet 网络编程

    Java Servlet是Java平台上的一个核心技术,主要用于构建动态web应用程序。Servlet是服务器端的Java小程序,它接收并响应来自客户端(通常是web浏览器)的请求,处理数据,然后返回响应。在深入理解Java Servlet网络...

    Java Servlet开发与实例

    Java Servlet是Java EE平台中的核心组件之一,用于构建动态web应用程序。Servlet是一个Java类,它扩展了服务器的功能,处理来自客户端(通常是web浏览器)的请求并返回响应。本教程将深入探讨Java Servlet的基础知识...

    Java Servlet Programming

    Java Servlet Programming是O'Reilly出版的一本关于Java Servlet编程的书籍,涵盖了Java Servlet的基础知识和高级主题。 本书共分为十四章,涵盖了Java Servlet的基础知识、Java Servlet的架构、Servlet生命周期、...

    Java Servlet API说明文档

    Java Servlet API是Java Web开发中的核心组件之一,它为服务器端的动态网页处理提供了标准的接口和类。这个API说明文档详细阐述了如何利用Java来构建动态、交互式的Web应用程序。下面将对Java Servlet API的一些关键...

Global site tag (gtag.js) - Google Analytics