zoukankan      html  css  js  c++  java
  • 九大内置对象及四个域对象的总结

    https://blog.csdn.net/liufeifeihuawei/article/details/92434886

    九大内置对象
    指在JSP的<%=%> 和<% %>中可以直接使用的对象:没有特别说明可以开关的默认是开启的

    pageContext(重要)
    1、本身也是一个域对象:它可以操作其它三个域对象(request session application)的数据
    void setAttribute(String name,Object o);
    Object getAttribute(String name);
    void removeAttribute(String name);
    操作其它域对象的方法
    void setAttribute(String name,Object o,int Scope);
    Object getAttribute(String name,int Scope);
    void removeAttribute(String name,int Scope);
    scpoe的值:
    PageContext.PAGE_SCOPE
    PageContext.REQUEST_SCOPE
    PageContext.SESSION_SCOPE
    PageContext.APPLICATION_SCOPE
    findAttribute(String name);
    自动从page request session application依次查找,找到了就取值,结束查找。
    2、它可以创建其它的8个隐式对象
    在普通类中可以通过PageContext获取其他JSP隐式对象。自定义标签时就使用。
    3、提供了的简易方法
    pageContext.forward(“2.jsp”);
    pageContext.include(“2.jsp”);

    四大域对象
    PageContext : pageConext 存放的数据在当前页面有效。开发时使用较少。
    ServletRequest: request 存放的数据在一次请求(转发)内有效。使用非常多。
    HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息,购物车功能。
    ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。

    补充:具体实例

    HttpServletRequest
    对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
    获得客户机信息
      getRequestURL方法返回客户端发出请求时的完整URL。
      getRequestURI方法返回请求行中的资源名部分。
      getQueryString 方法返回请求行中的参数部分。
      getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。
      getRemoteAddr方法返回发出请求的客户机的IP地址。
      getRemoteHost方法返回发出请求的客户机的完整主机名。
      getRemotePort方法返回客户机所使用的网络端口号。
      getLocalAddr方法返回WEB服务器的IP地址。
      getLocalName方法返回WEB服务器的主机名。
    /------------------华丽的分割线---------------------/
    package gacl.request.study;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    /**

    @author gacl

    通过request对象获取客户端请求信息
    */
    public class RequestDemo01 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    /**
    * 1.获得客户机信息
    */
    String requestUrl = request.getRequestURL().toString();//得到请求的URL地址
    String requestUri = request.getRequestURI();//得到请求的资源
    String queryString = request.getQueryString();//得到请求的URL地址中附带的参数
    String remoteAddr = request.getRemoteAddr();//得到来访者的IP地址
    String remoteHost = request.getRemoteHost();
    int remotePort = request.getRemotePort();
    String remoteUser = request.getRemoteUser();
    String method = request.getMethod();//得到请求URL地址时使用的方法
    String pathInfo = request.getPathInfo();
    String localAddr = request.getLocalAddr();//获取WEB服务器的IP地址
    String localName = request.getLocalName();//获取WEB服务器的主机名
    response.setCharacterEncoding(“UTF-8”);//设置将字符以"UTF-8"编码输出到客户端浏览器
    //通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码
    response.setHeader(“content-type”, “text/html;charset=UTF-8”);
    PrintWriter out = response.getWriter();
    out.write(“获取到的客户机信息如下:”);
    out.write("

    ");
    out.write(“请求的URL地址:”+requestUrl);
    out.write("
    ");
    out.write(“请求的资源:”+requestUri);
    out.write("
    ");
    out.write(“请求的URL地址中附带的参数:”+queryString);
    out.write("
    ");
    out.write(“来访者的IP地址:”+remoteAddr);
    out.write("
    ");
    out.write(“来访者的主机名:”+remoteHost);
    out.write("
    ");
    out.write(“使用的端口号:”+remotePort);
    out.write("
    ");
    out.write(“remoteUser:”+remoteUser);
    out.write("
    ");
    out.write(“请求使用的方法:”+method);
    out.write("
    ");
    out.write(“pathInfo:”+pathInfo);
    out.write("
    ");
    out.write(“localAddr:”+localAddr);
    out.write("
    ");
    out.write(“localName:”+localName);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doGet(request, response);
    }

    }

    获得客户机请求头
    getHeader(string name)方法:String
    getHeaders(String name)方法:Enumeration
    getHeaderNames()方法

    获得客户机请求参数(客户端提交的数据)
    getParameter(String)方法(常用)
    getParameterValues(String name)方法(常用)
    getParameterNames()方法(不常用)
    getParameterMap()方法(编写框架时常用)

    HttpServletResponse
    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。
    request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了
    session
    一、在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
    二、Session和Cookie的主要区别
    Cookie是把用户的数据写给用户的浏览器。
    Session技术把用户的数据写到用户独占的session中。
    Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。
    三、session实现原理
    服务器是如何实现一个session为一个用户浏览器服务的?
    服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务


    ————————————————
    版权声明:本文为CSDN博主「飞上云端看彩虹」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/liufeifeihuawei/article/details/92434886

  • 相关阅读:
    MYSQL查询优化:profile功能
    MYSQL查询优化:调度和锁定
    SSL/TLS 协议详解
    flash传值给javascript,并在html页面输出
    【图片预加载】
    【minheight】最小高度 IE6、7、FF
    【图片等比缩放】CSS解决
    标签的空链接 href="#" 替换方案
    【实现三角】css的border属性解决方案
    【PNG在IE6下透明】——3种方案
  • 原文地址:https://www.cnblogs.com/jishumonkey/p/12122664.html
Copyright © 2011-2022 走看看