学习在于坚持与积累,有句话说得好:Life Is An Endless Journey Of Learning! 时间匆匆而过, 记录下自己的足迹.....
I. SpringMVC中如果出现乱码问题,可使用CharacterEncodingFilter来对请求和相应进行编码。
<span style="font-family:KaiTi_GB2312; font-size:18px"> <filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> // encoding 参数对请求数据进行编码
// 也可设置forceEncoding参数对相应进行编码</span>
<span style="font-family:KaiTi_GB2312; font-size:18px"></span>
II. 避免表单数据进行重复提交 表单数据的重复提交问题,永远是程序员需要面对于解决的一个基本问题。表单重复提交可能会造成极为严重的后果,尤其是金融系统。因而应该细心处理表单操作可能出现的问题。 1. PRG(Post Redirect Get)是最常用的 处理表单重复提交的手段。该方法的步骤是:
表单进行Post提交,后端代码处理完成相应操作然后将请求重定向另一URL,浏览器再次以Get方式进行请求。这时无论如何刷新,发送的请求都只是针对最后那次Get方式访问的URL,和表单数据没有了任何牵连。
这种方式的应用场景:适合那些最终呈递的页面所需数据与表单数据非紧密联系,或者说非直接取值与表单数据。如用户登陆可使用PRG方式,呈递页面只需要用户名即可(已存在Session中,不再需要表单数据)。
2. Token方式。步骤如下:
<1> 呈递相应表单页面前,生成Token并存于Session中。
<2> 页面表单添加隐藏域,值为上生成的Token。
<3> 表单提交,后端代码将Request中的Token与Session中存储的Token进行对比,若一致则进行相应处理,保存处理得到的数据与Model(Request)中,同时使Session中的Token失效(Session.removeAttribute("Token")),呈递页面。
<4> 若Token不一致,则为用户刷新操作,进行相应页面跳转。 Token方式适用场景:最终呈递页面需要使用表单提交的数据或根据表单数据处理得到的数据。例如:图片上传后跳转至快速编辑页面,后一页面需要前一请求处理得到的数据,如果使用PRG方式无法获取相应数据亦或是获取到数据而导致页面刷新进行多次请求,数据库查询压力增大。
III. jquery中的.attr()与,.prop()方法的对比
attribute与property的汉语解释皆为:属性。 如果完全将attribute与property理解为相同意义,那么使用中会犯下错误。 最好的理解是将attribute当做Dom元素的用户定义属性,而property理解为Dom元素固有属性。以人为例:人的眼睛,嘴巴等是固有属性;而衣服,鞋子则是自定义属性。想穿什么衣服,鞋子由自己,但是你有一双眼睛,一个鼻子这些是生来具备的。
<input type="text" value="i am an attribute" />// 这里的type与value属性是用户定义的,取值使用.attr()方法 -- $("input").attr("type"); 若想获取该input是否disable是否checked,因为这些是其property(本身属性),使用.prop()方法 -- $("input").prop("disabled");
IV. 今天见到一个SQL语句,以前没使用过,不过很有特点,跟大家分享下:
<span style="font-family:KaiTi_GB2312; font-size:18px"> 语法是:insert into select
insert into table1 select * from table2 // 将table2查询出的数据复制到table1中,当然列数要对应</span>
有兴趣的朋友可以试试.....
Good Bye, Readers; See You Next Post.....