response响应,常用方法,分发器重定向,错误提示

response响应

响应的构成部分

1.状态行
protocol: http协议版本
status code: 状态码

  • 1xx: 信息响应类,表示接收到请求并且继续处理
  • 2xx: 处理成功响应类,表示动作被成功接收、理解和接受
  • 3xx: 重定向响应类,为了完成指定的动作,必须接受进一步处理
  • 4xx: 客户端错误,客户请求包含语法错误或者是不能正确执行
  • 5xx: 服务端错误,服务器不能正确执行一个正确的请求 OK 表示状态描述,只是一个文本的描述。

status message: 状态描述

2.响应头
服务器定义内容, 把内容通过http响应返回到客户端!

3.响应内容
响应是从服务器向客户端(浏览器)写入的!

响应总共有两个类型

1.响应文本 字符串
把字符串传输到浏览器, 然后由浏览器负责解析!

//响应文本
response.getWriter();

2.响应流 文件
文件下载

//响应流
response.getOutputStream();

常用方法

package com.javakc.web1.user;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;


//response常用方法
public class UserServlet7 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //从服务器端向客户端返回响应头信息
        response.setHeader("username", "admin");

        //响应文本
        //向客户端返回html
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.write("<h1>Hello world</h1>");
        writer.flush();
        writer.close();

        //向客户端返回json
        response.setContentType("application/json;charset=UTF-8");
        PrintWriter writer1 = response.getWriter();
        String json = "{\"name\": \"admin\", \"age\": 21}";
        writer1.write(json);
        writer1.flush();
        writer1.close();

        //响应流
        //1.指定响应类型 图片
        response.setContentType("image/jpeg");
        //2.获取文件输入流
        String path = "C:\\Users\\a\\Pictures\\谭晓聪\\txc.jpg";
        //3.获取响应流
        OutputStream out = response.getOutputStream();
        out.write(Files.readAllBytes(Path.of(path)));
        out.flush();
        out.close();

        //1.指定响应类型 图片
        response.setContentType("image/jpeg");
        //2.获取文件输入流
        String path = "C:\\Users\\a\\Pictures\\谭晓聪\\txc.jpg";
        File imageFile = new File(path);
        InputStream input = new FileInputStream(imageFile);
        //2.获取响应流
        OutputStream out = response.getOutputStream();
        int len = 0;
        byte[] b = new byte[1024];
        while ((len = input.read(b)) > 0) {
            out.write(b, 0, len);
        }
        out.flush();
        out.close();

        //文件下载
        //1.指定响应类型 图片
        response.setContentType("image/jpeg");
        //2.获取文件输入流
        String path = "C:\\Users\\a\\Pictures\\谭晓聪\\txc.jpg";
        //3.获取响应流
        //重置响应
        response.reset();
        //通知浏览器 响应类型
        response.setHeader("Content-Disposition", "attachment;filename=1.jpg");
        OutputStream out = response.getOutputStream();
        out.write(Files.readAllBytes(Path.of(path)));
        out.flush();
        out.close();


        //1.指定响应类型 图片
        response.setContentType("image/jpeg");
        //2.获取文件输入流
        String path = "C:\\Users\\a\\Pictures\\谭晓聪\\txc.jpg";
        File imageFile = new File(path);
        InputStream input = new FileInputStream(imageFile);
        //3.获取响应流
        //重置响应
        response.reset();
        //通知浏览器 响应类型
        response.setHeader("Content-Disposition", "attachment;filename=1.jpg");
        OutputStream out = response.getOutputStream();
        int len = 0;
        byte[] b = new byte[1024];
        while ((len = input.read(b)) > 0) {
            out.write(b, 0, len);
        }
        out.flush();
        out.close();
    }
}

分发器重定向

package com.javakc.web1.user;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class UserServlet8 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //分发器跳转页面
        request.getRequestDispatcher("/success.html").forward(request, response);

        //重定向跳转
        response.sendRedirect(request.getContextPath() + "/success1.html");
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>success</title>
</head>
<body>
success
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>success1</title>
</head>
<body>
success1
</body>
</html>

分发器、重定向区别

分发器重定向
是否携在参数携在参数不携在参数
请求次数一次请求两次请求
跨域不支持支持
地址栏不会发生改变会发生改变,新地址是重定向后的地址

错误提示

web.xml

 <!--错误页面-->
 <error-page>
     <error-code>404</error-code>
     <location>/error/404.html</location>
 </error-page>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>404</title>
</head>
<body>
很遗憾,页面找不到
</body>
</html>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值