返回顶部
首页 > 资讯 > 精选 >JavaWeb中HttpResponse和HttpRequest如何使用
  • 161
分享到

JavaWeb中HttpResponse和HttpRequest如何使用

2023-06-20 16:06:14 161人浏览 八月长安
摘要

javaweb中HttpResponse和HttpRequest如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。httpservletResponse概述:在创建Se

javawebHttpResponse和HttpRequest如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

httpservletResponse概述:

在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。service方法中的response的类型是ServletResponse,而doGet/doPost方法的response的类型是HttpServletResponse,HttpServletResponse是ServletResponse的子接口,功能和方法更加强大。

Response运行流程

JavaWeb中HttpResponse和HttpRequest如何使用

响应头有很多这里只介绍常用的。

JavaWeb中HttpResponse和HttpRequest如何使用

在浏览器可以按F12 抓包看响应头、请求头、具体的可以再查。

设置响应行

设置响应的状态码

@WEBServlet("/test3")public class HttpResponseTest3 extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        System.out.println("设置状态码,前台通过判断状态码,来判断请求是否成功");        resp.setStatus(404);    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

测试

JavaWeb中HttpResponse和HttpRequest如何使用

设置响应头

刷新 跳转页面

@WebServlet("/test4")public class HttpResponseTest4 extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        // 设置响应头 每1秒自动刷新        System.out.println("设置响应头 每1秒自动刷新");        resp.setHeader("Refresh", "1");        //定时跳转 3秒后将自动跳转//        resp.setHeader("Refresh","3;URL=hello.jsp");    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

测试

JavaWeb中HttpResponse和HttpRequest如何使用

一个小demo 实现刷新 页面累加

@WebServlet("/test4")public class ResponseTest4 extends HttpServlet {    private static Integer id=1;    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        response.setHeader("Refresh","1");        PrintWriter writer = response.getWriter();        id++;        writer.print("id==>"+id);    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

设置字符编码 解决中文乱码问题

@WebServlet("/test1")public class HttpResponseTest1 extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        // 解决中文乱码问题        // 设置响应头        // 设置字符编码 resp.setCharacterEncoding("UTF-8");        // 设置响应内容以什么格式展示到页面 什么编码格式 包含了设置字符编码        resp.setContentType("text/html;charset=utf-8");        PrintWriter writer = resp.getWriter();        writer.print("中国,你好!!!");    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

测试

JavaWeb中HttpResponse和HttpRequest如何使用

重定向 redirect

@WebServlet("/test5")public class HttpResponseTest5 extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        resp.sendRedirect("hello.jsp");//        resp.setHeader("location","www.baidu.com"); 通过设置响应头转发    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

request转发

@WebServlet("/test5")public class HttpResponseTest5 extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//        resp.sendRedirect("hello.jsp");        req.getRequestDispatcher("hello.jsp").forward(req,resp);    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

重定向和转发的区别

文件下载

获取路径资源

String path=this.getServletContext().getRealPath("WEB-INF\\classes\\8.jpg");

读取资源

FileInputStream fileInputStream=new FileInputStream(path);

获取到文件名,路径在电脑上保存的形式是 \ \

String fileName=path.substring(path.lastIndexOf("\\")+1);

设置消息头告诉浏览器,我要下载1.png这个图片 设置编码

resp.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));

把读取到的内容回送给浏览器

 int len=0;byte[] bytes=new byte[1024];// ServletOutputStream 提供用于将二进制数据发送到客户端的输出流ServletOutputStream servletOutputStream=resp.getOutputStream();while((len=fileInputStream.read(bytes))>0) {    servletOutputStream.write(bytes,0,len);}

关闭资源

servletOutputStream.close();        fileInputStream.close();

注:8.jpg 放在我的resources 文件夹下 但是这里需要写的是编译完8.jpg存放的位置

JavaWeb中HttpResponse和HttpRequest如何使用

具体代码

