学习Servlet

学习完servlet然后写一个关于他它的总结,加深自己的印象,也希望读者能在其中学到点东西

HTTP协议
HTTP(Hypertext Transfer Protocol, 超文本传输协议)
    
   1 HTTP是以明文方式发送数据的
    
   2 用于从WWW服务器传输超文本到本地浏览器的传输协议。 是Web应用程序的基础
    
   3 HTTP协议是以TCP/IP为基础的高层协议。
    
   4 现在广泛使用的版本HTTP/1.1

5 Http的缺省端口是80Http特点是:无状态、无连接

Servelet简介

1 Servlet是服务器小应用程序
 
    2 用来完成B/S架构下,客户端请求的响应处理

3 平台独立,性能优良,能以线程方式运行

4 Servlet API为Servlet提供了统一的编程接口

5 Servlet一般在容器中运行

常见的Servlet容器
        Tomcat (在此用此容器)
        Jetty / Resin

tomcat启动与停止
    startup.bat
    shutdown.bat
    catalina.bat start
    catalina.bat stop /  shutdown.bat
    catalina debug 调试错误的时候
    run exit help
    设置环境变量JAVA_HOME(启动tomcat失败一般都是环境变量设置有问题)

tomcat目录结构

bin/             二进制可执行文件和脚本
     catalina start stop
     catalina debug run exit
     common/    Catalina本身和web应用可加载的类目录
     conf/           配置文件目录
     logs/           日志目录
     server/        服务器所需的类库目录
     shared/        Web App共享的类库
     webapps/    Web应用所存放的目录applications
     work/           Tomcat的工作目录(存放jsp产生的class文件)
    temp/        存放临时产生的文件

Servlet的生命周期

生命全过程:
       加载 ClassLoader
       实例化 new
       初始化 init(ServletConfig) 仅执行一次
       处理请求 service doGet doPost
       退出服务 destroy()

只有一个对象

API中的过程:
    init()//只执行一次, 第一次初始化的时候
    public void init(ServletConfig config) throws ServletException
    service()
    public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException
    destroy()//webapp 退出的时候
    public void destroy()

doGet和doPost的区别:

Get方法:用户数据作为 URL 中的查询字符串传递给服务器,而body中的数据为空
Post方法:用户数据在body中传输给服务器

Get方法所传输的数据量有限制,Post方法则没有限制,当不会修改服务器端的数据时,应该使用 doGet() 方法
Get方法所传输的数据在url中可见,post则不可见,当需要修改服务器端的数据时,应该使用 doPost() 方法

Servelet的类层次结构

Servelet创建的文件默认继承于HTTPServlet
    HttpServlet实现了javax.servlet.GenericServlet接口
    HttpServlet类是专门处理基于HTTP协议的Servlet
   Servlet还可以处理http以外的其他处理请求。

Cookie概述

1 cookie 是当你浏览每个网站时,由WEB服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID号、密码、浏览过的网页、停留的时间等等。
          2 服务器通过cookie的响应头将cookie发送给客户机,其形式为名称=值
          3 客户机则以文件的形式将cookie存放在本地硬盘上,具体存储位置与浏览器相关
          4 Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。
          5 Cookie在客户端是由浏览器来管理的,浏览器判断一个网站是否能操作另一个网站Cookie的依据是域名。Google与Baidu的域名不一样,因此Google不能操作Baidu.

Cookie的有效期

Cookie的maxAge决定着Cookie的有效期,单位为秒(Second)。Cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写maxAge属性。
      如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。
      如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。

Cookie原理

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

Cookie使用步骤

使用Cookie:

1 创建cookie对象:
        Cookie color = new Cookie(“color”,”red”);

2 在响应中加入cookie:
          response.addCookie(color);

3 通过request取回cookie
          Cookie[] cookie = request.getCookies();

Cookie示例
   示例:记录用户访问次数

Cookie[] c = request.getCookies();

int count = 1;

if(c!=null) {      for(int i=0;i<c.length;i++) {
    
     Cookie accountCookie = c[i];
    
     if(accountCookie.getName().equals("accountCount")) {
        
        count = Integer.parseInt(accountCookie.getValue())+1;
        
        break;
        
        }
    }
}
        
response.addCookie(new Cookie("accountCount",String.valueOf(count)));

Session机制

除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。

什么是Session?

Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
      如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

