/*ServletResponse*/

/*responese常见应用*/

  1.向客户端输出中文数据 (分别以OutputStream 和 PrintWriter输出)

  2.文件下载和中文文件的下载 ( /*ResponseDemo3*/)

  3.完成类似验证码的功能 (输出一张随机图片)

  4.用refresh控制浏览器自动刷新

  5.控制浏览器缓存(保存一定时间)

  6.实现重定向 (一般能不采用 就 不采用)(因为重定向是转到其他地址,所以重定向的地址需要比 转发 的地址 /*多上web应用名称*/)

Response的小细节:
  1.getOutputStream 和 getWriter方法分别用于得到输出二进制数据、输出文本数据的ServletOutputStream、PrintWriter对象

  2.getOutputStream 和 getWriter 这两个方法互相排斥,调用了其中的任何一个方法后,就不能再调用另外一个方法

  (转到另外的页面上,如果是通过重定向转的,就可以同时使用(因为重定向 向服务器发送了两次请求,有两个response,两次调用的是不同的))

  3.Servlet的service方法结束后,Servlet引擎将检查getWriter或getOutputStream方法返回的输出流对象是否已经调用过close方法。

   如果没有,Servlet引擎将调用close方法关闭输出流对象。

  (即程序里面可以不用去 close )

4./*Request*/

request的常用方法:

  (获得客户机信息) (URL(网络上的web应用)和URI(所有web应用)的关系 : 狗和动物)

  getRequestURL 返回客户端发出请求时的完整URL

  getRequestURI 返回请求行中的资源名部分

  getQueryString 返回请求行中的参数部分

  getRemoteAddr 返回发出请求的客户机的IP地址

  getRemoteHost 返回发出请求的客户机的完整主机名

  getRemotePort 返回客户机所使用的网络端口号

  getLocalAddr 返回web服务器的IP地址

  getLocalName 返回web服务器的主机名

  getMethod 得到客户机请求方式

  /*request获取请求头和请求数据 RequestDemo2 test.html*/

  /*通过表单搜集用户数据*/ /*主要是HTML方面的 暂时先不写了*/

  /*request乱码问题*/

    通过表单提交中文字符产生的乱码问题 : 1. get(手工) 2.post

    通过超链接提交中文字符 : 想要避免乱码问题 (手工)

/*MVC设计*/ //MVC (m model (javabaen) ; v view (jsp) ; c controller (servlet) ) 处理请求的是处理请求的 封装数据的是封装数据的 显示数据的是显示数据的

  servlet收到请求 返回数据,数据封装到javabean中,javabean中的数据存到request域中,通过转发(forword)技术将转到jsp页面,jsp页面从request域中取出数据显示

请求转发的细节: ( /*只有在客户端没有输出时,才可以调用forword方法*/)

1.forword方法用于将请求转发到 RequestDispatcher 对象封装的资源

2.如果在forword方法之前,在servlet程序写入的部分内容已经被真正传递到了客户端 (流的关闭以及多个forword跳转都可能导致),forword方法将抛出异常

3.如果在调用forword方法之前,向servlet引擎的缓冲区(response)中写入了内容,只要写入到缓冲区的内容还没有真正输出到客户端,

 forword方法就可以被正常执行,原来写入到输入缓冲区的内容将被清空

  例:String value = "aaaa";

  response.getWriter().write(value); //此时 数据还没有写入到客户机中,如果这个时候forword的话,response中的内容将被清空,转发正常执行

  request.getRequestDispatcher("/index.jsp").forward(request, response);

request实现页面包含 (用include实现页面包含(包含一些公共的页面) ,一般不使用,因为这是动态包含(一般在jsp中做静态包含更好 ))

 //用include实现页面包含(包含一些公共的页面) (一般在jsp中做包含 )
public class RequestDemo6 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.getRequestDispatcher("/public/Head.jsp").include(request, response);
String value = "body";
response.getWriter().write(value);
request.getRequestDispatcher("/public/Foot.jsp").include(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
} }

web工程中各类地址的写法( /*看地址是给谁用的*/)

利用referer防盗链

//利用referer防盗链
public class RequestDemo7 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { String referer = request.getHeader("referer"); if(referer == null || !referer.startsWith("localhost")) { //如果页面时直接访问,没有经过跳转||或者不是以localhost开头
response.sendRedirect("/day06/index.jsp");
return;
} String data = "日记";
response.getWriter().write(data); } public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
} }

