Request,Response

2023-10-21  本文已影响0人  扶光_
流程图

一,Request

1.1 request的继承体系

继承体系

1.2 获取请求数据

1.3 获取请求参数

GET获取请求参数String getQueryString()
POST获取请求参数 BufferReader getReader()


image.png
image.png
@WebServlet("/demo2")
public class ServletDemo2 extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get..................");
        //获取所有参数的map集合
        Map<String ,String[]> map = req.getParameterMap();
        //遍历键名
        for (String key : map.keySet()) {
            System.out.println(key+":");

            //遍历值
            String[] values = map.get(key);
            for (String value : values) {
                System.out.print(value+" ");
            }
            System.out.println();
        }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post..................");
        this.doGet(req,resp);
    }

取单独一个键的值,数组

String[] hobbies = req.getParameterValues("hobby");
for(String hobby:hobbies){
    System.out.println(hobby);
  }

根据key获取单独属性值

String name = req.getParameter("name");
String password = req.getParameter("pwd");

可以使用Servlet模板来创建这种servlet

1.4 解决输入中文乱码问题

post请求解决中文乱码request.setCharacterEnconding('utf-8');
get请求解决中文乱码``
在get请求中,他会将utf-8的编码将字符串转换为二进制数的形式进行传播,那么tomcat的默认解码是ISO-8859-1 所以会出现乱码
那么utf-8 一个中文代表三个字节,每个字节转换2个16进制并在前添加%.如果两个汉字中文编码url就变成了6个
%E5%A0%E4%B8%BC%F5%

解决方法
将字符串转换为字节数据,在将字节数组转换为字符串

byte[] bytes = decode.getBytes("ISO-8859-1");
String s = new String(bytes,"utf-8");

1.5 请求转发

一种服务器内部的资源跳转方式


内部跳转
req.getRequestDispatcher("资源B路径").forward(req,res);

二,Response

使用Response对象设置响应数据。

2.2 response完成重定向

一种资源跳转的方式

resp.setStatus(302);
resp.setHeader("location","跳转的路径 ")

关于路径
如果是浏览器使用需要+项目根目录访问路径
如果是服务器内部使用 不需要+目录
关于重定向可以动态获取虚拟目录
String contextPath = request.getContextPath();
resp.setHeader(contextPath+"/resp");

2.3 Response响应字符数据

使用Response对象获取字符输出流
1
PrintWriter writer = resp.getWriter();
2
writer.write("啊啊");

2.4Response响应字节数据

1
ServletOutputStream = resp.getOutputStream();
2
outputStream.write(字节数据);//图片 音频 等等

可以使用IOUtils工具类进行字节的复制操作
在pom.xml导入以下标签

 <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>

使用IOUtils.copy(输入流,输出流);

上一篇 下一篇

猜你喜欢

热点阅读