JavaWeb之Request&response(7)

Request(请求) & Response(响应)

  • Request:获取请求数据
  • Response:设置响应数据

在这里插入图片描述

一、Request继承体系

在这里插入图片描述

  1. Tomcat需要解析请求数据,封装为request对象,并且创建request对象传递到service方法中
  2. 使用request对象,查阅JavaEE API文档的HttpServletRequest接口

二、Request获取请求数据

  • 请求数据分三部分
    在这里插入图片描述

  • 请求参数获取方式:
    1.Get方式:String getQueryString()
    2.Post方式:BufferedReader getReader()
    麻烦
    考虑提供统一方法
    在这里插入图片描述

  • 请求参数中文乱码
    Post:设置输入流的编码request.setCharacterEncoding("UTF-8");
    Get: new String(username.getBytes("ISO-8859-1"),"UTF-8"); tomcat 8 之后不用写
    在这里插入图片描述

三、Request请求转发

  • 请求转发
    一种在服务器内部的资源跳转方式
  • 实现方式:req.getRequestDispatcher("资源B路径‘’).forward(req,resp)
  • 特点:
    1.浏览器地址栏路径不发生变化
    2.只能转发到当前服务器的内部资源
    3.一次请求,可以在转发的资源中使用request共享数据

四、Response设置响应数据功能

  • 响应数据分三部分
    在这里插入图片描述

五、Response完成重定向

  • 重定向:一种资源跳转的方式
    在这里插入图片描述
  • 实现方式
//        //重定向
//        //1.设置响应状态码  302
//        response.setStatus(302);
//        //2.设置响应头
//        response.setHeader("Location","/tomcat-app2/resp2");
        //简化方式
        response.sendRedirect("/tomcat-app2/resp2");
  • 路径问题
    明确路径谁使用
    浏览器使用–>加虚拟目录(重定向、表单等)
    服务端使用–>不需要加虚拟目录(转发)

六、Response响应字符数据

//1.获取字符输出流
        response.setContentType("text/html;charset=utf-8"); //中文乱码问题
        PrintWriter writer = response.getWriter();
        //content-type
        //response.setHeader("content-type","text/html");
        
        writer.write("你好");
        writer.write("<h1>aaa</h1>");
        //细节:流不需要关闭

七、Response响应字节数据

//1.读取文件
        FileInputStream fls = new FileInputStream("d://a.jpg");
        //2.获取response字节输出流
        ServletOutputStream os = response.getOutputStream();
        //3.完成流的复制
//        byte[] buff = new byte[1024];
//        int len = 0;
//        while((len = fls.read(buff))!=-1){
//            os.write(buff,0,len);
//        }
//        fls.close();
        IOUtils.copy(fls,os);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值