发表于: 2018-01-26 21:38:21
1 679
一、今天学到的知识
---->form表单提交的 get/post 方法区别
1、Get是用来从服务器上获得数据, Post是用来向服务器上传递数据。
2、传递数据的 形式不同。
Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;
Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
3、get 传递的参数是可见的,post 是不可见的,post 更安全
Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。
Post的所有操作对用户来说都是不可见的。
4、Get传输的数据量小,Post可以传输大量的数据
Get传输的数据量小,这主要是因为受URL长度限制;
Post可以传输大量的数据,所以在上传文件只能使用Post。
5、支持的字符集不同
Get限制Form表单的数据集的值必须为ASCII字符;
Post支持整个ISO10646字符集。默认是用ISO-8859-1编码
6、Get是Form的默认方法。
------>中文乱码的解决
1,在 jsp 页面 设置好 page 属性
contentType的charset 是指服务器发送给客户端时的内容编码
pageEncoding 是jsp文件本身的编码
<%@ page language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
- 1
- 2
- 3
设置JSP源文件字符集时,优先级为pageEncoding>contentType。如果都没有设置,默认ISO-8859-1。
设置响应输出的字符集时,优先级为contentType>pageEncoding。如果都没有设置,默认ISO-8859-1。
JSP要经过两次的“编码”,
第一阶段会用pageEncoding,
第二阶段会用utf-8至utf-8,
第三阶段就是由Tomcat出来的网页, 用的是contentType。
第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。
第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。
2,过滤器处理表单传到servlet/jsp的乱码问题
过滤器-用动态代理解决全站乱码:
http://blog.csdn.net/furongkang/article/details/6761103
在访问资源之前,会先进入filter,将中文乱码等问题解决掉
过滤器的添加分两部分,过滤器本身,过滤器配置
定义一个 编码的 过滤器:
//继承Filter类 ,在
//01 处理 post 提交的方法
request.setCharacterEncoding("utf8");//参数的中文乱码
response.setContentType("text/html;charset=utf8");//处理响应内容的中文乱码
//02 处理get提交的方法,可以使用 代理 来进行此操作!
// 表单提交方式是get 的数据传值的时候应该硬性转码:String para=new String(str.getByte("iso-8859-1"),"UTF-8");
- 1
- 2
- 3
- 4
- 5
- 6
- 7
在web.xml中添加此 过滤器的配置
<filter>
<display-name>EncodingFilter</display-name>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.rr.filter.EncodingFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
在服务器端配置URL编码格式: (不建议更改!)
修改tomcat的配置文件server.xml:
<Connector URIEncoding="UTF-8"
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
connectionTimeout="20000" disableUploadTimeout="true" />
- 1
- 2
- 3
- 4
只需增加 URIEncoding=“UTF-8” 这一句,然后重启tomcat即可。
--->html的form表格的enctype属性
<form enctype="value">
属性值
值 | 描述 |
---|---|
application/x-www-form-urlencoded | 在发送前编码所有字符(默认) |
multipart/form-data | 不对字符编码。 在使用包含文件上传控件的表单时,必须使用该值。 |
text/plain | 空格转换为 "+" 加号,但不对特殊字符编码。 |
上传页面,需要注意的是form 的两个属性必须提供method="post" 和 enctype="multipart/form-data" 缺一不可
上传组件 增加一个属性 accept="image/*" 表示只能选择图片进行上传
留意 <input type="file" name="image" accept="image/*" />
<%@ page language=
"java"
contentType=
"text/html; charset=UTF-8"
pageEncoding=
"UTF-8"
import
=
"java.util.*"
isELIgnored=
"false"
%>
<form action=
"uploadImage"
method=
"post"
enctype=
"multipart/form-data"
>
选择图片:<input type=
"file"
name=
"image"
accept=
"image/*"
/> <br>
<input type=
"submit"
value=
"上传"
>
</form>
二、明天的计划
学习
<
mvc:interceptors
>拦截器的用法
三、遇到的问题
四、今天的收获
Html的form表单、jsp页面的编写,解决了中文乱码问题
评论