@WebServlet("/down")public class ResponseDownFile extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        //获取路径资源        String path=this.getServletContext().getRealPath("WEB-INF\\classes\\8.jpg");        //读取资源        FileInputStream fileInputStream=new FileInputStream(path);        //获取到文件名,路径在电脑上保存的形式是\\        String fileName=path.substring(path.lastIndexOf("\\")+1);        //设置消息头告诉浏览器,我要下载1.png这个图片        // 该方式文件名为中文时会乱码        //防止中文乱码        resp.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));        //把读取到的内容回送给浏览器        int len=0;        byte[] bytes=new byte[1024];        ServletOutputStream servletOutputStream=resp.getOutputStream();        while((len=fileInputStream.read(bytes))>0) {            servletOutputStream.write(bytes,0,len);        }        // 关闭资源        servletOutputStream.close();        fileInputStream.close();    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

HttpRequest 讲解

HttpServletRequest概述

我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。service()方法中写了根据请求方式的不同调用doget()和dopost().

service方法中的request的类型是ServletRequest,而doGet/doPost方法的request类型HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加强大.

Request 运行流程

JavaWeb中HttpResponse和HttpRequest如何使用

获取请求携带的参数

@WebServlet("/request1")public class RequestTest1 extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        // 这里是请求的参数名  必须是同名的         String username = req.getParameter("username");         String passWord = req.getParameter("password");        PrintWriter writer = resp.getWriter();        writer.print("<h2>"+username+":"+password+"</h2>");    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

JavaWeb中HttpResponse和HttpRequest如何使用

获取多个参数的值

  @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        // 设置请求的编码  不然会乱码        req.setCharacterEncoding("utf-8");        Enumeration<String>  names = req.getParameterNames();        while (names.hasMoreElements()) {            String name = (String) names.nextElement();            String[]  values = req.getParameterValues(name);            System.out.println(name+":"+ Arrays.toString(values));        }    }

获得请求行的信息

@WebServlet("/request3")public class RequestTest3 extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        // 获得请求的url        StringBuffer requestURL = req.getRequestURL();        System.out.println("请求的URL===>"+requestURL);        // 获得请求的Servlet的路径        String path = req.getServletPath();        System.out.println("请求的Servlet的路径===>"+path);        //返回发出此请求的HTTP方法的名称,例如GET,POST或PUT        String method = req.getMethod();        System.out.println("返回发出此请求的HTTP方法的名称==>"+method);        //返回发送请求的客户端或最后一个代理的Internet协议(IP)地址        String remoteAddr = req.getRemoteAddr();        System.out.println("remoteAddr==>"+remoteAddr);    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

request实现转发

@WebServlet("/request2")public class RequestTest2 extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        // 访问request2 转发到 request4去        req.getRequestDispatcher("/request4").forward(req,resp);    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

request是一个域对象

request对象也是一个存储数据的区域对象,所以也具有如下方法:

setAttribute(String name, Object o)

getAttribute(String name)

removeAttribute(String name)

ServletContext 作用域:

创建:启动web应用程序的时候创建

销毁:关闭web应用程序的时候销毁

域的作用范围:整个web应用的启动周期

request作用域:

创建:访问时创建request

销毁:响应结束request销毁

域的作用范围:一次请求中

关于JavaWeb中HttpResponse和HttpRequest如何使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: JavaWeb中HttpResponse和HttpRequest如何使用

