JSP主要内置对象

JSP主要内置对象


内置对象是指可以不用显式声明并且可以直接使用的对象。本篇介绍最常用的五个内置对象—— request、response、session、application、pageContext

1.1request请求对象

request请求对象通常用来设置取得 request范围变量。就是说,request对象用来封装客户端的请求信息。通过request的 setAttribute() 来设置属性,通过request的 getAttribute() 取得属性。request对象是HttpServletRequest接口的实例

范例: 用request对象设置和获得request范围变量。
RequestScopeDemo01.jsp

<%@ page language = "java" pageEncoding = "gb2312" >
<html>
     <head>
           <title>
                  RequestScopeDemo01
           </title>
     <head>
     <body>
            <%
               request.setAttribute("name", "James"); //保存name属性在request范围
               request.setAttribute("age", "30"); //保存age属性在request范围
               request.setAttribute("sex", "男"); //保存sex属性在request范围
             %>
             <jsp:forward page = "RequestScopeDemo02.jsp"></jsp:forward>
    </body>
 </html>

RequestScopeDemo02.jsp

<%@ page language = "java" pageEncoding = "gb2312" >
<html>
      <head>
            <title>
                   RequestScopeDemo02
            </title>
      </head>
      <body>
            <%
                String name = (String)request.getAttribute("name");
                String age = (String)request.getAttribute("age");
                String sex = (String)request.getAttribute("sex");
                out.println("姓名:" + name + "<br>");
                out.println("年龄:" + age + "<br>");
                out.println("性别:" + sex + "<br>");
             %>
       </body>
</html>

在浏览器地址栏输入 http://localhost:8080/JavaWeb03/RequestScopeDemo01.jsp”。可以看到如下界面:
在这里插入图片描述
范例: 使用request对象的getParameter(String name)方法接收用户参数。
RequestDemo.jsp

<%@ page language = "java" pageEncoding = "gb2312" >
<html>
     <head>
           <title>
                 RequestDemo
           </title>
     </head>
     <body>
           <%
              request.setCharacterEncoding("UTF-8");//设置参数编码格式
              String username = request.getParameter("username");//获得username参数值
              String upassword = request.getParameter("upassword");//获得upassword参数值
              String repassword = request.getParameter("repassword");//获得repassword参数值
              String name = request.getParameter("name");
              String age = request.getParameter("age");
              String sex = request.getParameter("sex");
           %>
           用户名:<%= username %><br>
           密码:<%= upassword %><br>
           确认密码:<% repassword %><br>
           姓名:<% name %><br>
           年龄:<% age %><br>
           性别:<% sex %><br>
      </body>
 </html>

RequestForm.html

<html>
  <head>
    <title>RequestForm.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
         <form action = "HelloWorld.jsp" method = "post">
              <table>
                     <tr>
                          <td>用户名</td>
                          <td><input type = "text" name = "username" /></td>
                     </tr>
                     <tr>
                          <td>密码</td>
                          <td><input type = "password" name = "upassword" /></td>
                     </tr>
                     <tr>
                           <td>确认密码</td>
                           <td><input type = "password" name = "repassword" /></td>
                     </tr>
                     <tr>
                           <td>姓名</td>
                           <td><input type = "text" name = "name" /></td>
                     </tr>
                     <tr>
                          <td>年龄</td>
                          <td><input type = "text" name = "age" /></td>
                     </tr>
                     <tr>
                          <td>性别</td>
                          <td>
                             <input type = "radio" name = "sex" value = "男" />男
                             <input type = "radio" name = "sex" value = "女" />女
                          </td>
                      </tr>
                      <tr>
                          <td><input type = "submit" value = "注册" /></td>
                          <td><input type = "reset" value = "重置" /></td>
                       </tr>
              </table>
         
         </form>
  </body>
</html>

在浏览器地址栏输入 **“http://localhost:8080/JavaWeb03/RequestForm.html”。可以看到如下界面:
在这里插入图片描述
在这里插入图片描述
注意点:<form >标签提交表单时,要注意是否会发生提交中文乱码,所以在RequestDemo.jsp文件里面有一句

 request.setCharacterEncoding("UTF-8");//设置参数编码格式

如果不采用UTF-8,而是采用gb2312编码格式,则会出现表单提交时中文乱码。

1.2response响应对象

response对象包含了响应客户端请求的有关信息,是HTTPServletResponse类的实例。response对象用来添加cookies、添加标头、设置页面重定向等。response对象包含了很多方法,重点介绍sendRedirect(URL),用来实现页面跳转。

范例: 通过response对象来设置页面文件格式,以及页面的重定向。
ResponseDemo.jsp

<%@ page language = "java" pageEncoding = "gb2312" >
<html>
      <head>
            <title>
                    ResponseDemo
            </title>
      </head>
      <body>
             <p>将当前页面保存为word文档吗?</p>
             <form action = "HelloWorld.jsp" method = "get" >
                  <input type = "submit" value = "yes" name = "submit">
                  <input type = "submit" value = "no" name = "submit">
            </form>
            <%
                String str = request.getParameter("submit");//获得submit参数值
                if(str == null){
                    str = "";
                  }
                if(str.equals("yes")){
                  response.setContentType("application/msword;charset = GB2312");
                 }
                 if(str.equals("no")){
                   response.sendRedirect("ResponseDemo.jsp");//Response的重定向
                  }
             %>
        </body>
 </html>

