• JSP内置对象


    HTTP协议与JSP

    我们在浏览器中访问的网页,都是基于HTTP协议的。回顾我们的第一个JSP程序——Hello World,在浏览器输入localhost:8080/Hello.jsp,我们就可以看到Hello world显示在浏览器中。这背后是什么起了作用?

    使用浏览器从网站获取HTML页面时,用到的是我们十分耳熟的、听起来非常专业的协议——HTTP协议(超文本传输协议),参加博文HTTP协议概述

    HTTP协议规定了信息在internet上的传输方法,特别是规定了浏览器与服务器的交互方法和传递信息方式。常用的方法有GET、POST等。HTTP协议中一个非常重要的内容是HTTP报文,报文是在HTTP 应用程序之间发送的数据块,是传递信息的载体。详细内容参见:http报文详解

    我们打开一个网页的过程,简单的说包括请求和响应两个阶段。

    首先浏览器向目标主机打开一个连接;并对相应的资源发出请求报文。服务器收到请求后向客户端发出响应报文,所以HTTP协议的核心就是请求和响应。

    现在回到JSP的内容上,上篇博文JSP基本语法,本文为大家介绍JSP的内置对象。在JSP页面中有些对象不用什么就可以在java程序片和表达式部分使用,这就是JSP的内置对象。

    jsp包含9种内置对象:request、response、out、page、session等。其中request、response分别代表请求和响应对象,是较为重要的的两个。这两个对象提供了服务器和浏览器通信方法的控制。如果有HTTP协议的基础,你一看字面意思就能明白这两个对象的作用,以及一些常用的方法,快速掌握JSP也是很简单的。HTTP协议的知识在web编程中非常重要。

    《HTTP权威指南》完整文字版下载地址http://pan.baidu.com/s/1bnz1dMn

    1.request:请求对象

    该对象封装了用户提交的信息,通过调用该对象想相应的方法可以获取封装的信息。其主要方法如下:

    request.getParameterNames(); //Enumeration<String>
    request.getParameter(String name);//String
    request.getHeader(Sring name); //String
    request.getHeadersNames(); //Enumeration<String>
    request.getRequestDispatcher("/somePage.jsp").forward(request, response); 
    //请求转发
    

    获取请求头

    Enumeration<String> headernames =request.getHeaderNames();
    while(headernames.hasMoreElements()){
      String headername=headernames.nextElement();
      System.out.print(headername+": ");
      System.out.println(request.getHeader(headername));                        
    }
    

    获取post数据,request.getParameter(String s)将失效

    StringBuffer sb = new StringBuffer();
    BufferedReader br = new BufferedReader(new InputStreamReader(
    request.getInputStream()));
    String s = "";
    while ((s = br.readLine()) != null) {
      sb.append(s);
    }
    System.out.println(sb.toString());
    

    解决中文乱码

    //post方式
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding( "utf-8" );
    //get方式
    String string = request.getParamers("");
    String = new String(string.getBytes("ISO8859-1","utf-8"));

    2.response:响应对象

    该对象对客户的请求作出响应,向客户端发送数据。

    response.sendRedirect("index.jsp"); //重定向
    response.setContenType(String s);
    response.addHeader(String name,String value);
    response.addCookie(Cookie c);

    一个典型的response的HTTP响应报文头

    HTTP/1.0 200OK 
    Date: Mon,31Dec200104:25:57GMT 
    Server: Apache/1.3.14(Unix) 
    Content-type: text/html 
    Last-modified: Tue,17Apr200106:46:28GMT 
    Content-length: 39725426
    

    关于报文的详细内容,参加HTTP报文详解

    3.session:会话对象

    Tomcat服务器可以使用session记录有关连接的信息。这个session对象有一个String类型的ID,当客户端请求服务器时,服务器会将这个ID号发送给客户端,存放在客户端的Cookie中。

    生命周期:客户端向服务器发送第一个请求,服务器创建一个Session对象,到关闭浏览器销毁(近似这么理解)。

    session.getID(); //String
    session.setAttribute(String key,Object obj);
    session.getAttribute(String key); //Object
    session.isNew();
    

    session在web开发中特别重要,是解决http协议无状态问题的服务端方案,它能让客户端和服务端一系列交互动作变成一个完整的事务,能使网站变成一个真正意义上的软件。我这里有个关于session的小例子——猜数字,文件如下:

    猜数字.rar

    4.application :应用程序对象

    服务器启动后就产生了这个application对象,所有用户共享这个application对象。直到服务器关闭。

    application.setAttribute(String key,Object obj);
    application.getAttribute(String key); //Object

    5.cookie:客户端对象

    cookie是web站点保存在用户硬盘上的一段文本,以“键值对”的方式记录。

    向客户端发送cookie

    Cookie c=new Cookie("username","guang"); 
    response.addCookie(c);

    读取保存在客户端的cookie

    Cookie cookies[]=request.getCookies(); 
    for(Cookie c:cookies){ 
        if("username".equals(c.getName())){ 
            out.println(C.getValue()); 
        } 
    } 

    设置cookie的有效时间

    Cookie c=new Cookie("username","tom"); 
    c.setMaxAge(3600);//3600秒

    6.out:输出对象

    out.println(); 
    out.newLine(); 
    out.close(); 

    7.config:配置对象

    8.page:页面对象

    9.pageContext:页面上下文

  • 相关阅读:
    Android 富文本框实现 RichEditText
    mmap和普通文件读写的区别和比较 & mmap的注意点
    exit和_exit的区别
    绑定线程到特定CPU处理器
    软中断与硬中断 & 中断抢占 中断嵌套
    线程与信号处理
    内核信号处理 & CPU8个通用寄存器
    SIGSEGV 和 SIGBUS & gdb看汇编
    Linux内核态用户态相关知识 & 相互通信
    Linux进程空间分布 & 上下文
  • 原文地址:https://www.cnblogs.com/klguang/p/4711335.html
Copyright © 2020-2023  润新知