jsp_learn_1

一、jsp简介

1.jsp的作用
    Servlet:
        缺点:不适合设置html响应体,需要大量的response.getWriter().print("***")
        优点:动态资源,可以编程
    html:
        缺点:html是静态页面,不涉及动态信息
        优点:不用为输出html标签而发愁
    jsp:java server pages
        优点:在原html的基础上添加java脚本,构成jsp页面 

2.jsp和servlet的分工:
    jsp:
        作为请求发起页面,例如显示表单、超链接
        作为请求结束页面,例如显示数据
    Servlet:
        作为请求中数据处理的环节
    原理如下:

3.jsp的组成

jsp=html+java脚本+jsp标签(指令)
jsp中无需创建即可使用的对象一共有9个,被称之为9大内置对象,例如:request对象,out对象
3种java脚本:
        <%...%>:java代码片段(常用),用于定义0-N条java语句
            方法内可以写什么,它就可以写什么
        <%=...%>java表达式,用于输出(常用),用于输出一条表达式(变量)的结果
            response.getWriter().print(...)这里能放什么,它就可以放什么
        <%!...%>声明,用来创建类的成员变量和成员方法(基本不用,但容易考到)
            class Myclass{....} 里面能放什么,它就可以放什么 

4.jsp原理 

       jsp其实是一种特殊的Servlet
        当jsp页面第一次被访问时,服务器会把jsp编译成java文件(这个java文件其实就是一个Servlet类)
        然后再把java编译成.class文件
        然后创建该类对象
        最后调用它的service()方法


        第二次请求同一jsp时,直接调用service()方法
    注:out.write()和out.println()是相同的功能 

5.jsp注释 

    <%.......%>当服务器把jsp编译成java文件时已经忽略了注释部分 

二、Cookie

1.Cookie的用途

    服务器使用Cookie来跟踪客户端状态
    保存购物车(购物车中的商品不能用request来保存,因为他是一个用户向服务器发出的多个请求信息)
    显示上次登录信息(也是一个用户多个请求) 

2.javaweb中使用Cookie

   原始方式:
        使用response发送Set-Cookie响应头
        使用request获取Cookie请求头
    便捷方式:
        使用response.addCookie()方法向浏览器保存Cookie
        使用request.getCookie()方法获取浏览器归还的Cookie (null)

    注意:Cookie是不能跨浏览器的!!!! 

3.Cookie详解

    Cookie不只有name和value两个属性
    Cookie的maxAge:最大生命周期,即Cookie可保存的最大时长,以秒为单位。
    maxAge > 0:保存在本地硬盘上,单元为秒
    maxAge < 0:只在内存中存活;
    maxAge = 0:浏览器会马上删除这个Cookie 

4.Cookie的path

三、HttpSession

1.HttpSession简介

    HttpSession是由javaweb提供的,用来会话跟踪的类,ses sion是服务器端对象,保存在服务器端。
    HttpSession是Servlet三大域对象之一(request、session、application(ServletContext),有setAttribute()\get\remove
    HttpSession底层依赖Cookie,或是URL重写 

2.HttpSession作用

    会话范围:从用户首次访问服务器端开始,到用户关闭浏览器结束(30分钟不发起session也会消失)
        会话:一个用户对服务器端的连贯性请求,所谓连贯性请求,就是该用户在多次请求间未关闭浏览器
        服务器会为每个客户端创建一个Session对象
    Servlet中得到Session对象:HttpSession session=request.getSession();
    jsp中得到Session对象:内置对象,不用创建,直接可使用
    服务器不会马上给你创建session,在第一次获取session时(request.getSession(),才会创建!) 

注:request.getSession(flase):如果session缓存中(如果cookie不存在),不存在session,那么返回null,而不会创建session对象

3.其他api

    void invalidate():让session失效,可用在  “退出”超链接,当用户点击时调用此方法
    boolean isNew() 

4.url重写

     session依赖Cookie,目的是让客户端发出请求是时归还sessionId,这样才能找到对应的session
    若客户端禁用了Cookie,就无法得到sessionId,那么session也就无用了

    此时可以使用URL重写来替代Cookie
        让网站的所有超链接、表单中都添加一个特殊的请求参数,即sessionId
        这样服务器可以通过获取请求参数的sessionId,从而找到session对象
    respose.encodeURL(String url)
        该方法会对url进行智能的重写,当请求中没有归还sessionId这个cookie,那么该方法会重写url,否则不重写!

猜你喜欢

转载自blog.csdn.net/Hpsyche/article/details/81561785