Request和Response应用

这篇具有很好参考价值的文章主要介绍了Request和Response应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ServletRequest应用

ServletRequest应用非常广泛,下面是一些例子:

  1. 获取请求参数:可以使用HttpServletRequest的getParameter()方法获取请求参数。

  2. 获取请求头信息:可以使用HttpServletRequest的getHeader()方法获取请求头信息。

  3. 获取Session对象:使用HttpServletRequest的getSession()方法可以获取HttpSession对象,从而存储和获取用户会话数据。

  4. 获取服务器路径等信息:可以使用HttpServletRequest的getServletContext()方法获取ServletContext对象,从而获取应用程序的相关信息。

  5. 文件上传:可以使用HttpServletRequest的getPart()方法获取上传的文件部分,从而实现文件上传。

这些只是ServletRequest的一些用例,实际上它可以用于许多其他方面的任务。

讲讲servlet怎么获取form表单的值,并输出到浏览器

要注意action的路径,我这里浏览器默认路径是http://localhost:8080/s1

,/para是servlet页面的访问路径,就是下面的ParameterReq类,因为后端要获取这个值,所以要把form表单action属性设置为/s1/para,因为我开始浏览器的请求路径就是/s1,那后端又是怎么获取表单的值的呢,对,就是获取name属性的值,当你在输入框输入的参数时,点击提交的那一刻,后端就拿到了输入框的值,并把内容响应到浏览器,或者也可以打印到控制台

form表单

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
        <form action="/s1/para" method="get">
           <p>
               用户名:<input type="text" name="username">
           </p>
            <p>
                密码:<input type="password" name="password">
            </p>
            <input type="submit">
            <input type="reset">

        </form>
</body>
</html>

请求的servlet

package com.qcnel;

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 ParameterReq extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       String username=req.getParameter("username");
       String password=req.getParameter("password");
       // 输出到浏览器
       resp.getWriter().write(username+":"+password);
       // 打印在控制台
        System.out.println(username);
        System.out.println(password);


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       doPost(req, resp);
    }
}

web.xml需要配置这些,然后就可以启动tomcat了

Request和Response应用

浏览器的输出

Request和Response应用

控制台的输出

Request和Response应用

ServletResponse应用

ServletResponse是Java Servlet规范中的一部分,它表示向客户端发送的HTTP响应。ServletResponse通过提供方法设置响应状态、响应头信息、响应正文和Cookie等,使得开发者可以更加灵活地控制和处理响应信息。下面是一些ServletResponse应用的例子:

  1. 设置响应状态和编码:使用ServletResponse的setStatus()方法可以设置响应状态码,使用setCharacterEncoding()方法可以设置响应编码。

  2. 设置响应头信息:使用ServletResponse的setHeader()方法可以设置响应头信息,例如Content-Type、Content-Length等。

  3. 设置响应正文:可以使用ServletResponse的getWriter()方法获取PrintWriter对象,从而将响应正文输出到客户端。

  4. 设置Cookie:使用ServletResponse的addCookie()方法可以设置响应的Cookie。

  5. 文件下载:可以使用ServletResponse的getOutputStream()方法将文件输出到客户端下载。

这些只是一些ServletResponse的常用用例,实际上还有很多其他应用场景。通过使用ServletResponse,开发者可以更加自由灵活地控制和处理HTTP响应。

Response下载文件

package com.qcnel;

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

public class DownLoad extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取下载的文件路径(注意获取这里获取的是绝对路径,先获取ServletContext再使用ServletContext的getRealPath方法获取绝对路径)
            String filePath = "D:\\ideaProject\\Maven-02\\src\\main\\resources\\1.jpg";
            File file = new File(filePath);
            if(file.exists()) {
                // 设置 HTTP 响应中 "Content-Type" 响应头的值。它告诉客户端(浏览器)该响应中的数据是一个 "application/octet-stream" 的二进制流文件,因此客户端应该以二进制流的形式接收数据。
                resp.setContentType("application/octet-stream");
                //设置响应头控制浏览器以下载的形式打开文件
                resp.setHeader("Content-Disposition", "attachment;filename=1.jpg");
                //获取下载文件的输入流
                FileInputStream fis = new FileInputStream(file);
                // BufferedInputStream 是一个带有缓冲的输入流,它可以提高文件读取速度。
                // 在使用 FileInputStream 读取文件时,每次都需要从磁盘中读取若干个字节,并进行数据传输,因此效率相对较低。
                // 而使用 BufferedInputStream 可以对 FileInputStream 进行包装,每次读取时先将一定数量的数据读取到缓存区中,然后再逐个读取,减少了频繁的磁盘操作,提高了读取速度。
                // 具体来说,BufferedInputStream 内部维护了一个缓冲区,读取数据时会先从缓冲区中读取,如果缓冲区为空,则再从底层输入流中读取一定数量的字节并填充到缓冲区中,以此类推。
                BufferedInputStream bis = new BufferedInputStream(fis);
                //通过response对象获取OutputStream流
                OutputStream os = resp.getOutputStream();
                // 创建缓冲区
                int len;
                byte[] buff = new byte[1024];
                while((len = bis.read(buff)) != -1) {
                    //将缓冲区的数据输出到浏览器
                    os.write(buff, 0, len);
                }
                bis.close();
                fis.close();
                os.flush();
                os.close();
            } else {
                resp.getWriter().println("File not found");
            }
        }


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      doPost(req, resp);
    }
}