本文链接: https://lsjlt.com/news/298248.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaWeb中HttpResponse和HttpRequest如何使用
    JavaWeb中HttpResponse和HttpRequest如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。HttpServletResponse概述:在创建Se...
    99+
    2023-06-20
  • JavaWeb入门:HttpResponse和HttpRequest详解
    目录HttpResponse讲解HttpServletResponse概述:Response运行流程设置响应行设置响应头一个小demo实现刷新页面累加设置字符编码解决中文乱码问题重定...
    99+
    2024-04-02
  • JavaWeb 中Hello Servlet如何使用
    JavaWeb 中Hello Servlet如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Servlet 概述serlvet sun公司 开发动态web 的一门技术...
    99+
    2023-06-20
  • JavaWeb中怎么使用Filter和Listener
    这篇文章主要讲解了“JavaWeb中怎么使用Filter和Listener”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaWeb中怎么使用Filter和Listener”吧!Filte...
    99+
    2023-06-07
  • Java如何使用httpRequest+Jsoup爬取红蓝球号码
    小编给大家分享一下Java如何使用httpRequest+Jsoup爬取红蓝球号码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、Jsoup介绍1.1、简介jsoup 是一款Java 的HTML解析器,可直接解析某个UR...
    99+
    2023-06-20
  • JavaWeb中的Request和Response怎么使用
    这篇“JavaWeb中的Request和Response怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaWeb...
    99+
    2023-07-05
  • 如何使用JavaWeb实现表单提交
    这篇文章主要介绍如何使用JavaWeb实现表单提交,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!register.html<!DOCTYPE html PUBLIC "-...
    99+
    2023-06-29
  • JavaWeb中ServletContext的介绍和应用
    本篇内容主要讲解“JavaWeb中ServletContext的介绍和应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaWeb中ServletContext的介绍和应用”吧!目录获取we...
    99+
    2023-06-20
  • JavaWeb如何使用DBUtils实现增删改查
    这篇文章主要讲解了“JavaWeb如何使用DBUtils实现增删改查”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaWeb如何使用DBUtils实现增删改查”吧!JavaWeb 使用D...
    99+
    2023-06-21
  • javaweb在eclipse中如何运行
    要在Eclipse中运行Java Web项目,您需要按照以下步骤进行操作:1. 确保您已经安装了Java Development K...
    99+
    2023-09-22
    eclipse javaweb
  • JavaWeb开发中过滤器和监听器使用详解
    目录1 Filter1.1 Filter简介1.2 Filter的快速入门1.2.1 创建Filter类1.2.2 访问index.jsp1.3 Filter的拦截路径的配置1.4 ...
    99+
    2022-11-13
    JavaWeb过滤器 JavaWeb监听器
  • Javaweb如何使用Maven工具与Tomcat的方法
    小编给大家分享一下Javaweb如何使用Maven工具与Tomcat的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、Maven工具1,关于mavenMav...
    99+
    2023-06-29
  • JavaWeb如何使用mvc模式实现登录功能
    这篇文章给大家分享的是有关JavaWeb如何使用mvc模式实现登录功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。部署项目、环境搭建 详细内容  1.导包  &...
    99+
    2023-06-29
  • 如何使用IDEA新建一个普通的Javaweb项目
    如今使用IDEA一般都是创建springBoot程序,今天说说创建普通JavaWeb项目的方法 一个基本的javaweb项目就创建好了,下图是目录结构 接下来配置tomc...
    99+
    2024-04-02
  • 如何使用JavaWeb实现显示mysql数据库数据
    小编给大家分享一下如何使用JavaWeb实现显示mysql数据库数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!EMS-员工信息管理系统MySQL学习之基础操作...
    99+
    2023-06-29
  • 如何深入解析JavaWeb中的事务
    如何深入解析JavaWeb中的事务,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。事务,大家所熟悉的事务(Transcation),基本上会就往...
    99+
    2024-04-02
  • javaweb如何使用华为云短信通知公共类调用
    javaweb华为云短信通知公共类调用 情景:公司业务需求,短信从阿里云切换到华为云,参照华为云短信调用的相关文档遇到不少坑,在此记录一下。 开发环境:JDK1.8 系统环境:Spr...
    99+
    2024-04-02
  • 如何使用Shell中的${}、##和%%
    这篇文章主要介绍“如何使用Shell中的${}、##和%%”,在日常操作中,相信很多人在如何使用Shell中的${}、##和%%问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Shell中的${}、##...
    99+
    2023-06-09
  • 利用javaweb是如何实现分页的
    今天就跟大家聊聊有关利用javaweb是如何实现分页的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体内容如下public class Page { private int cur...
    99+
    2023-05-31
    javaweb 分页 ava
  • IDEA 中如何创建并部署JavaWeb程序
    这篇文章主要介绍“IDEA 中如何创建并部署JavaWeb程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“IDEA 中如何创建并部署JavaWeb程序”文章能帮助大家解决问题。...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作