zoukankan      html  css  js  c++  java
  • 会话跟踪

    复习:

    1、请求和响应

    当你在客户端浏览器发出一个请求的时候,tomcat就会创建servlet对象,并且创建request对象和response对象。再把两个的对象作为service方法的参数传递到servlet对象中,根据客户端发送的请求方式,调用doGet()doPost()方法

    可以在request对象中,取得请求的数据:

    (1)普通参数,通过request.getParameter(String string);

    (2)单选按钮值,通过 request.getParameter(String string);

    (3)多选框的值,通过requset.getParameterValues(String string);

    (4)如果不知道要获取到的值对应的参数名称也就是key值时,可以通过request.getParameterNames();得到所有传递过来的名称信息。

    得到的数据应该交给业务层来处理。

    2、请求转发和重定向

    请求转发:在客户端浏览器发出且近发出这一个请求。在服务器端把这个请求转发到多个servlet,这是同一个request不断地在服务器中传递。地址栏不会有任何变化,不管有多少个servlet参与处理,他们都共用一个request对象。所以这个request对象在所有的servlet中都可以得到的。

    重定向:当前servlet对于当前请求不作处理,而是带领浏览器去另外一个servlet。如果有了新的请求,那么request对象就一定创建新的servlet对象。

    3、请求数据的方式。(参数形式,url传值,问号参数,属性)

    (1)可以在地址栏中,写url的问号参数传值:key=value & key= value

    (2)在页面上的超级链接可以进行相同方式的传值

    (3)表单的形式:表单形式也会转化成url问号参数进行传值。

    4、之前的完整增删改查~要实现啊~

     

     

    回话跟踪技术:

    1、url的传值(request中参数)一次请求

    2、request(参数,属性)一次请求

    3、Session(一次回话,多次请求)基于一个浏览器。这里需要解释:前提是使用了session对象。使用方法为:在servlet中这样写:request.getSession()。如果是这样,那么浏览器开始访问服务器的servlet。浏览器携带JSessionIdservlet去(如果第一次去访问,则JSessionId为空),此时服务器根据浏览器携带的会话标识码去Session的集合里面找,如果在浏览器的集合中包含次标识码对应的session对象,那么:request.getSession()返回已经创建的Session对象,如果没有找到,则根据一定的规则(我猜包括时间,浏览器方的主机名,服务器的主机名,servlet的名字等等信息,构成唯一标示),新创建一个sessionid。当服务器进行玩数据处理给客户端做出相应的时候,把这个sessionid带回给客户端,此时,客户端保有当前sessionid当前浏览器的缓存中(这里提到当前浏览器是因为,这个sessionid只对当前浏览器有效,如果更换浏览器则认为重新访问了服务器,也即会重新创建一个session。)当还是同一个浏览器再次访问这个应用程序的servlet(可能是当前的servlet也可能不是了,而是这个java web的其他servlet)时,浏览器会带着这个sessionid再次进行访问,如果服务器端依然有request.getSession().这行代码的话,则拿着之前的sessionid到服务器端的session的集合中,进行匹配,如果有就使用之前存在的sessionid,如果没有,那么就再次重新创建一个session生成对应的sessionid反馈给浏览器端,如果两个sessionid不一致,那么浏览器保有最新从服务器端返回的sessionid

    4、Cookie(一次回话,多次请求)如果不设置c.setMaxAge(int minute);的话,sessionsession可以看做基本相同,但是如果设置了的话,那么这样我们就可以将数据保存一天或者一周,只要在那个参数里面进行响应设置就可以。不过还是稍微有一些区别,cookie的数据是保存在对应浏览器的文件中,只不过同时还设置了一个清空时间,如果过了maxAge的话,这个保存会话信息的文件也会被删除。Cookie这里我还缺一点儿清醒的认识,明后天再编一下码进行熟悉。

    5、servletContext(一次服务),基于服务器的。如果服务器不关闭那么数据就一直存在。

     

    会话的创建:

    (1)在servlet中进行创建,利用request.getSession().

    (2)A公司浏览器,浏览该站点,服务器判定是否有对应sessionid,如果没有则创建,如果已经存在则使用已经存在的sessionB公司浏览器不能使用同一个session

    会话的使用:

    (1)只能有setAttribute()getAttribute()这两个方法,原来使用的地址栏传值方式不再适用。

    会话的销毁:

    (1)默认这个对象的销毁时间是30min

    (2)有两种设置方式,一种是在代码里面设置,采用:session.setMaxInactiveInterval(60*60);不过一般不这样设置,都是在web.xml文件里面进行设置:采用:

    <!-- session  存活时间    对于你这个项目中 创建的所有session 都是一样的-->

      <session-config>

         <session-timeout>15</session-timeout>

      </session-config>

    Session这个对象存储在服务器里面,不过浏览器拿着一个sessionid

    Cookie 是在Servlet里面new出来的,跟随response发送到客户端,这个对象就存储到浏览器对应的缓存或者文件中。取决于setMaxAge()

    Session的作用域范围和cookie是一样的,sessionid的存储是以cookie的对象形式存储。

    Cookie的范围在设置了时间以后会变大,基于一种浏览器,多次开启都能使用(只是取决于设置的时间长短。)

    ServletContext servlet上下文对象:基于一次服务。不管有多少种浏览器,关闭开启多少次,只有服务不停,存储的数据就不会消失。

    1request:基于一次请求,(参数,属性)

    2session:基于多次请求(一次回话),基于浏览器,id在客户端,session对象在服务端(数据)

    3cookie:一次会话,(把cookie对象存储在浏览器的缓存中(浏览器关闭),存储在浏览器的cookie的文件中(浏览器关闭依然有数据,换一种浏览器数据不再有))

    4servletContext:一次服务

     

     

     

     

    补充:

    Form是最重要的web应用提交手段,所有数据量大,安全性要求高的数据必须使用form提交。

     

    浏览器段验证:

    目前几乎所哟肚饿web应用程序都具有浏览器段数据验证功能,浏览器端验证的主要手段是使用javascript+Css+html的部分特性实现对数据的有效性,合法性检测。

    服务器端验证:

    对数据安全性要求较高的应用都会使用此种验证方式,在安全性方面有着浏览器端验证不可比拟的游戏,但在验证效率方面不及浏览器段来的高效便捷。通常将两种方式结合进行数据校验。

     

  • 相关阅读:
    keypress事件
    input输入框(blur,change,focus)
    click点击以后添加新class,删除其余同名class
    强制数组并且匹配Array
    模拟鼠标事件
    简单的form操作
    鼠标滚轮事件(mousewheel、DOMMouseScroll)
    事件委托技术
    从程序员到项目经理:项目经理必须懂一点“章法”
    JavaScript项目优化总结
  • 原文地址:https://www.cnblogs.com/letben/p/5185233.html
Copyright © 2011-2022 走看看