Response验证码文章来源地址https://www.toymoban.com/news/detail-432565.html

package com.qcnel;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

public class Captcha extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //浏览器2秒自动刷新一次
        resp.setHeader("refresh","1");

        //在内存中创建一个图片
        BufferedImage image = new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);

        //得到图片后对图片进行操作
        Graphics2D g = (Graphics2D) image.getGraphics();//笔

        //设置图片的背景颜色
        g.setColor(Color.white);
        g.fillRect(0,0,80,20);//颜色的填充范围
        //给图片写数据
        g.setColor(Color.black);
        g.setFont(new Font(null,Font.BOLD,20));
        g.drawString(num(),0,20);

        //告诉浏览器这个请求用图片的方式打开
        resp.setContentType("image/jpeg");

        //网站存在缓存,不让浏览器缓存会节省掉很多空间
        resp.setDateHeader("expires",-1);
        resp.setHeader("Catch-Control", "no-cache");
        resp.setHeader("Pragma","no-cache");

        //图片写给浏览器
        ImageIO.write(image,"jpg",resp.getOutputStream());

    }

    private String num(){
        Random random = new Random();
        String num = random.nextInt(9999999)+"";
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < 7-num.length(); i++) {
            sb.append("0");
        }
        num = sb.toString() + num;
        return num;
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}


到了这里,关于Request和Response应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Request对象和response对象

           request对象和response对象是通过Servlet容器(如Tomcat)自动创建并传递给Servlet的。 Servlet容器负责接收客户端的请求,并将请求信息封装到request对象中,然后将request对象传 递给相应的Servlet进行处理。类似地,Servlet容器会创建一个response对象,并将其传递给 Servlet,用于

    2024年02月11日
    浏览(33)
  • JavaWeb04-Request,Response

    目录 一、Request(请求) 1.作用 2.继承体系 3.获取请求数据 (1)请求行 (2)请求头 (3)请求体(POST) (5)Request通用方式获取请求参数 4.Servlet模板 5.中文数据乱码解决 6.请求转发 二、Response(响应) 1.作用 2.继承体系 3.设置响应数据 (1)响应行 (2)响应头 (3)响应体

    2024年03月15日
    浏览(35)
  • JavaWeb之Request&Response编程

    1.1 servlet servlet生命周期 (servlet 单实例,多线程) init(ServletConfig):只会执行一次,默认第一次访问,如果配置服务器启动(web.xml ) service(ServletRequest,ServletResponse):每请求一次,将执行一次。 destroy() 服务器正常关闭时,将执行一次。 使用细节 1.完成初始化操作: 复写init() , 此访

    2024年02月10日
    浏览(34)
  • 一篇博客上手request和response

    request:获取请求数据 response:设置响应数据 ServletRequest——Java提供的请求对象根接口 HttpServletRequest——Java提供的对http协议封装的请求对象接口 RequestFacade——tomcat实现定义类 请求转发(forward):一种在服务器内部的资源跳转方式。 请求转发特点: 浏览器地址栏路径不发

    2023年04月19日
    浏览(43)
  • [SpringBoot] 8. aop 获取 request response

    最近开发有一个需求需要在 aop 中获取request response ,搜索许久没有答案,故此记录📝~

    2024年02月07日
    浏览(33)
  • Javaweb中的Request(请求)和Response(响应)

    目录 一、概念 二、请求(Request) 1.例子简介 2.Request继承体系 3.Request获取请求数据   (1)请求行 (2)请求头 (3)请求体  4.优化请求体参数的获取 5.解决请求参数乱码问题  6.请求转发  请求转发的特点 三、响应(Response) 1.Response继承体系 2.设置响应数据功能介绍 (

    2024年02月08日
    浏览(42)
  • 小黑子—JavaWeb:第四章 Request与Response

    Tomcat需要解析请求数据,封装为request对象,并且创建request对象传递到service方法中 使用request对象,查阅JavaEE API文档的 HttpServletRequest 接口 请求数据分为3部分: 1、请求行: String getMethod():获取请求方式:GET String getContextPath():获取虚拟目录(项目访问路径):/request-demo String

    2024年02月14日
    浏览(42)
  • SpringMVC中文乱码(request或response)前后端处理

    前端处理: 后端处理: GET请求(request)乱码处理: POST请求(request)乱码处理: 响应(response)乱码处理:

    2024年02月10日
    浏览(35)
  • [ This request has no response data available问题 ]

    目录 前言: 提示背景: 问题导致情况: 跨域设置: Canceled    摸鱼来了  接口响应200 response返回提示:This request has no response data available 1: 确定是否是跨域引起, 一般情如果有跨域会报跨域错误。报无响应的比较少。 2: 浏览器端的代码问题了,然后发现问题请求的代码执行后,紧

    2024年02月15日
    浏览(60)
  • 知识图谱的广泛应用与价值

    随着互联网的迅猛发展,知识图谱逐渐崭露头角,成为连接信息、推动智能化的核心技术之一。本文将深入探讨知识图谱的价值和在不同领域的应用,从语义搜索到金融分析,展示了知识图谱在各个层面的重要作用。 知识图谱的核心在于建立实体之间的关系网络,将信息以图

    2024年01月22日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包