发表于: 2018-01-26 21:38:21

1 681


一、今天学到的知识

---->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页面的编写,解决了中文乱码问题




返回列表 返回列表
评论

    分享到