zoukankan      html  css  js  c++  java
  • JSP的隐式对象(response)

    JSP的隐式对象(response)

    JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。

    也就是说隐式对象不需要像一般的Java对象需要使用new关键字来创建,而是直接在JSP页面中使用。

    九大隐式对象分类

    输入输出对象:out

    作用域对象:request,response,session,application,pageContext

    Servlet对象:page,config

    错误对象:exception

    3.response对象 

    当服务器创建request对象时会同时创建用于响应这个客户端的response对象,用于将web服务器处理后的结果发回给客户端。

    response对象的主要方法有

    方法 描述
    void addCookie(Cookie cookie)  添加指定的cookie至响应中
    void addDateHeader(String name, long date)  添加指定名称的响应头和日期值
    void addHeader(String name, String value)  添加指定名称的响应头和值
    void addIntHeader(String name, int value)  添加指定名称的响应头和int值
    void flushBuffer()  将任何缓存中的内容写入客户端
    void reset()  清除任何缓存中的任何数据,包括状态码和各种响应头
    void resetBuffer()  清除基本的缓存数据,不包括响应头和状态码
    void sendError(int sc)  使用指定的状态码向客户端发送一个出错响应,然后清除缓存
    void sendError(int sc, String msg)  使用指定的状态码和消息向客户端发送一个出错响应
    void sendRedirect(String location)  使用指定的URL向客户端发送一个临时的间接响应
    void setBufferSize(int size)  设置响应体的缓存区大小
    void setCharacterEncoding(String charset)  指定响应的编码集(MIME字符集),例如UTF-8
    void setContentLength(int len)  指定HTTP servlets中响应的内容的长度,此方法用来设置 HTTP Content-Length 信息头
    void setContentType(String type)  设置响应的内容的类型,如果响应还未被提交的话
    void setDateHeader(String name, long date)  使用指定名称和值设置响应头的名称和内容
    void setHeader(String name, String value)  使用指定名称和值设置响应头的名称和内容
    void setIntHeader(String name, int value)  指定 int 类型的值到 name 标头
    void setLocale(Locale loc)  设置响应的语言环境,如果响应尚未被提交的话
    void setStatus(int sc)  设置响应的状态码

    简单例子1——重定向页面

    responseRedirect.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html>
     4 <html>
     5 <head>
     6 <meta charset="UTF-8">
     7 <title>response重定向</title>
     8 </head>
     9 <body>
    10 <%response.sendRedirect("responseRedTarget.jsp"); %>
    11 </body>
    12 </html>

    responseRedTarget.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html>
     4 <html>
     5 <head>
     6 <meta charset="UTF-8">
     7 <title>reponse重定向目标页面</title>
     8 </head>
     9 <body>
    10 <font style="color: red;">这里是重定向的目标页面</font>
    11 </body>
    12 </html>

    注意:重定向后,原来的request对象失效,web容器将创建一个新的request对象。

    简单例子2——处理HTTP文件头

     1.自动刷新

    <%@page import="java.util.Date"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>显示时间</title>
    </head>
    <body>
    
    <%=(new Date().toLocaleString())%>
    <%
    response.setHeader("refresh", "1");
    %>
    </body>
    </html>

    2.修改Content-Type类型

    <%@page import="java.util.Date"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>显示时间</title>
    </head>
    <body>
    
    <%=(new Date().toLocaleString())%>
    <%
    response.setHeader("refresh", "1");
    %>
    
    <%response.setHeader("Content-Type", "text/plain") ;%>
    </body>
    </html>

    其他的Header头修改不一一举例,Http的Header里面包含哪些字段,每个字段都有哪些含义?参考这个链接:https://blog.csdn.net/qq_42218123/article/details/80664302

    简单例子3——response对象添加Cookie对象,request对象读取Cookie对象 

     cookieSave.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>response添加Cookie对象</title>
    </head>
    <body>
    <% 
        //新建2个cookie对象
        Cookie cookie1  = new Cookie("username","张三");
        Cookie cookie2  = new Cookie("password","123456");    
        //设置COOKIE的时效,秒为单位,2天
        cookie1.setMaxAge(2*24*60*60);
        cookie2.setMaxAge(2*24*60*60);    
        
        //将cookie保存在response对象中
        response.addCookie(cookie1);
        response.addCookie(cookie2);
        
    %>
     <a href="cookieShow.jsp">查看是否保存了Cookie对象</a>
    </body>
    </html>

    cookeShow.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>request对象获取Cookie对象</title>
    </head>
    <body>
         <%request.setCharacterEncoding("UTF-8"); %>
        <%
            String username="";
            String password="";
            Cookie[] cookies=request.getCookies();
            if(cookies!=null&&cookies.length>0){
                for(Cookie cookie:cookies){
                    if(cookie.getName().equals("username")){
                        username=cookie.getValue();
                    }
                    if(cookie.getName().equals("password")){
                        password=cookie.getValue();
                    
                    }
                    response.addCookie(cookie);
                }
            
            }
         %>
         <h2>用户名为:<%=username %></h2>
         <h2>密码为:<%=password %></h2>
    </body>
    </html>

    直接访问cookeShow.jsp页面显示

     从 cookieSave.jsp页面点击链接跳转到cookeShow.jsp页面

     参考文章

    https://blog.csdn.net/u010142437/article/details/56009744

    转载文章链接已标明,如有侵权请告知。文章仅作为知识记忆所用,如有错误,敬请指正。
  • 相关阅读:
    单例实现c++
    c++智能指针实现方式1
    c++中处理输入输出的方法
    makefile函数
    5. Longest Palindromic Substring
    go 语言中常用的包
    ubuntu14.04 boost动态库找不到 libboost_system.so.1.58.0
    boost-asio-cpp-network-programming阅读笔记
    链接-装载-库,读书笔记
    leecode第二百一十七题(存在重复元素)
  • 原文地址:https://www.cnblogs.com/YorkZhangYang/p/12419950.html
Copyright © 2011-2022 走看看