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、转发是一次请求

浙公网安备 33010602011771号