概述
一、Servlet获取请求数据
要获取请求数据,使用request.getParameter()
代码展示:
<body>
<form action="servlet/SubmitTest">
请输入用户名:<input type="text" name="username">
请输入密码: <input type="password" name="password">
<input type="submit" value="提交">
</form>
</body>
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SubmitTest extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("username");
String pass = request.getParameter("password");
System.out.println("用户名:" + name + ",密码:" + pass);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
当在页面提交后,即可在控制台打印输出用户名和密码。
二、请求方式(get/post)
get和post请求是在页面表单以何种方式提交,也就是设置method是get还是post,默认是get方式。
下面来说说两种方式的区别:
GET请求:
①参数传递方式:GET请求在浏览器地址栏传参数,以?分割URL和传输数据,参数之间以&相连
②数据量限制:GET提交的数据大小有限制(因为浏览器对URL的长度有限制)
③安全问题:GET方式提交数据,会带来安全问题(地址栏显示出来)
④乱码处理方式:GET方式请求处理乱码每个参数都要处理
⑤GET方式效率高
使用场合:传递少量的非敏感的参数
比如使用链接的方式,即<a href=""></a>
GET请求对应的Servlet的方法是doGet()
POST请求:
①参数传递方式:POST方法是把提交的数据放在HTTP包的Body中(地址栏看不到)
②数据量限制:POST方法提交的数据没有限制 (文件上传必须是POST)
③安全问题:POST提交的数据相对安全
④乱码处理方式:统一处理所有
⑤效率相对没有GET高
post对应的Servlet的方法是doPost
三、处理中文乱码
首先,我们需要明白为什么会产生中文乱码,产生中文乱码的原因无非就是服务器和客户端沟通的编码不一致,解决的办法就是在客户端和服务器之间设置一个统一的编码。
①接收参数乱码:
ⅠGET中文乱码
在Tomcat7及以下
客户端以UTF-8的编码传输数据到服务器端,而服务器端的request对象使用的是ISO8859-1这个字符编码来接收数据,服务器和客户端沟通的编码不一致因此才会产生中文乱码的。解决办法:在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题。
比如接收到name:
String name=request.getParameter("name");
name=new String(name.getBytes("ISO8859-1"),"UTF-8");
GET乱码需要对每个参数都进行乱码处理
ⅡPOST中文乱码
由于客户端是以UTF-8字符编码将表单数据传输到服务器端的,因此服务器也需要设置以UTF-8字符编码进行接收,要想完成此操作,服务器可以直接使用从ServletRequest接口继承而来的"setCharacterEncoding(charset)"方法进行统一的编码设置。
request.setCharacterEncoding("utf-8")
②响应乱码
浏览器识别不到返回的中文是什么编码格式,就会默认使用GB2312,如果返回的是UTF-8格式的那么在浏览器上就会显示乱码的问题。
解决办法:response.setContentType("text/html;charset=UTF-8")
最后
以上就是怡然小甜瓜为你收集整理的Servlet的学习(二)——请求方式(get/post)、处理中文乱码的全部内容,希望文章能够帮你解决Servlet的学习(二)——请求方式(get/post)、处理中文乱码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复