IT袋

当前位置:主页 > 经验教程 > 建站编程 >

JavaWeb

JavaWeb:Request和Response(4)

时间:2024-01-19 13:40:35 来源:IT袋 作者:马勇
导读:JavaWeb,解决方案 设置输入流编码 request.setCharacterEncoding("UTF-8"); 重新发送POST请求,就会在控制台看到正常展示的中文结果。 6、Request请求转发 请求转发(forward):一

JavaWeb

JavaWeb

解决方案

设置输入流编码

request.setCharacterEncoding("UTF-8");

重新发送POST请求,就会在控制台看到正常展示的中文结果。

6、Request请求转发

请求转发(forward):一种在服务器内部的资源跳转方式。

JavaWeb

浏览器发送请求给服务器,服务器中对应的资源A接收到请求,资源A处理完请求后将请求发给资源B,资源B处理完后将结果响应给浏览器,请求从资源A到资源B的过程就叫请求转发

实现方式

request.getRequestDispatcher("资源B路径").forward(request,response)

代码演示

1.创建一个Aservlet类,接收/a的请求,在doGet方法中打印a请求,同时进行请求转发

@WebServlet(value = "/a")
public class AServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("a 请求");
        // 请求转发
        request.getRequestDispatcher("b").forward(request,response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
    }
}

2.创建一个Bservlet类,接收/b的请求,在doGet方法中打印b请求

@WebServlet(value = "/b")
public class BServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("b 请求");
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
    }
}

3、启动tomcat访问a资源

JavaWeb

请求转发资源间共享数据:使用Request对象

需要使用request对象提供的三个方法:

  • 存储数据到request域[范围,数据是存储在request对象]中
void setAttribute(String name,Object o);
  • 根据key获取值
Object getAttribute(String name);
  • 根据key删除该键值对
void removeAttribute(String name);

接着上个需求来:

1、在a请求转发前保存资源

@WebServlet(value = "/a")
public class AServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("a 请求");
        // 保存数据到request中,要在请求转发之前
        request.setAttribute("name","张三");
        // 请求转发
        request.getRequestDispatcher("b").forward(request,response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
    }
}

2、在b资源获取数据

@WebServlet(value = "/req03")
public class request02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1、获取map集合
        Map<String, String[]> parameterMap = request.getParameterMap();
        parameterMap.forEach((key,values)->{
            System.out.println(key+"::"+ Arrays.toString(values));
        });
        // 2、根据参数名称获取参数值
        String username = request.getParameter("username");
        System.out.println(username);
        // 3、根据参数名称获取参数数组
        String[] hobbies = request.getParameterValues("hobby");
        System.out.println(Arrays.toString(hobbies));
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        doGet(request,response);
    }
}

请求转发的特点

  • 浏览器地址栏路径不发生变化
  • 只能转发到当前服务器的内部资源,不能从一个服务器通过转发访问另一台服务器
  • 一次请求,可以在转发资源间使用request共享数据

7、Response的响应状态码和响应头

HTTP响应数据总共分为三部分内容,分别是响应行、响应头、响应体,对于这三部分内容的数据,respone对象都提供了哪些方法来进行设置?

响应行

相关阅读

  • dns服务器未响应怎么修复 分享dns未响应最简单的修复办法

    dns服务器未响应怎么修复 分享dns未响应最简单的修复办法

    今天为大家介绍dns服务器未响应怎么修复和分享dns未响应最简单的修复办法的教程内容,继续往下看吧! 很多人在浏览网页时,经常会遇到DNS服务器未响应的情况,那么什么是DNS服务器?DNS未

  • 个人网站备案流程 工信部个人网站备案过程讲解

    个人网站备案流程 工信部个人网站备案过程讲解

    您可能不了解个人网站备案流程和工信部个人网站备案过程讲解的IT小经验,继续往下看吧! 嗨,大家好,我是希留。 前面文章介绍了下使用https访问网站的相关配置,然后发现访问https时灵时

  • HTTP状态码深入解析:401 Unauthorized

    HTTP状态码深入解析:401 Unauthorized

    为大家介绍HTTP状态码深入解析的教程内容,接下来一起来看看吧。 在互联网通信中,HTTP状态码是用来表示服务器响应的一种方式。 当我们在浏览器中访问网页时,服务器会返回一个状态码,

  • 什么是跨站脚本 XSS攻击?

    什么是跨站脚本 XSS攻击?

    为网友解答什么是跨站脚本的相关话题,下面为详细的介绍。 跨站脚本(Cross-Site Scripting,XSS)是一种常见的网络安全漏洞,攻击者利用该漏洞在受害者的网页中插入恶意脚本,从而能够获取