栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Request请求 Response响应

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Request请求 Response响应

Request请求

        请求代表用户通过浏览器访问服务器

        开发人员(我们)需要:获取 请求行 请求头 请求体 相关信息

获取请求行

方法

说明

getMethod();

获取请求方法

getContextPath();

获取当前应用发布名称

(发布时写的那个 / ,但是打印是””空)

getRequestURL();

获取请求资源的URL

getRequestURI();

获取请求资源URI

getProtocol();

获取使用的协议

getRemoteAddr();

getRemotePort();

获取来访者信息:地址 端口号

getLocalAddr();

getLocalPort();

获取本地信息:地址 端口号

获取请求头

方法

说明

getHeader("Xxx");

获取消息头的值

getHeaderNames();

获取所有消息头名称的枚举

Enumeration headerNames = req.getHeaderNames();

//遍历枚举

    while (headerNames.hasMoreElements()){
    String headerName = headerNames.nextElement();  //取出消息头
    String headerValue = req.getHeader(headerName); //根据名称获取值
    System.out.println("消息头名称是:"+headerName+",消息头的值是:"+headerValue);

}

获取请求参数

        解决中文乱码问题:req.setCharacterEncoding("UTF-8");

        提取HTML文件中name属性

方法

说明

String getParameter

(String name);

根据参数名获得参数值(单个)

String[] getParameterValues

(String name);

根据参数名获得参数值(数组)

Map

getParameterMap();

获得所有的参数,封装到Map集合

Enumeration getParameterNames();

获得所有请求参数名称的枚举

实体类封装

pom.xml导入Beanutils依赖,进行实体类封装,name取值和实体类属性相同


    commons-beanutils
    commons-beanutils
    1.8.3
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //解决请求参数中文乱码问题
    req.setCharacterEncoding("UTF-8");
    //1.创建要封装的对象
        User user = new User();
    try{
    //2.把请求参数的map封装到user对象中
        BeanUtils.populate(user,req.getParameterMap());
    }catch (Exception e){
    e.printStackTrace();
    }
    //3.输出
    System.out.println("封装对象是:"+user);
}

流读取

pom.xml导入hutool依赖,完成读取,服务器会给我们关流


    cn.hutool
    hutool-all
    5.6.4
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.获取请求对象的字节输入流
        ServletInputStream in = req.getInputStream();
        //2.流的操作
        String str = IoUtil.read(in, "UTF-8");
        System.out.println("用流读到的请求正文是:"+str);
    }

请求转化

        一次请求在服务器内部资源之间跳转方式

        浏览器 → servlet A → servlet B (A到B达成目的)

1.获取转发对象
RequestDispatcher dispatcher = req.getRequestDispatcher("/Xxx");//参数写的就是转发的目的地
2.真正完成转发
dispatcher.forward(req,resp);

共享数据

方法

说明

void setAttribute (String name, Object value)

向request域放入数据

object getAttribute (String name)

根据name从向request域获取数据

void removeAttribute (String name)

根据name从request域删除数据

Response响应

        响应代表浏览器对用户的结果反馈

         开发人员(我们)需要:设置响应状态码 消息头 正文相关信息

解决中文乱码:原理设置和显示不是一个码表
resp.setContentType("text/html;charset=UTF-8");
service只能使用一种字节流或者一种字符流
        //1.使用响应对象获取字节流
        ServletOutputStream out = resp.getOutputStream();
        //2.使用字节流输出正文
        out.write("你好啊!".getBytes("UTF-8"));
        //1.使用响应对象获取字符流
        PrintWriter out = resp.getWriter();
        //2.使用字符流输出正文
        out.write("你好啊!");
使用字节流生成验证码(后面博客铺底)

pom.xml导入hutool依赖

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.创建验证码对象
        LineCaptcha lineCaptcha = new LineCaptcha(200,30,6,10);
        //2.使用验证码对象中提供的输出把,把字节输出流传递进去
        lineCaptcha.write(resp.getOutputStream());
    }

响应重定向

重定向方法

//1.设置响应消息头
resp.setHeader("Location","/responseDemo5");
//2.设置响应状态码
resp.setStatus(302);

简化方法

resp.sendRedirect("/responseDemo5");

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008020.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号