zoukankan      html  css  js  c++  java
  • JSP内置对象——out对象/request对象

    在这个科技高速发展的时代,迫使我们的脚步一刻都不能停下。

    在这个for循环语句当中,我们可以直接使用jsp内置对象中的out对象来给浏览器打印输出,那么这个out对象就是一个内置对象, 在这里,我们使用的时候,没有使用new关键字再去创建对象了。

    JSP当中,一共有九大内置对象,看下图:

    其中,常用的内置对象有:out,request,response,session,application。这五个比较常用,然后另外Page,pageContext,exception,config这四个内置对象相对来说不太常用。  这合到一起就是我们的JSP九大内置对象。

    介绍完有以上内置对象后,来点拓展吧。在JSP内置对象中,有一个缓冲区的概念。 

    什么叫缓冲区?

           缓冲区:Buffer,所谓缓冲区就是内存中的一块区域用来保存临时数据。(IO输出最原始的就是一个字节一个字节输出,就像你吃饭,一粒一粒吃,那得吃到猴年马月呀?这样效率太差!)

     

    JSP内置对象——out对象:

           out对象是JspWriter类的实例,是向客户端输出内容时常用的对象。

    常用方法如下:

           1:void println() 向客户端打印字符串

           2:void clear() 清除缓冲区的内容,如果在flush之后调用会抛出异常

           3:void clearBuffer() 清除缓冲区的内容,如果在flush之后调用不会抛出异常

           4:void flush() 将缓冲区内容输出到客户端

           5:int getBufferSize() 返回缓冲区域字节数的大小,如果不设缓冲区则为0

           6:int getRemaining() 返回缓冲区还剩余多少字节可用

           7:boolean isAutoFlush() 返回缓冲区满时,是自动清空还是抛出异常

           8:void close() 关闭输出流

    下面上一个实例:

    运行结果:

    JSP内置对象——request对象: 

            说request对象之前,先看一下get和post的区别:

    下面通过一个实例来看一下:

    这是一个登陆界面,效果如下:

    当点击登录按钮的时候,就会跳转到“dologin.jsp”页面,因为这里面指定了表单提交给“dologin.jsp”去处理,然“dologin.jsp”的代码如下(随便写了点东西):

    因为我们前面表单提交方式是用的get,所以用户登录的一些信息,用户名密码啥的都会直接在url上直接显示出来:

    这里用户名和密码,全部直接都显示了,显然这样不太合适,那我们改一下代码,提交表单方式改用post,试试:

    效果同意能登录成功,不过登录成功后的url有变化:

    两种表单提交方式呢,服务端都同样可以获取到提交的数据。

    前面有说到request对象对应的一些常用方法,下面通过一个综合案例来说明一下:

    reg.jsp:

     1 <%--
     2   Created by IntelliJ IDEA.
     3   User: Administrator
     4   Date: 2018/3/19
     5   Time: 18:01
     6   To change this template use File | Settings | File Templates.
     7 --%>
     8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
     9 <html>
    10 <head>
    11     <title>用户注册</title>
    12 </head>
    13 <body>
    14 <h1>用户注册</h1>
    15 By:火龙裸先生
    16 <hr>
    17 <form action="request.jsp" name="regForm" method="post">
    18     <table>
    19         <tr>
    20             <td>用户名:</td>
    21             <td><input type="text" name="userName"></td>
    22         </tr>
    23 
    24         <tr>
    25             <td>爱好:</td>
    26             <td>
    27                 <input name="favorite" type="checkbox" value="read"> 读书
    28                 <input name="favorite" type="checkbox" value="music"> 音乐
    29                 <input name="favorite" type="checkbox" value="movie"> 电影
    30                 <input name="favorite" type="checkbox" value="sports"> 运动
    31             </td>
    32         </tr>
    33         <tr>
    34             <td colspan="2"><input type="submit" value="确定提交"></td>
    35         </tr>
    36     </table>
    37 </form>
    38 </body>
    39 </html>

    request.jsp:

     1 <%--
     2   Created by IntelliJ IDEA.
     3   User: Administrator
     4   Date: 2018/3/19
     5   Time: 11:16
     6   To change this template use File | Settings | File Templates.
     7 --%>
     8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
     9 <html>
    10 <head>
    11     <title>Exercise</title>
    12 </head>
    13 <body>
    14 <h1>request内置对象</h1>
    15 By:火龙裸先生
    16 <hr>
    17 用户名:<%=request.getParameter("userName")%><br>
    18 爱好:<%
    19     String[] favorites = request.getParameterValues("favorite");
    20 
    21     for(int i = 0; i < favorites.length; i++) {
    22       out.println(favorites[i]+"&nbsp&nbsp");
    23     }
    24     %><br>
    25 </html>

    在reg.jsp里通过表单的POST提交方式,把数据参数提交到了request.jsp页面。而在request.jsp页面用“request内置对象”的getParameterValues()方法,获取到参数数据,然后通过for循环将数据打印出来。效果如下:

    可以看到,request.jsp页面确实收到了从reg.jsp提交过来的数据参数。但是用户名却出现了中文乱码的情况,那我们可以在request.jsp界面,在接收参数数据前通过

    request.setCharacterEncoding("UTF-8");

    来设置指定字符编码,这样就可以正常显示中文用户名了。结构代码如下:

    getParameter()方法不仅可以用Post方式来获取,同样可以用Get方式获取提交的参数。比方说我现在不用表单,而是用URL地址来传递参数。如我现在在reg.jsp当中添加代码:

    因为我们的request.jsp中直接有通过getParameterValues()方法获取参数,但我们的URL地址中没有传递对应的参数,所以需要对request.jsp中的getParameterValues()方法做判空处理,如下:

    运行结果如下:

    request内置对象中还有一个叫void setAttribute(String, Object)方法和object getAttribute(String name)方法,setAttribute方法有两个参数,一个是设置的键,一个是值;而getAttribute()方法,只需要输入需要取的对应的键名称就行了。看一个实例,如下:

    我们在request.jsp中,接收参数前我们先保存一个密码属性,它的键叫“passWord”,它的值也是个字符串叫“123456”。

    然后我们在下面来取出这个属性值:

    运行效果:

    下面,再介绍request内置对象中的getContentType()方法,获取请求体的MIME类型;getProtocol()方法,获取协议类型及版本号;getServerName()方法,获取服务器的主机名;getServerPort()方法,获取服务器端口号;getContentLength()方法,请求文件的长度(单位为字节);getRemoteAddr()方法,请求客户端的IP地址;getRealPath()方法,请求的真实路径;getContextPah()方法,获取请求的上下文的路径;如下:

    运行结果:

    以上就是我们JSP中out对象和request对象的一些常用方法的介绍了。篇幅有点长,下次分开来写。

  • 相关阅读:
    MySQL 参数- Innodb_File_Per_Table(独立表空间)
    PHP Html 弹窗,本页面弹窗子页面
    ecshop 后台添加 成本价 利润
    MYSQL中的字符串连接符
    dede织梦后台页面及功能修改及精简操作方法
    ecshop 调用其他数据库中的商品
    wamp mysql 创建主从数据库
    mysql 主从同步原理
    mysql 利用触发器(Trigger)让代码更简单
    iOS开发工具——网络封包分析工具Charles
  • 原文地址:https://www.cnblogs.com/huolongluo/p/8603146.html
Copyright © 2011-2022 走看看