在浏览器地址栏输入 http://localhost:8080/JavaWeb03/ResponseDemo.jsp 。可以看
到如下界面:
在这里插入图片描述
点击yes则会弹出询问下载的提示框,点击no则相当于刷新。

1.3session会话对象

session对象表示用户的会话状况,用于保存用户的各种信息,直到生命周期时或者被认为释放掉为止。分别通过session的setAttribute()和getAttribu()来设置属性获得属性。

范例: 获得session的各种信息。
SessionScopeDemo.jsp

<%@ page language = "java" pageEncoding = "gb2312" >
<html>
      <head>
           <title>
                 SessionScopeDemo
           </title>
      </head>
      <body>
            <%
                long creatTime = session.getCreationTime();//获得session的生成时间
                out.println("session的生成时间为:" + creatTime + "<br>");//输出session的生成时间
                String sessionID = session.getId();//获得session的ID
                out.println("session的ID为:" + sessionID + "<br>");//输出session的ID
                long lastTime = session.getLastAccessedTime();//最后通过session发送请求时间
                out.println("最后通过session发送请求时间为:" + lastTime + "<br>");
                boolean isnew = session.isNew();//判断session是不是新的
                out.println("是否为新的:" + isnew);//输出session是否为新的
             %>
      </body>
</html>

在浏览器地址栏输入 http://localhost:8080/JavaWeb03/SessionScopeDemo.jsp 。可以看到如下界面:
在这里插入图片描述
总结: 每次重启浏览器,都会有一个不同的sessionID。服务器端根据sessionID来判断是否属于同一个session。

1.4application应用服务对象

application对象用来取得和设置Servlet的相关信息。application对象的生命周期时服务器启动直到关闭。分别用setAttribute()和getAttribute()来设置属性和获得属性。

范例: 获得主要、次要的Servlet API版本等信息。
ApplicationDemo.jsp

<%@ page language = "java" pageEncoding = "gb2312" >
<html>
     <head>
          <title>
                 ApplicationDemo.jsp
          </title>
     </head>
     <body>
             <%
               int majorVersion = application.getMajorVersion();//主要的Servlet API版本
               int minorVersion = application.getMinorVersion();//次要的Servlet API版本
               String info = application.getServerInfo();//服务器版本
               //获得指定文件的MIME类型
               String mimeStr = application.getMimeType("HelloWorld.jsp");
               //获得Local的Application context
               ServletContext contextStr = application.getContext("HelloWorld.jsp");
               //获得指定path的绝对路径
               String pathStr = application.getRealPath("/");
            %>
            <%= "主要的Servlet API版本:" + majorVersion %><br>
            <%= "次要的Servlet API版本:" + minorVersion %><br>
            <%= "服务器版本:" + info %><br>
            <%= "文件的MIME类型:" + mimeStr %><br>
            <%= "Application context:" + contextStr %><br>
            <%= "绝对路径:" + pathStr %><br>
       </body>
</html>

在浏览器地址栏输入 http://localhost:8080/JavaWeb03/ApplicationDemo.jsp 。可以看到如下界面:
在这里插入图片描述

1.5pageContext页面上下文对象

用来设置page范围的属性。page范围指设置的属性只在当前页面有效。通过pageContext对象可以获得其他内置的对象,如request对象、response对象、out对象、page对象、exception对象等。

范例: 获得不同范围属性的信息。
PageContextDemo.jsp

<%@ page language = "java" pageEncoding = "gb2312" >
<html>
     <head>
          <title>
                 PageContextDemo
          </title>
     </head>
     <body>
            <% 
               pageContext.setAttribute("name","page_buda"); //设置page范围name属性
               request.setAttribute("name","request_buda");//设置request范围name属性
               session.setAttribute("name","session_buda");//设置session范围name属性
               application.setAttribute("name","application_buda");//设置application范围name属性
            %>
            <%
                //获得page范围name属性
                String pageStr = (String)pageContext.getAttribute("name",pageContext.PAGE_SCOPE);
                //获得request范围name属性
                String requestStr = (String)pageContext.getAttribute("name",pageContext.REQUEST_SCOPE);
                //获得session范围name属性
                String sessionStr = (String)pageContext.getAttribute("name",pageContext.SESSION_SCOPE);
                //获得application范围name属性
                String applicationStr = (String)pageContext.getAttribute("name",pageContext.APPLICATION_SCOPE);
          %>
          <%= "page范围:name属性值" + pageStr %><br>
          <%= "request范围:name属性值" + requestStr %><br>
          <%= "session范围:name属性值" + sessionStr %><br>
          <%= "application范围:name属性值" + applicationStr %><br>
     </body>
 </html>

在浏览器地址栏输入 http://localhost:8080/JavaWeb03/PageContextDemo.jsp 。可以看到如下界面:
在这里插入图片描述
欢迎来评论

  JSP共有以下9个内置的对象:   request 用户端请求,此请求会包含来自GET/POST请求的参数   response 网页传回用户端的回应   pageContext 网页的属性是在这里管理   session 与请求有关的会话期   application servlet 正在执行的内容   out 用来传送回应的输出   config servlet的构架部件   page JSP网页本身   exception 针对错误网页,未捕捉的例外      request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。    response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)    out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。    pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。    session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息    applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息    config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。    page表示从该页面产生的一个servlet实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值