[drp 8]get和post的区别,以及乱码问题的解决
导读:不管是之前做.NET还是现在做Java的项目,都有涉及到get和post请求,第一次遇到的时候,应该是在人事系统的时候,那时候说要总结,结果一直没有总结。现在,做一个初步的总结,连着总结一下提交请求时的乱码问题!
一、联系和区别
一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交。那么结合到项目中的运用,这两者最本质的区别,大概就是get一般用于获取资源信息,而post一般用于更新资源信息。
联系:
参数的大小都是没有限制的。在HTTP协议规范中,没有对URL的长度进行限制,不存在参数的上限问题,有限制的,是浏览器或者服务器对于整个URL的长度限制。
区别:
1,get提交将参数放到了URL的后面,以?分离,如:query_student_list.jsp?pageNo=1&pageSize=10。post不会将参数放到URL的后面,而是放到HTTP的协议体中。
2,获取get和post请求的方式不同,对于get来说,可以通过HttpServletRequest的getRequestURL方法和getQueryString方法,得到请求路径和参数。而对于post请求,需要用getParameterMap方法遍历得到。
3,post的安全性比post安全性要高。这一点和两种提交方式的参数放置位置有关,get方式中,参数将出现在URL上,这样容易泄露一些信息。
二、乱码问题
解决乱码问题,首先看在那些地方进行了编码和解码,如图:
通过GET方式提交的数据都是拼接在URL后面来提交的,tomcat服务器会根据设置的URIEncoding来进行解码,如果没有设置则会使用默认的ISO-8859-1来解码。假如我们在页面将编码设置为UTF-8,而URIEncoding设置的不是或者没有设置,那么服务器进行解码时就会产生乱码。这个时候我们一般可以通过new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8")
的形式来获取正确数据。除了这个方法意外,也可以在tomcat服务器中进行编码配置,来解决get方式提交的乱码问题,打开tomcat目录下的conf文件夹,找到server.xml文件,找到代码段:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="GB18030" />修改其中的URIEncoding参数为UTF-8.
对于POST方式,它采用的编码也是由页面来决定的即contentType。当我通过点击页面的submit按钮来提交表单时,浏览器首先会根据ontentType的charset编码格式来对POST表单的参数进行编码然后提交给服务器,在服务器端同样也是用contentType中设置的字符集来进行解码,我们也可以自己设置字符集编码:request.setCharacterEncoding(charset)
。
三、总结
对于get和post这两种提交方式,应该分情况而具体应用,一味的使用get方式提交或者一味的使用post方式提交,都是不可取的。(PS:貌似自己在使用的过程中,都是只管结果的,别人怎么用,自己就怎么写,唉!)
[drp 8]get和post的区别,以及乱码问题的解决的更多相关文章
- AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法? 分类: web前端面试题2013-07-20 22:40 630人阅读 评论(0) 收藏 举报 目录(? ...
- [drp 7]转发和重定向的区别
导读:类似于response.sendRedirect(request.getContextPath()+"/servlet/item/SearchItemServlet");和r ...
- [drp 6]接口和抽象类的区别,及其应用场景
导读:在很多时候,接口和抽象类可以替换.发现这个问题,还是之前学习设计模式的时候,看到那个UML图发现的.那么,究竟在什么时候使用接口,什么时候使用抽象类呢?现在结合这个项目,做一个总结. 一.接口 ...
- get和post的区别与乱码问题解决
★ get和post的区别: 1.get请求通过url地址发送请求参数,可以在地址栏上直接显示 2.post请求通过请求体发送请求参数,不会再地址栏上显示 3.get在地址栏显 ...
- Navicat软件中mysql中int、bigint、smallint和tinyint的区别、布尔类型存储以及乱码问题的解决
很长时间不写博客了,最近一直在忙这学校的比赛都忘记更新博客了.新的任务又要开始了,我们要准备<2017年中国大学生计算机设计大赛软件服务外包竞赛>.这次不能再想像之前那样有PC端的功能作为 ...
- 【drp 9】Servlet生命周期
一.基本概念 Servlet(Server Applet):全称Java Servlet,是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet ...
- 【drp 12】再识转发和重定向:SpringMVC无法跳转页面
最近再使用SpringMVC进行页面跳转的时候,不知道发生了什么,始终都无法正确跳转.后来问题解决了,发现是对于转发和重定向没有能很好的理解,以此写篇博客,权当做积累了! 声明:本博客的所有代码,均为 ...
- AI,DM,ML,PR的区别与联系
数据挖掘和机器学习的区别和联系,周志华有一篇很好的论述<机器学习与数据挖掘>可以帮助大家理解.数据挖掘受到很多学科领域的影响,其中数据库.机器学习.统计学无疑影响最大.简言之,对数据挖掘而 ...
- FF与IE对JavaScript和CSS的区别
一.FF与IE对JavaScript的区别 1. document.formName.item("itemName") 问题 说明:IE下,可以使用document.formNam ...
随机推荐
- 黄聪:百度知道中对HTML字符实体、字符编号,&开头字符的使用
http://www.w3school.com.cn/tags/html_ref_entities.html 带有实体名称的 ASCII 实体 结果 描述 实体名称 实体编号 " quota ...
- (C#).NET 2.0 ~ 4.0 OS requirements.
.NET 4.0 requires XP SP3, Win2k3 SP2, Vista, 7, or 2008(R2) .NET 3.5 requires XP SP2 or newer. .NET ...
- svn 提交错误 400 Bad Reqest MKACTIVITY 请求于XX失败 Conflict Unable to connect to a repository at URL
思路来源:http://www.cnblogs.com/wangyt223/archive/2012/11/22/2782801.html svn 提交错误 400 Bad Reqest MKACTI ...
- python (11)文件的读写 按行读文件
读文件: 读取文件 f = open('\info.txt') fil = f.read() f.close() 按行读文件: f = open("info.txt") while ...
- Java多线程之新类库中的构件PriorityBlockingQueue
package concurrent2; import java.util.ArrayList; import java.util.List; import java.util.Queue; impo ...
- android之location02
package com.example.mars_3300_location02; import java.net.ContentHandler; import java.util.List; imp ...
- vs 2012 智能提示后为何不能 直接按enter键把提示的内容输入
这个是VS的"建议完成模式"和"标准模式",两者间切换按快捷键:Ctrl+Alt+空格键
- DXperience-11.1.5 破解
将DXPerience_11.1.5_Crack里的所有文件粘贴到DXperience-11.1.5的bin文件夹下,然后在cmd运行register.bin
- SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?(转)
如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了. 1.数据库中某个表中的数据很多.很多是什么概念?一万条?两万条?还是十万条.一百万条?这个,我觉得是仁者见仁.智者见 ...
- 解决play framework play控制台乱码问题
2.0以下版本 C:\Program Files\play-1.2.3\framework\pym\play 目录下的application.py 修改245行中的java_args.append( ...