Request获取请求参数中文乱码问题处理和请求转发

Request获取请求参数中文乱码问题处理

中文乱码问题:

  get方式:tomcat8已经将get方式乱码问题解决了

 

复制代码
<body>
    <form action="/requestDemo3" method="get">
        <input type="text" placeholder="请输入用户名" name="username"><br>
        <input type="text" placeholder="请输入密码" name="password"><br>

        <input type="checkbox" name="hobby" value="game">游戏
        <input type="checkbox" name="hobby" value="study">学习
        <br>
        <input type="submit" value="注册">
    </form>
</body>
复制代码

 

复制代码
@WebServlet("/requestDemo3")
public class RequestDemo3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //post获取请求参数
        String username = request.getParameter("username");
        System.out.println(username);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}
复制代码

 

  post方式:会乱码

 

复制代码
<body>
    <form action="/requestDemo3" method="post">
        <input type="text" placeholder="请输入用户名" name="username"><br>
        <input type="text" placeholder="请输入密码" name="password"><br>

        <input type="checkbox" name="hobby" value="game">游戏
        <input type="checkbox" name="hobby" value="study">学习
        <br>
        <input type="submit" value="注册">
    </form>
</body>
复制代码

 

 

    解决:在请求参数前,设置request的编码

 

复制代码
@WebServlet("/requestDemo3")
public class RequestDemo3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //post获取请求参数
        request.setCharacterEncoding("UTF-8");
        String username = request.getParameter("username");
        System.out.println(username);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}
复制代码

 

 

 

 

 

 

Request请求转发

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

步骤:

  1、通过request对象获取请求转发器对象

     RequestDispatcher getRequestDispatcher(String path);

  2、使用RequestDispatcher对象来进行转发

    forward(ServletRequest request,Response response);

 

 

复制代码
@WebServlet("/requestDemo3")
public class RequestDemo3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("requestDemo3.....");
        request.getRequestDispatcher("/requestDemo4").forward(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}
复制代码

 

复制代码
@WebServlet("/requestDemo4")
public class RequestDemo4 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("requestDemo4.....");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}
复制代码

特点:
  1、浏览器地址栏路径不会发生变化  

  2、只能转发到当前服务器内部资源中

  3、转发是一次请求

 

posted @   xjw12345  阅读(375)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示