欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Request、Response、JSP、session概述

程序员文章站 2022-07-03 23:22:48
...

request :

  • 结构:

请求行:
方法名(空格)URI(空格)版本
请求头:
浏览器信息
空行:请求头结束
请求数据:post方法

通过request方法获取参数,获取后都是字符串类型。

  • request常见方法:

.getMethod();获得请求提交方式
.getRequestURI();获得请求URI
.getHeader("User-Agent");获得请求头特定项
.getRemoteAddr();获得请求IP地址
.getContextPath();返回客户端请求访问web应用的URL入口 如:URL:http://localhost:8080/helloapp/info,该方法返回/helloapp;
.getCookies();返回HTTP请求中的所有cookie
.getQueryString();获得请求中的查询字符串,?后面的内容
.setCharacterEncoding("utf-8");设置字符集

response:

  • response常见方法:
                .sendRedirect(); 返回指定页面
                .getOutputStream(); 返回ServletOutputStream对象,用来输出二进制的正文数据。
                .getWriter(); 返回一个PrintWriter对象,用来输出字符串形式的正文数据。
                .setCharacterEncoding("utf-8");设置字符集
                .setContentType();设置响应正文的MIME类型   
                    MIME类型:描述消息内容类型的因特网标准,指定浏览器按照什么类型进行处理该数据。
                    三种方式:
                    1.res.setContentType("text/html;charset=utf-8");                                                                         
                    2.res.setContentType("text/html");res.setCharacterEncoding("utf-8");
                    3.res.setHeader("Content-type","text/html;charset=utf-8");
                .setBufferSize(int size);设置存放数据正文的缓冲区大小。
                .getBufferSize();返回存放数据正文的缓冲区大小。
                .reset(); 清空缓冲区数据,并清空响应状态码和响应头
                .restBuffer();只清空缓冲区数据
                .flushBuffer();强制把缓冲区数据发送到客户端
                .isCommitted();返回布尔值,true:表示缓冲区内容已发送到客户端。
    将缓冲区内容发送到客户端几种方法:
                1.缓冲区数据满,OutputStream或PrintWriter对象会自动发送。
                2.调用.flushBuffer()方法
                3.调用OutputStream或PrintWriter对象的flush()或close()方法。
    为了保证数据全部提交到客户端,需要在数据输出完毕后调用OutputStream或PrintWriter对象的close()方法。如果servlet中service没有关闭,Tomcat会在调用service方法后关闭输出流,保证数据全部提交到客户端。
    如果要设置MIME类型或字符集需要先进行setContentType()和setCharacterEncoding("utf-8")进行设置,才能进行数据传输。
                
    禁止客户端缓存页面:
                response.addHeader("Pragma","no-cache");  --适用HTTP1.0的浏览器,不缓存页面
                response.setHeader("Cache-Control","no-cache");--适用HTTP1.1的浏览器,不缓存页面
                response.setHeader("Expires","0");--设定网页过期时间,立即过期。

JSP

    重定向和请求转发:
            重定向:
                    站外跳转,网址改变,返回一个URL给客户端,客户端重新发出请求,进行两次完整的请求响应过程,.sendRedirect("URI");绝对路径“/”后写项目名,取不到request里的值?只能从session中取,可以跨域访问,性能低。
            请求转发:
                    站内跳转,网址不变,客户端只发出一次请求,共享response和request对象, RequestDispatcher rd = request.getRequestDispatcher("URL"); rd.forword(req,res);框架中比较常用。绝对路径“/”后写此应用下的文件名,可以从request中取值,不能跨域访问,性能高
                    
    JSP:是一种文件。
            1.静态内容:html
            2.指令:内部是java代码,通常用来导包或引入文件。
                    <%@ page  常用来设置文本格式contentType、响应流的编码格式pageEncoding、导包import、语言language
                    <%@ include file=""  包含外部另一文件,
                    <%@ taglib  引入标签库的定义
            3.内部是java代码
                表达式<%= :生成在servlet方法体中
                脚本<% :生成在servlet的doPost()/doGet()方法体中
                声明<%!:jsp中声明方法、属性。
                <% return ; %> :后面代码不执行。
                编译时先执行java代码段。
            4.动作:标签,有前缀。
            5.自定义标签:将java代码封装成标签,解析变慢,开发缓慢,淘汰。
            
    内置9大对象:
            page、req、res、session、application(相当于servletContext)、out、config、exception、pagecontext。
            
    注释:
            html:<!--  -->
            css: /*   */
            java: // 
            jsp:<%--   --%>
    EL表达式       

session

  • 概述:

由Tomcat创建javax.servlet.session.HTTPSession
在服务器内存中开辟空间创建会话,存放ip、浏览器等信息
主要给不同请求和响应(客户端一系列的请求响应)存取共享数据
session中主要以键值对的形式存放数据
一旦代码中涉及session,不进行用户登录是不能够进行访问的。