zoukankan      html  css  js  c++  java
  • J2ee技术难点

    J2ee技术难点

    1. session/cookie区别联系
    2. jsp/servlet区别联系
    3. filter执行流程
    4. openSessionInView原理
    5. clone与servilizable区别联系
    6. equals与hashcode联系

    1.    session与cookie

    1)       浏览器禁用cookie后,session还能工作吗?

    可以说对和不对,需要解释

    不能使因为没有采用url重写机制()

    实质是不能的,但是可以借助其他手段,保证session工作,利用url重写机制

     

    保证session正常工作通常采用cookie机制,但cookie禁用后,可以利用url重写机制保证session正常工作.

     

    2)       Cookie能实现购物车功能吗?

    可以,session能干的事情,cookie也能,因为session是通过cookie实现的

    1.       Session与cookie的区别联系

    (1)     Session和cookie都是保存用户状态信息的一种机制和手段

    (2)     Session保存在服务端,cookie保存在客户端

    (3)     Session较安全,cookie安全性较差(保存在客户端)

    (4)     Cookie可以保存在客户端硬盘上,可以保存时间很长;session保存在服务器的内容中,保存时间较短(tomat默认30分钟,可以通过setMaxInactiveInterval设置最大存活时间)

    (5)     Session是通过cookie的机制实现的(没有cookie, session无法工作)

    操作系统对内存管理方法(最近最少使用等原则)

    关闭浏览器,session回话就消失是错误的,关闭浏览器,只能说明不在进行会话,何时销毁有操作系统决定

    利用url重写,将sessionId放于地址后,必须保证所有页面都是动态页面(静态页面动态化才可以)

    2.       Session是通过cookie机制实现的

    1)  当浏览器键入url,第一访问服务器时候,服务器为请求生成唯一的标示JSESSIONID,存储在服务器的同时,响应客户端浏览器将JSESSIONID,写入到浏览器(内存或硬盘上);

    2)  再次请求时,请求中将客户端的Cookie中的 JESSIONID发送给服务器,服务器将检查是否是已经分配的,如果已经分配且未过期,为客户端服务;如果未分配,生成新的SESSIONID,返回给浏览器,依次服务器分配SESSIONID-à发送给浏览器—》浏览器在此请求携带cookie的JSESSIONID,在同一个回话中客户端与服务器,通过唯一标示SESSIONID是否为一个会话上下文(类似事务,或一个线程)

    response.addCookie(name,value);//向客户端添加Cookie

    request.getCookie(key);//服务器端获得客户端的Cookie

    获得客户端请求中的Cookie

    Cookie ck[] = request.getCookies();

    客户端与服务端通过JSESSIONID关键字标示一次会话

    jessionId为32位随机码

     

     

    通过重写url

    通过cookie方式类似,只是向服务器传递信息不通过cookie,通过url中的特定参数传递jsessionid

     

    如:http://localhost:8088/test.jsp;jessionid=32222222222332fffffff

     

    地址url中传递jessionid不能用普通地址参数格式传递

    必须是url;jsessionid=…..

    必须前边是分号

    *************

    //地址重新格式

    <%=response.encodeURL(“url”)%>

    =è对应结息后方式为

    http://url;jsessionid=343434343方式,这样就可以将服务端分配的jsessionid传递到服务器

    无论是地址还是cookie都是为了将jsessionid信息发送到服务器(key:value键值对)

    所有地址后边都增加都调用方法:response.encodeUrl(url),这样相当生成的地址携带者jsessionid

    无论是cookie还是url重新,其目的都是为向服务器传递jsessionid的值

    对于url重写,response.encodeUrl(url)-à其后地址生成jsessionid参数信息,但是此参数格式与普通不同必须是”;jsessionid=”+value格式

    2.    Web中的相对路径和绝对路径

    绝对路径和相对路径

    (1)     相对路径相对basepath(http://localhost:8080/sitename/)一定包含”/

    siteName是虚拟路径名称

    Basepath:

       String path=request.getContextPath();

       String basePath=request.getSchema()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;

    可以修改basePath,适应网页相对路径

    basePath=basePath+”test/”;//basePath中包含”/”

    即: http://localhost:8080/sitename/result.jsp

    <base href=”<%=basePath>”/>

    <form action=”result.jsp”>

    </form>

    可以

    <form action=”test/result.jsp”>

    </form>

    请求地址相对于basePath

    所以完整的请求路径为

    http://localhost:8080/sitename/test/result.jsp

    (2)     绝对路径

    相对tomcat的根目录而言

    如果路径最前边增加”/”是绝对路径

    如href=”/test/a.jsp

    对应请求地址为http://localhost:8080/test/a.jsp

    即: http://localhost:8080/result.jsp

    <form action=”/result.jsp”>

    </form>

    路径上增加”/”表示绝对路径,绝对路径相对容器(tomcat根目录),不加”/”不是相对路径(相对basepath而言)

    (3)     当页面不写basePath时候,此时相对路径为webRoot

    即相对路径,如果页面包含basePath就相对basePath,否则相对物理文件夹webRoot而言

    一般页面使用相对路径

    href=”<%=request.getContextPath()%>/test/a.jsp”

    request.getContextPath()=èwebsite的名字

    即${website}

    他是相对于物理发布路径而言的(webRoot)

     request.getContextPath()详解

    request.getContextPath()应该是得到项目的名字

    <%=request.getContextPath()%>是为了解决相对路径的名字的问题,可返回站点的根路径

    request.getScheme();
    回的协议名称,默认是http

    request.getServerName()
    返回的是你浏览器中显示的主机名,你自己试一下就知道了

    getServerPort()
    获取服务器端口号

    如果你想得到工程文件的实际物理路径,可通过:<%=request.getRealPath("/")%>,这样页面就会输出:d:/web

  • 相关阅读:
    vue_路由
    vue_列表动画
    vue生命周期详细
    Vue_过渡和动画
    vue_品牌列表案例(添加删除搜索过滤)
    vue_简单的添加删除
    v-if v-show
    vue_简单的添加数据
    JSON.parse()和JSON.stringify()
    vue_计算器
  • 原文地址:https://www.cnblogs.com/huboking/p/4330335.html
Copyright © 2011-2022 走看看