5.Servlet 对象(request-response)的更多相关文章

  1. JavaWeb——JSP内置对象request,response,重定向与转发 学习总结

    什么是JSP内置对象 九大内置对象 requestJSP内置对象 request对象常用方法 request练习 responseJSP内置对象 response练习 response与request ...

  2. Server,Servlet,ServletConfig,ServletContext,Session,Request,Response

    Server流程 解析URL->找到应用->找到Servlet->实例化Servlet->调用init->调用service->返回响应->调用destroy ...

  3. request response

    request 和 response 这两个对象是出现在service方法中.service方法是用来接收请求处理请求,完成响应的.     接受请求指的就是request对象     完成响应指的就 ...

  4. JSP中九大内置对象+request对象的属性介绍和如何应用

    JSP的九大内置对象requestresponseApplicationconfigoutpagepageContextsessionException默认没有,需要进行在Page指令下进行isErr ...

  5. JavaWeb -- 服务器传递给Servlet的对象 -- ServletConfig, ServletContext,Request, Response

    1.  ServletConfig  有一些东西不合适在程序中写死,应该写在web.xml中,比如 文字怎么显示, 访问数据库名 和 密码, servlet要读取的配置文件 等等.. l在Servle ...

  6. request 对象和 response 对象

    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 HttpServletResponse HttpServletR ...

  7. 重温Servlet学习笔记--response对象

    在用户浏览网页时,服务器对于客户端浏览器做出的响应被封装成一个HttpServletResponse对象,要对浏览器操作只需要操作这个response对象即可.response的功能分类及介绍: 响应 ...

  8. javaWeb中 servlet 、request 、response

    1.Servlet (1)Servlet是JavaEE的一个动态web资源开发技 术,就是在服务器上运行的小程序,这个小程序是由服务器调用的,服务器为了能调用这个小程序,就要求这样的程序必须实现一个S ...

  9. (day20)javaEE三大组件之一Servlet (简介(二)servletconfig,servletContext,session,cookie,request,response,out)

    javaEE是服务器编程,javaEE提供了服务器的接口让具体的服务器去创建实现的对象 JavaEE是sun公司为了解决企业级开发定义的一套技术,只提供了规范,具体的实现是由服务器完成的 servle ...

  10. servlet中request和response

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

随机推荐

  1. 5G 与 MEC 边缘计算

    目录 文章目录 目录 前言 参考文献 通信网络 核心网演进之路 早古时期 2G 网络架构 3G 网络架构 4G 网络架构 5G 5G 网络的需求 5G 网络架构的设计原则 5G 网络的逻辑架构 5G ...

  2. Mac之间的 远程控制

    Mac 自带屏幕共享的工具,两台 Mac 之间的设置步骤: 1.主机(被远程控制的电脑)的设置: 系统偏好设置 -->共享  : 选择打开屏幕共享服务: 添加访问用户 或者 允许所有用户: 电脑 ...

  3. unity3d 触屏多点触控(旋转与缩放)

    unity3d 触屏多点触控(旋转与缩放) /*Touch OrbitProgrammed by: Randal J. Phillips (Caliber Mengsk)Original Creati ...

  4. RabbitMQ简单实现,exchange四种模式,持久化

    RabbitMQ目录 一.简介,简单实现二.Exchange四种类型简单介绍三.消息确认,交换机.队列及消息持久化一.简介及简单实现RabbitMQ是一个消息代理:它接受并转发消息.你可以把它当成一个 ...

  5. utgard OPC 主要功能简介

    度娘还行,尽管不好用,但所有的开发人员不懈努力地写博客,能得到很多东西! 这里向所有未谋面的博主们致敬! 搜了一堆OPC资料,在这里整理一下,用一个封装类来说明utgard的主要接口.使用了java自 ...

  6. 《剑指offer》Q01-12 (牛客10.11)

    目录 T1 二维部分有序数组查找 ☆ T2 字符串字符不等长替换 - 从后往前 T3 返回链表的反序 vector T4 重建二叉树 T5 两个栈模拟队列 T6 旋转数组中的最小元素 - 二分或暴力 ...

  7. manjaro 给笔记本安装18.1系统时发现中文变成了方块字

    解决方案: 1.连接网络,wifi/本地连接 2.打开终端 3.同步数据 如果是第一次,我们需要先同步本地数据包,先输入 sudo pacman -Syy 4.安装字体 sudo pacman -S ...

  8. 【ARM-LInux开发】如何运行wayland

    Running Wayland 原文:https://jan.newmarch.name/Wayland/RunningWayland/ skip table of contents Show tab ...

  9. vue-cli3创建vue项目之vue.config.js配置

    module.exports = { // 基本路径 publicPath: '/', // 输出文件目录 outputDir: 'dist', // eslint-loader 是否在保存的时候检查 ...

  10. 内存泄漏之malloc替换方法

    //内存泄漏之malloc替换方法 //内存泄漏之malloc替换方法#include "stdio.h"#include "stdlib.h" /*文件路径名 ...