zoukankan      html  css  js  c++  java
  • jsp内置对象之response、out、config、exception、pageContext。

    本文是对Jsp内置对象的response、out、config、exception、pageContext知识点的详细总结。

    response对象

    Response内置对象和request内置对象是相应的,response内置对象用于相应客户请求,向客户端输出信息;Javax.servlet.HttpServletResponse接口

    1、自动刷新应用

    <%

        //每隔一秒刷新一次时间:

        response.setHeader("refresh", "1");

        //获取当前时间:

        Date mydate=new Date();

    %>

    <%=mydate.toLocaleString() %>

    2、页面重新定向应用 客户端跳转(使用JSP写了一个登录界面)

    jsp登录界面(responseScope.jsp),实现了记住密码,再次登录的时候能够直接输入账号和密码。。。。从cookie中读取,UserLogin.jsp中将用户名和密码存在了cookie中。

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>内置对象pageContext</title>
    <script type="text/javascript">
         function resetValue(){
        document.getElementById("username").value="";
        document.getElementById("pwd").value="";
         }
    </script>
    </head>
    <%
       String userName=null;
       String Pwd=null;
       Cookie []cookies=request.getCookies();
       for(int i=0;cookies!=null&& i<cookies.length;i++){
           if(cookies[i].getName().equals("usernameAndpwd")){
              userName= cookies[i].getValue().split("-")[0];
              Pwd=cookies[i].getValue().split("-")[1];
           }
       }
       if(userName==null){
           userName="";
       }
       if(Pwd==null){
           Pwd="";
       }
    %>
    <body>
        <form action="UserLogin.jsp" method="post" >
            <table>
                 <tr>
                     <td>用户名:</td>
                     <td><input type="text" id="username"name="username" value="<%=userName %>" /></td>
                 </tr>
                <tr>
                     <td>密码:</td>
                     <td><input type="password" id="pwd" name="pwd" value="<%=Pwd %>"/></td>
                 </tr>
                <tr>
                     <td>记住密码:</td>
                     <td><input type="checkbox" name="remember" value="remember-me"/></td>
                 </tr>
                 <tr>
                     <td><input type="submit" value="登录"></td>
                     <td><input type="button" value="重置" onclick="resetValue()"/></td>
                 </tr>
            </table>
        </form>
    </body>
    </html>
    responseScope.jsp

     存储到cookie中。

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
     <%@ page import="javax.servlet.http.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>UserLogin.jsp</title>
    </head>
    <body>
          <%
         String username =request.getParameter("username");
         String pwd=request.getParameter("pwd");
         String remember=request.getParameter("remember"); 
          if("remember-me".equals(remember)){
              Cookie usernameAndpwd=new Cookie("usernameAndpwd",username+"-"+pwd);
              usernameAndpwd.setMaxAge(1*60*60*24*7);//设置保存的时间周期是一周;
              response.addCookie(usernameAndpwd);  
          }
          response.sendRedirect("responseScope02.jsp"); 
          %>
    </body>
    </html>
    UserLogin.jsp

    3、4是对cookie和session的比较问题。

    3、操作cookie应用postget方法比较 post放在数据包里,get放在Url后面 get数据量小,不安全;

    4cookiesession的比较 cookie信息是存客户端的,session信息是存服务器的;

    参考别人的一篇文章介绍session和cookie的综合知识点。

    out对象

    Out内置对象主要是用来向客户端输出各种类型的数据,同时还可以管理应用服务器上的输出缓冲区。所以out内置对象的方法是向客户端输出数据和管理缓冲区;底层javax.servlet.jsp.JspWriter抽象类。

     这里举了两个例子:

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>out</title>
    </head>
    <body>
    <%
      //向客户端输出各种类型的数据
    
        out.println("<h1>");
        out.println("Hello Jsp & Servlet");
        out.println("</h1>");
        //获取缓冲区的大小管理应用服务器上的输出缓冲区

    int totalbuffer=out.getBufferSize();
    int unuse=out.getRemaining();//获取未使用的缓冲区的大小
        int user=totalbuffer-unuse;
        out.println("缓冲区总共大小为"+totalbuffer);
        out.println("未使用的缓冲区的大小为"+unuse);
        out.println("已经使用的缓冲区的大小为"+user);
    %>
    <h1> </h1>
    </body>
    </html>

    config对象

    Config内置对象是Jsp页面通过Jsp容器进行初始化时被传递的对象。Javax.servlet.ServletConfig。在Servlet初始化的时候,JSP引擎通过config向它传递信息。这种信息可以是属性名和属性值匹配的参数,也可以是通过ServletContext对象传递的服务器的相关信息。

     这里的需要对web.xml进行配置,路径:WebContent->WEB-INF->web.xml

    配置代码如下(在<web-app></web-app>之间插入下面的代码):

    <servlet>
              <servlet-name>init</servlet-name>
              <jsp-file>/sysInit.jsp</jsp-file>
              <init-param>
                  <param-name>jdbcName</param-name>
                  <param-value>com.mysql.jdbc.Driver</param-value>
              </init-param>
              <init-param>
                  <param-name>dbUrl</param-name>
                  <param-value>jdbc:mysql://localhost:3306/db_xxx</param-value>
              </init-param>
      </servlet>
         <servlet-mapping>
              <servlet-name>init</servlet-name>
              <url-pattern>/init</url-pattern>
          </servlet-mapping>

    其中客户端请求init的时候,在<servlet-mapping></servlet-mapping>中寻找到servlet-name然后到url-pattern路径中找到init文件,之后在<servlet></servlet>之间找到servlet-name为init,下一步映射到jsp-file中找到sysInit.jsp文件。(打开sysInit.jsp文件)

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
     <%@ page import="javax.servlet.http.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>UserLogin.jsp</title>
    </head>
    <body>
          <%
             String jdbcName=config.getInitParameter("jdbcName");
             String  dbUrl=config.getInitParameter("dbUrl");
          %>
          <h1>数据库名称: <%=jdbcName%></h1>
          <h1>连接池地址:<%=dbUrl %></h1>
    </body>
    </html>
    sysInit.jsp

    打开之后我们看到输出结果。

    exception对象

      Exception内置对象用来处理JSP文件在执行时发生的异常,它是java.lang.Throwable类的一个对象。

     我们写一个简单的例子:

     1 <%@ page language="java" contentType="text/html; charset=utf-8"
     2     pageEncoding="utf-8"%>
     3 <%@page errorPage="error.jsp" %>
     4  
     5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     6 <html>
     7 <head>
     8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     9 <title>exception</title>
    10 </head>
    11 <body>
    12      <%
    13      int a=1;
    14      int b=0;
    15      out.print(a/b);
    16      %>
    17 </body>
    18 </html>
    exception01.jsp

    在代码中我们可以看到

    <%@page errorPage="error.jsp" %>

    错误信息传递到了error.jsp文件。在error.jsp文件内利用exception获取错误信息。内置对象out 输出结果。

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ page import="java.util.*"%>
    <%@ page isErrorPage="true" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>ErrorMessage.jsp</title>
    </head>
    <body>
         <% if(exception!=null){
             out.println("程序出错,错误信息是");
             out.println(exception.getMessage());
         }
         %>
    </body>
    </html>
    error.jsp

    pageContext对象

    pageContext内置对象是一个比较特殊的对象,它相当于页面中所有对象功能的集合,即使用它可以访问到本页面中所有对象。pageContext内置对象由jsp容器创建并初始化,pageContext对象提供了对JSP页面所有对象及控件的访问。

     例子是让page,request,session application分别设置数值。然后pageContext取出输出。

     1 <%@ page language="java" contentType="text/html; charset=utf-8"
     2     pageEncoding="utf-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     7 <title>内置对象pageContext</title>
     8 </head>
     9 <body>
    10 <%  
    11     //利用pagecontext设置page request session application的值。
    12     pageContext.setAttribute("name0", "pageContext");
    13     request.setAttribute("name1", "requestInfo");
    14     session.setAttribute("name2","sessionInfo");
    15       application.setAttribute("name3","applicationInfo");
    16       //利用pageContext获取取值
    17     out.println("pageContext: "+pageContext.getAttribute("name0")+"<br/>");
    18       out.println("request: "+pageContext.getRequest().getAttribute("name1")+"<br/>");
    19       out.println("session: "+pageContext.getSession().getAttribute("name2")+"<br/>");
    20       out.println("application: "+pageContext.getServletContext().getAttribute("name3"));
    21 %>
    22 </body>
    23 </html>
    pageContext
  • 相关阅读:
    js没有重载
    零基础学习hadoop到上手工作线路指导(初级篇)
    hadoop1.x和2.x的一些主要区别
    LIBCURL教程
    钩子函数大全(2)
    Visual Studio快捷键
    Linux上搭建Hadoop2.6.3集群以及WIN7通过Eclipse开发MapReduce的demo
    Hadoop2.7.1安装与配置
    超详细单机版搭建hadoop环境图文解析
    Windows下运行Hadoop
  • 原文地址:https://www.cnblogs.com/zyxsblogs/p/9651039.html
Copyright © 2011-2022 走看看