文章目录
使用Servlet模板创建Servlet更高效
新建测试类
RequestDemo4.java
package com.taotao.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class RequestDemo4 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
setting设置
稍微修改下模板
测试–直接新建servlet模板
记得往下翻翻才能找到这个Servlet模板创建选项
创建模板servlet类成功
Request请求参数中文乱码处理
- 请求参数中出现中文,则会乱码
我们在RequestDemo4类中测试
package com.taotao.web;
import javax.jws.WebService;
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("/req4")
public class RequestDemo4 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.获取username
String username = req.getParameter("username");
System.out.println(username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
测试录入中文参数
解决post请求乱码
POST:设置输入流的编码
req.setCharacterEncoding("UTF-8");
测试
解决Get请求乱码
解决思路
Tomcat默认解码使用的“Iso - 8859 - 1“字符集。
所以,我们只需要再次对tomcat的字符集进行编码,转为字节数组,然后由字节数组再解码,转为utf - 8
相关代码
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取username
String username = req.getParameter("username");
//对ISO_8859-1进行编码,转为字节数组,ISO_8859-1这是tomcat进行的url解码
byte[] bytes = username.getBytes(StandardCharsets.ISO_8859_1);
//对字符数据进行解码
String userName = new String(bytes, StandardCharsets.UTF_8);
System.out.println(userName);
}
运行测试
注意
-
此方法Post请求也可以使用,但是不如另一个方便
-
Tomacat8.0后,已将get请求默认的解码方式改为UTF-8,所以一般不需要转换