Session概述
     1 服务器的一块内存(存key-value)
     2 和客户端窗口对应(子窗口)(独一无二)
     3 客户端和服务器有对应的SessionID
     4 客户端向服务器端发送SessionID的时候两种方式:
           (1)cookie(内存cookie)
           (2)rewriten URL
     5 浏览器禁掉cookie,就不能使用session(使用cookie实现的session)
     6 如果想安全的使用session(不论客户端是否禁止cookie),只能使用URL重写(大大增加编程负担),所以很多网站要求客户端打开cookie

实现用户登录

Session对应的类为javax.servlet.http.HttpSession类。每个来访者对应一个Session对象,所有该客户的状态信息都保存在这个Session对象里。Session对象是在客户端第一次请求服务器的时候创建的。Session也是一种key-value的属性对,通过getAttribute(Stringkey)和setAttribute(String key,Objectvalue)方法读写客户状态信息。Servlet里通过request.getSession()方法获取该客户的Session

Session的生命周期

Session保存在服务器端。为了获得更高的存取速度,服务器一般把Session放在内存里。每个用户都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。因此,Session里的信息应该尽量精简。
       Session在用户第一次访问服务器的时候自动创建。需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session。如果尚未生成Session,也可以使用request.getSession(true)强制生成Session。
       Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。

Session的有效期

由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

时间: 2024-11-13 08:00:01

学习Servlet的相关文章

学习学习servlet

学习学习servlet 一.servlet ??????Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层. 二.创建一个servlet ??????Servlet 可以使用 javax.servlet 和 javax.servlet.http 包创建,它是 Java 企业版的标准组成部分,Java 企业版是支持大型开发项目的 Java 类库的扩展版本.??????

Java学习——Servlet是什么

我们在学习了J2EE的十三个规范之后,只是对他们有了一个简单的认识,而接下来需要我们做的就是一个个研究,进行深入学习.在十三个规范中,比较常用的有JSP,Servlet,EJB,JNDI等,那么今天我们就来介绍一下Servlet. 1.概念 一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过"请求-响应"编程模型来访问的应用程序.虽然servlet可以对任何类型的请求产生响应,但通常只用来动态扩展Web服务器的应用程序.Java Serv

打开新世界的第一步:学习servlet

什么是servlet? 是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容. 创建servlet 一.创建一个web project 1)流程:eclipse-File-New-Other-Web-Denamic Web Project-Next(参考附图) 2)输入项目名称project name.Target runtime.Configuration,完成后点击Next.如果没有集成Tomcat,请先配置. 3)此页面不需要修改和填写内容,直接点击Ne

javaee学习-servlet初始化参数

1.需要定义ServletConfig对象来接收servlet配置的初始化参数. 2.当servlet配置了初始化参数后,web容器在创建servlet实例对象时, 会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet.进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息. 3.注意:获取servlet初始值(需要在init()方法中初始化)//注意,这里必

学习servlet之路--javax-servlet不存在

我在编译一个servlet菜鸟教程下提供的包含有javax.servlet包的java文件,变异出错, import java.io.*;import javax.servlet.*;import javax.servlet.http.*; public class HelloWorld extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)    t

JavaWeb学习—Servlet

1.什么是Servlet Servlet是一个继承HttpServlet类的Java类 Servlet必须部署在web服务器端,用来处理客户端的请求 2.Servlet运行过程 Web Client 向Servlet容器(Tomcat)发出Http请求 Servlet容器接收Web Client的请求 Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中. Servlet容器创建一个HttpResponse对象 Servlet容器调用HttpSe

javaweb学习--Servlet开发(一)

一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术: Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态资源(即开发一个java程序向浏览器输出数据),需要完成以下2个步骤: 1.编写一个java类,实现servlet接口: 2.把开发好的Java类部署到web服务器中: 按照一中和约定俗成称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet: 二.Servlet的运行过程 Servlet程序是由WEB服务

JavaWeb学习--Servlet认识

Servlet开发 用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这种请求—响应模式就是典型的Web应用程序访问过程. JavaWeb应用程序中所有的请求—响应都是由Servlet完成的. Servlet是JavaWeb的核心程序,所有的网址最终都交给Servlet处理.Servlet并没有main之类的执行方法.当用户访问服务器的 时候,Tomcat是通过调用Serv

JavaWeb学习笔记之Servlet(一)

1. 引子: 当我们开始进入JavaWeb开发的学习时,我们就必须要和Servlet和HTTP这两个词进行打交道了,尤其是Servlet.即使到了后面使用JSP (我们知道JSP其本身就是一个Servlet)来进行开发我们的应用. 下图就是 Servlet API中相应的UML图,在学习JavaWeb 开发时,我们最好对下面的各个Servlet中的方法做一定的了解及其相应的图中的关系,尤其是HttpServletRequest和HttpServletResponse 中的方法. 2. 部署服务器