Request和Response详解

本文阅读 1 分钟
首页 代码,Java 正文

1.通用方式获取请求参数

img 案例:

package com.study.Request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

@WebServlet("/RequestDemo1")
public class RequestDemo1 extends HttpServlet { 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
        //1.获取所有参数的Map集合
        Map<String, String[]> map = req.getParameterMap();
        //获取键
        for (String key : map.keySet()) { 
            System.out.print(key+":");
            //获取值
            String[] values = map.get(key);
            for (String value : values) { 
                System.out.print(value+" ");
            }
        }
        System.out.println();
        //2.根据key获取参数值,数组
        String[] hobbies = req.getParameterValues("hobby");
        for (String hobby : hobbies) { 
            System.out.print(hobby+" ");
        }
        System.out.println();
        //3.根据key获取单个参数值
        String name = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println(name);
        System.out.println(password);
/* username:object password:aaa hobby:1 2 1 2 object aaa */
    }

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

2.请求参数中文乱码处理

img 案例:

package com.study.Request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

@WebServlet("/RequestDemo2")
public class RequestDemo2 extends HttpServlet { 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
        //解决乱码:post
       // req.setCharacterEncoding("UTF-8");
        //获取username
        String username = req.getParameter("username");
        //System.out.println(username); //马奎斯

        //解决乱码:get
        username=new String(username.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);
        System.out.println(username);   //马奎斯


    }

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

3.请求转发

img img 案例:

package com.study.Request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

@WebServlet("/RequestDemo3")
public class RequestDemo3 extends HttpServlet { 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
        System.out.println("Demo3...");
        //存储数据
        req.setAttribute("date","Hello Demo4");
        //请求转发
        req.getRequestDispatcher("/RequestDemo4").forward(req,resp);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
        this.doGet(req, resp);
    }
}
/* Demo3... Demo4... Hello Demo4 */

package com.study.Request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

@WebServlet("/RequestDemo4")
public class RequestDemo4 extends HttpServlet { 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
        System.out.println("Demo4...");
        //获取数据
        Object o = req.getAttribute("date");
        System.out.println(o);

    }

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

1.重定向

img 案例:

package com.study.Response;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/resp1")
public class ResponseDemo1 extends HttpServlet { 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
        System.out.println("ResponseDemo1...");
        resp.sendRedirect("/resp2");
        //可以重定向到任何资源
        //resp.sendRedirect("https://www.baidu.com");
         //获取动态虚拟路径
        /*String contextPath = req.getContextPath(); resp.sendRedirect(contextPath+"/resp2"); */

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
        this.doGet(req, resp);
    }
}
/* ResponseDemo1... ResponseDemo2... */

package com.study.Response;

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

@WebServlet("/resp2")
public class ResponseDemo2 extends HttpServlet { 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
        System.out.println("ResponseDemo2...");

    }

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

2.Response响应字符数据

img 案例:

package com.study.Response;

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

@WebServlet("/resp3")
public class ResponseDemo3 extends HttpServlet { 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
        //获取字符输出流
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.write("MKS");
        writer.write("<h1>MKS</h1>");
        writer.write("小马哥");
        writer.write("<h1>小马哥</h1>");

    }

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

运行结果: img

3.Response响应字节数据

img 案例:

package com.study.Response;

import org.apache.commons.io.IOUtils;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/resp4")
public class ResponseDemo4 extends HttpServlet { 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
       //读文件
        FileInputStream file = new FileInputStream("F:4.jpg");
        //获取response字节输出流
        ServletOutputStream out = resp.getOutputStream();
        //完成流的copy方式一
       /* byte[] bytes=new byte[1024]; int len; while ((len=file.read(bytes))!=-1){ out.write(bytes,0,len); } file.close();*/

       //copy方式二
        IOUtils.copy(file,out);

    }

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

运行结果: img

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/qq_43514330/article/details/125246886
-- 展开阅读全文 --
安全面试之XSS(跨站脚本攻击)
« 上一篇 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复