zoukankan      html  css  js  c++  java
  • jsp笔记3(内置对象)

    jsp脚本中的9个内置对象:
      1.application:javax.servlet.ServletContext的实例对象,该实例对象代表jsp所属的web应用本身,可用于在jsp页面或Servlet之间交换信息。由于Servlet没有application内置对象,故一般Servlet中用ServletContext sc = getServletConfig().getServletContext()来获取ServletContext实例

      2.config:javax.servlet.ServletContext的实例对象,代表该jsp的配置信息

      3.exception:java.lang.Throwable的实例,代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page的属性isErrorPage属性为true时,该对象才可以使用

      4.out:javax.servlet.jsp.JspWriter的实例,代表jsp页面的输出流,用于输出内容,形成html页面

      5.page:代表该页面本身,也就是Servlet中的this

      6.pageContext:javax.servlet.jsp.PageContext的实例,代表该jsp页面上下文,使用该对象可以访问页面中的共享数据,并可以通过该对象获取其他的内置对象

      7.request:javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端的请求参数都被封装在该对象里

        request的作用:
        1.获取请求头,请求参数
          获取请求头:
          String getHeader(String name):获取指定请求头的值
          java.util.Enumeration<String> getHeaderNames():获取所有请求头的名称
          java.util.Enumeration<String> getHeaders(String name):获取指定请求头的多个值
          int getIntHeader(String name):获取指定请求头的值,并将该值转为整数值
          获取请求参数:
          String getParameter(String paramName):获取paramName的请求参数的值
          Map getParameterMap():获取所有的请求参数名和参数值所组成的Map对象
          Enumeration getParameterNames():获取所有请求参数名所组成的Enumeration对象
          Stringp[] getParameterValues(String name):paramName请求参数的值,当该请求参数有多个值时,该方法将返回多个值所组成的数组

        2.操作request范围的属性,比如setAttribute(key,value),getAttribute(key);

        3.执行forward或include,比如getRequestDispatcher(/path).forward(request,respone);

      8.respone:javax.servlet.http.HttpServletResponse的实例,代表服务器对客户端的响应。一本不用response直接响应客户端,而是使用out来输出字符响应。

        respone的作用:
        1.response通常用于重定向,response.sendRedirect("a.jsp");

        2.获取输出字节流,来响应非字符响应,response.getOutputStream();

        3.增加Cookie
        Cookie通常用于网站记录用户的一些信息。Cookie与session的不同之处在于:session会随浏览器的关闭而失效,Cookie会一直存放在客户端机器上直到超出Cookie的生命期限
          增加Cookie的步骤:
            1.创建Cookie实例
            2.设置生命期限,如果不设置,Cookie将会随浏览器的关闭而消失
            3.向客户端写Cookie
     例子:增加Cookie与获取Cookie

    先看增加Cookie的jsp:

    <%@ page import="java.sql.DriverManager" %>
    <%@ page import="java.sql.Connection" %>
    <%@ page import="java.sql.Statement" %>
    <%@ page import="java.sql.ResultSet" %><%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2018/1/4
      Time: 16:46
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>增加Cookie示例</title>
    </head>
    <body>
        <%
            //Cookie值默认不支持中文字符,如果需要设置中文字符,则需要现将中文编码,然后再获取Cookie的时候再解码
            String username = "hello";
            //1.创建Cookie
            Cookie cookie = new Cookie("username",username);
            //2.设置生命期限  有效期为1小时
            cookie.setMaxAge(3600);
            //3.将Cookie写到客户顿
            response.addCookie(cookie);
        %>
    
    </body>
    </html>

    再看获取Cookie的jsp:

    <%@ page import="java.sql.DriverManager" %>
    <%@ page import="java.sql.Connection" %>
    <%@ page import="java.sql.Statement" %>
    <%@ page import="java.sql.ResultSet" %><%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2018/1/4
      Time: 16:46
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>获取Cookie示例</title>
    </head>
    <body>
        <%
           //1.获取所有的Cookie
            Cookie[] cookies = request.getCookies();
            //遍历cookie 找到符合要求的Cookie
            for(Cookie c:cookies){
                if(c.getName().equals("username")){
                    out.println(c.getValue());
                }
            }
        %>
    </body>
    </html> 

      9.session:javax.serlvet.http.HttpSession的实例,代表一次会话。当客户端浏览器与服务器建立连接时,会话开始,当客户端关闭浏览器与服务器断开连接时,会话结束。通常用来跟踪用户的会话信息,比如判断用户是否登录

    购物车应用例子:

    shop.jsp:

    <%@ page import="java.sql.DriverManager" %>
    <%@ page import="java.sql.Connection" %>
    <%@ page import="java.sql.Statement" %>
    <%@ page import="java.sql.ResultSet" %><%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2018/1/4
      Time: 16:46
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>选择购买物品</title>
    </head>
    <body>
        <form action="processBuy.jsp" method="post">
            书籍:<input type="checkbox" name="item" value="book"/><br/>
            电脑:<input type="checkbox" name="item" value="computer"/><br/>
            汽车:<input type="checkbox" name="item" value="car"><br/>
            <input type="submit" value="购买"/>
    
        </form>
    
    </body>
    </html>

    processBuy.jsp:

    <%@ page import="java.sql.DriverManager" %>
    <%@ page import="java.sql.Connection" %>
    <%@ page import="java.sql.Statement" %>
    <%@ page import="java.sql.ResultSet" %>
    <%@ page import="java.util.Map" %>
    <%@ page import="java.util.HashMap" %><%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2018/1/4
      Time: 16:46
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>选择购买物品</title>
    </head>
    <body>
        <%
            //1.从session中取出map集合
            Map<String,Integer> map = (Map<String, Integer>) session.getAttribute("itemMap");
            //2.map为空就创建
            if(map == null){
                map = new HashMap<String,Integer>();
                map.put("书籍",0);
                map.put("电脑",0);
                map.put("汽车",0);
            }
            //3.map不为空
            //4.获取上一个页面的请求参数
            String[] buys = request.getParameterValues("item");
                for(String item:buys){
                    if( item.equals("book")){
                        map.put("书籍",map.get("书籍").intValue()+1);
                    }else if(item.equals("computer")){
                        map.put("电脑",map.get("电脑").intValue()+1);
                    }else if(item.equals("car")){
                        map.put("汽车",map.get("汽车").intValue()+1);
                    }
                }
            
            //5.将map存进session中
            session.setAttribute("itemMap",map);
    
        %>
    
        您所购买的物品:<br/>
        书籍:<%=map.get("书籍")%><br/>
        电脑:<%=map.get("电脑")%><br/>
        汽车:<%=map.get("汽车")%><br/>
        <p><a href="shop.jsp">再次购买</a></p>
    </body>
    </html>

      jsp的内置对象对应于Servlet中的service()方法的局部变量,但是request,response除外,因为这两个是作为service()方法的形参

  • 相关阅读:
    [leetcode]N-Queens II @ Python
    [leetcode]N-Queens @ Python
    [leetcode]Symmetric Tree @ Python
    [leetcode]Same Tree @ Python
    [leetcode]Validate Binary Search Tree @ Python
    [leetcode]Recover Binary Search Tree @ Python
    关于Kubernetes Master高可用的一些策略
    hue 登录访问不了HDFS webhdfs_url 调整
    java项目代码上线
    nginx实现最简单的直播
  • 原文地址:https://www.cnblogs.com/eleven258/p/8206171.html
Copyright © 2011-2022 走看看