全部
常见问题
产品动态
精选推荐

Request 详解

管理 管理 编辑 删除

1.Request对象:

Servlet中用来处理客户端请求需要用doGet或doPost方法的request对象

72825202306291522459838.png
2.get和post请求区别:

get请求

get提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连

get方式明文传递,数据量小,不安全

效率高,浏览器默认请求方式为GET请求

对应的Servlet的方法是doGet

post请求

post方法是把提交的数据放在HTTP包的Body中

密文传递数据,数据量大,安全

效率相对没有GET高

对应的Servlet的方法是doPost

3.Request主要方法:

4317d20230629152302764.png

4.Request乱码:

乱码原因

产生乱码是因为服务器和客户端沟通的编码不一致造成的,因此解决的办法是:在客户端和服务器之间设置一个统一的编码,之后就按照此编码进行数据的传输和接收

get乱码解决办法

在Tomcat7及以下版本,客户端以UTF-8的编码传输数据到服务器端,而服务器端的request对象使用的是ISO8859-1这个字符编码来接收数据,服务器和客户端沟通的编码不一致因此才会产生中文乱码的。

解决办法∶在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题。

Tomcat8的版本中get方式不会出现乱码了,因为服务器对url的编码格式可以进行自动转换。

aafe520230629152325515.png

  • post乱码解决办法
  1. 由于客户端是以UTF-8字符编码将表单数据传输到服务器端的,因此服务器也需要设置以UTF-8字符编码进行接收。
  2. 解决方案:使用从ServletRequest接口继承而来的setCharacterEncoding(charset)方法进行统一的编码设置。

a1133202306291523384646.png

5.示例代码1:

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(value = "/rs")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.获取用户请求发送数据
        String username=req.getParameter("username");
        String password=req.getParameter("password");

        System.out.println("提价的数据:"+username+"\t"+password);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.对request设置统一编码(解决乱码)
        req.setCharacterEncoding("utf-8");

        //2.获取用户请求发送数据
        String username=req.getParameter("username");
        String password=req.getParameter("password");

       //3.响应数据给客户端
        //--1.解决乱码问题    方式一
//        resp.setCharacterEncoding("utf-8"); //设置服务器端的编码格式
//        resp.setHeader("Content-Type","text/html;charset=utf-8");   //设置响应头(设置浏览器以utf-8解析)

        //--2.接解决乱码问题   方式二
        //一定在获得字符输出流之前获得
        resp.setContentType("text/html;charset=utf-8");

        PrintWriter printWriter=resp.getWriter();
        printWriter.println("注册成功!!!");
    }
}

5.示例代码2:

@WebServlet(value = "/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //解决两中请求方式乱码问题
       req.setCharacterEncoding("utf-8");
       resp.setContentType("text/html;charset=UTF-8");

        //1.收参
        String username=req.getParameter("username");
        String password=req.getParameter("password");

        //2.调用业务逻辑层
        AdminService adminService=new AdminServiceImpl();
        Admin admin=adminService.login(username,password);
		
		//3.处理结果
    }

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

原文链接:点此查看

CRMEB-慕白寒窗雪 最后编辑于2023-06-29 15:26:35

快捷回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
回复从新到旧

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest==1? '取消推荐': '推荐'}}
{{item.floor}}#
{{item.user_info.title}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

作者 管理员 企业

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}   {{itemc.ip_address}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
回复
回复
1204
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

CRMEB-慕白寒窗雪 作者
社区运营专员---高冷のBoy | 呆萌のGirl

回答

2185

发布

1776

经验

45103

快速安全登录

使用微信扫码登录
{{item.label}} {{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
加精
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 开源下载 CRMEB官方论坛 帮助文档
返回顶部 返回顶部
CRMEB客服