美文网首页
JAVA Web基础学习---JSP(二)

JAVA Web基础学习---JSP(二)

作者: 飞灰非辉 | 来源:发表于2019-06-01 17:28 被阅读0次

    JSP内置对象

    JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的内置对象,一共有9种内置对象,
    分别为:out 、 request 、 response 、 session 、 applicationPage 、 pageContext 、 exception 、 config
    其中常用的有:out 、 request 、 response 、 session 、 application
    不太常用的对象:Page 、 pageContext 、 exception 、 config

    1.out对象

    out对象是JspWriter类的实例,是向客户端(这里指浏览器)输出内容的常用对象。
    常用方法
    · void println()向客户端打印字符
    · void clear()清除缓冲区的内容。如果在flush之后调用,会抛出异常
    · void clearBuffer() 也是清除缓冲区内容,但在flush之后不会抛出异常
    · void flush()将缓冲区内容输出到客户端
    · int getRemaining()返回缓冲区还剩余多少可用
    · int getBufferSize()返回缓冲区的大小(字节数),如不设缓冲区则为0
    · boolean isAutoFlush()返回缓冲区满时,是否自动清空缓冲区
    · void close()关闭输出流

    2.request对象

    request对象表示客户端的请求,客户端的请求信息被封装在request对象中,通过他才能了解到客户的需求,然后做出响应,他是HttpServletRequest类的实例,request对象具有请求域,即完成客户端的请求之前,该对象一直有效.
    常用方法

    1. String getParameter(String name)返回name指定参数的参数值(用户名,密码)
    2. Stringp[] getParameterValues(String name)返回包含参数name的所有值数组(复选框)
    3. void setAttribute(String,Object):存储此请求中的属性
    4. object getAttribute(String name)返回指定属性的属性值
    5. String getContentType():得到请求体的MIME类型
    6. String getProtocol()返回请求用的协议类型以版本号
    7. String getServerName():返回接受请求的服务器主机名

    8.int getServerPort():返回服务器接受此请求所用的端口号
    9.String getCharacterEncoding():返回字符编码方式
    10.void setCharacterEncodign():设置请求的字符编码方式在server.xml的<connector></connector>内添加 URIEncoding="UTF-8"
    11.int getContentLength():返回请求体的长度(以字节数)
    12.String getRemoteAddr():返回发送此请求的客户端IP地址
    13.String getRealPath(String path):返回虚拟路径的真实路径

    下面通过一个小例子.看一下实现结果:
    首先在项目中新建一个jsp文件,命名为reg.jsp,用于创建一个注册界面,把输出字符编码更改为utf-8,如下图:


    image.png

    使用表单方式创建界面结构,程序如下图:


    image.png
    新建一个request.jsp文件,用于接收表单传输的内容并测试request对象方法,程序代码如下:
    image.png
    实现结果如下:
    image.png

    点击登录之后,运行结果如下图:


    image.png

    response对象

    respones对象包含了响应客户请求的有关信息,但在JSP中很少直接到它,它是HttpServletResponse类的实例,response对象具有页面的作用域,即访问一个页面时,该页面的response对象只能对这次访问有效,其他的页面response对象对当前页面无效
    常用方法:
    String getCharacterEncoding( ) 返回响应用的是何种字符编码
    void setContentType (String type) 设置响应的MIME类型
    PrintWriter getWriter( ) 返回可以向客户端输出字符的一个对象(注意比较:PrintWriter 与内置out对象的区别)
    sendRedirect(java.lang.String location) 重新定向客户端的请求
    测试代码如下所示:

    image.png
    image.png
    有图可见,虽然out对象的输出程序代码写在前面,但是显示在由PrintWriter getWriter( )定义的outer对象后面.可见其两者的优先关系.
    请求转发与请求重定向
    1.请求重定向:
    客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会发成改变!
    2.请求转发:
    服务器行为,request.getRequestDispatcher().forward(request,response);是一次请求,转发后请求对象会保存,地址栏的URL地址不会发成改变!

    session对象

    session介绍
    1.1 session表示客户端与服务端的一次会话
    1.2 Web中的session指的是用户在浏览某个网站的时候,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间
    1.3 从上述定义中可以看到,session实际上是一个特定的时间概念
    session保存在服务器内存中,并未不同用户保存不同session
    session对象
    session对象是一个JSP内置对象
    session对象在第一个JSP页面被装载时自动创建,完成会话期管理
    从一个客户打开浏览器并连接服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话
    当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种方法知道这是个客户,就需要session对象
    session对象是HttpSession类的实例
    常用方法
    session对象常用方法
    long getCreationTime():返回创建SESSION创建时间
    public String getId():返回SESSION创建时JSP引擎为他设的唯一ID号
    public Object setAttribute(String name,Object value):使用指定名称将对象绑定到此会话
    public Object getAttribute(String name):返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在改名下,则返回null
    String[] getValueNames()"返回一个包含此SESSION中所有可用属性的数组
    int getMaxInactiveInterval():返回两次请求间隔多长时间此SESSION被取消(单位秒)
    测试程序如下:

    image.png
    页面结果如下:
    image.png
    当设置了session最大生存期限为10秒时,点击跳转到session2,实现如下图:
    image.png
    可见ID编号变了,说明这是第二次会话.
    当取消session最大生存期限后,结果如下图:
    image.png
    可见ID号相同,用户名均存在,是同一次会话.
    session生命周期
    创建->活动->销毁
    1. 创建
      当客户端第一次访问某个jsp或者servlet时候,服务器会为当前会话创建一个sessionID,每次客户端向服务端发送请求时,都会将此sessionID携带过去,服务端会对此sessionId进行校验,会判断是否是同意会话
    2. 活动
      2.1 某次会话当中通过超链接打开的新页面属于同一次会话
      2.2 只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同意项目时属于同一会话
      2.3 除非本次会话的所有页面都关闭后在重新访问某个Jsp或者Servlet将会创建新的会话
      注意事项:
      注意原有会话还存在,只是这个旧的sessionID任然存在与服务端,只不过再也没有客户端携带它然后交与服务端校验
      1. 销毁
        session销毁有三种方式
        3.2 调用了session.invalidate() 3.3 session超时(过期)
        3.4 服务器重新启动

    相关文章

      网友评论

          本文标题:JAVA Web基础学习---JSP(二)

          本文链接:https://www.haomeiwen.com/subject/ajkatctx.html