近期工作总结(1)

来新公司已经有一个多月的时间了.呃,准确点也就一个月零5天.哈哈.虽然时间其实并不多,但是学到的东西可不少.尤其用到了一些以前自己没有用过的东西.期间碰到了大大小小各种问题,到目前为止基本都解决了,但是怕稍微久一点就会全忘掉,所以在博客里做个记录.虽然现在都不一定全部记得.

项目挺大,前台展现部分功能丰富且复杂,要做第三方接口接入.我一开始被带我的人安排去做前台的一些东西,看了几天代码,自以为已经熟悉了一些了,可以下手做,所以给老师要活.头给安排了一个做第三方数据请求自动登录的功能来做。由于之前没有接触过类似的东西,所以一开始就是在看,熟悉整个系统,整个熟悉下来之后,发现有如下一些我没有用过的东西:
1、过滤器Filter。以前的时候顶多在web.xml文件里设置一下servelet的路径,中间的业务请求大部分甚至连servelet都没有通过,就直接用jsp里声明个实例调用后面的Java代码了。这种方式的好处是开发起来效率高,也好调试,但是安全性太差,代码也容易混乱,不易进行统一管理规划。声明一个Filter的语法如下:<filter>
<filter-name>FilterName</filter-name>
<filter-class>
org.*.filter.FilterName
</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterName</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>FilterName</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
这样的过滤器在一个web.xml中可以声明多个,其对相同内容的过滤的顺序就是按照声明的顺序由上到下。可以用来进行一些校验和设置的操作,如设置字符集,校验是否登录,校验是使用何种类型网络等等。
2、在这个项目开始之初,带我的人就告诉了我估计要用到的几个大的框架,如Controllar会使用struts,类管理控制会使用spring,展示方面主要使用jquery,后来引入了jquery的展示框架easyUI,界面上可能会用到的EL,处理大数据要使用的memcache等,因为第一次接触原因,第一次在工作中接触的原因,开始干活的效率都有点低,但是后来就快起来了。struts1.x在本系统中忠实的执行着控制中心的角色,基本整个系统中需要修改struts相关东西的地方只有两个,一个是要设置其配置文件,把自己要用的请求与类名关联起来,另一个就是要写这个类里的方法,把要处理的方法写出来。由于公司封装的框架的原因,我们用来指定前台请求调用的处理类的方法时,只需要在*.do的请求后添加一个参数do=****Manage.functionName就可以直接实现了。
3、对于spring这个东西,以前还是稍微看过一点,跟struts一样。其实struts看的最多了,因为ssh总是一开始就看struts,而且很久以前就看过一些struts,更容易看进去一些。Spring单独的IOC这部分其实并不难,更何况公司框架还给出了一个SpringHelper,可以使用其生成指定名称的类的实例。然而并不能所有一切都那么顺心如意,现在系统中就有地方使用这个去生成新的类的实例有问题,启动报错。所以我自己用的时候,一般还是使用注解来自动生成。使用spring注解的时候,需要在spring的配置文件中加入配置,这个之前的文章里有写过,回头再看看吧。
4、界面上获取后台传过来的值的时候,一般不再写Java代码,而是直接使用EL。而要访问哪些数据,在由后面处理程序返回时,通过设置attribute等方式放到request里就行了;在页面上使用的方式更加简单,直接使用${}符号,在花括号中间填上自己想要的那个实例的名字就可以获取到相应的实例,并且可以调用其方法,获取其属性。用起来很方便。
《未完待续》

jQuery中给字符串替换值

jQuery字符串替换

[html]
  1. <head>
  2.         <title>test</title>
  3.         <script type=”text/javascript” src=”./jquery/jquery-1.7.1.js”></script>
  4.         <script type=”text/javascript”>
  5.             $(function(){
  6.                 var $inputValue = $(“#input”).val();
  7.                 re = new RegExp(“‘”,”i”);
  8.                 $inputValue = $inputValue.replace(re, “a”);
  9.                 alert($inputValue);
  10.             });
  11.         </script>
  12.     </head>
  13.     <body>
  14.         <a id=”a”>test</a>
  15.         <input id=”input” type=”text” value=”a”a”>
  16.     </body>

脚本说明:其中RegExp(“‘”,”i”)中第一个参数为你所想替换掉的字符串,第二个参数为替换字符串中第一个所匹配的,第二个参数也可以为”g”,表示替换字符串中所有匹配的字符串。replace(re,”a”)第一个参数为之前的对象,第二个参数为所要替换为的参数。

以上实例结果为:弹出“aa’a”,即为:将<input>的value中第一个匹配的单引号替换为a字符。
以上引自<http://blog.csdn.net/fengspg/article/details/7820165>

JS操作cookie实现单点登录

对于单点域名共享登录信息,我建议使用cookie是比较好的。

用cookie是因为它可以共享信息。
cookie是不能跨域访问的,但是在二级域名是可以共享cookie的。
然后你把你的项目统一平台,域名也统一,这样就可以实现cookie的单点登录了。
比如:http://tieba.baidu.com
http://mp3.baidu.com
这样的就算是统一域名。而二级域名可以共享cookie。
cookie的四个可选属性:
1 cookie的生存期属性:expires;默认情况下,cookie只在浏览器会话期存在.退出浏览器就丢失;可以用expires设置时间;退出浏览器后就不会丢失并存为客户端浏览器的cookie文件;过了时间后cookie失效,还会自动删除cookie文件.
2 path属性:默认情况下,在同一个目录下文件可以调用;
3 domain属性:例如设成”.baidu.com”则在.baidu.com下的所有服务器下的文件都可以调用cookie.
4 安全属性:默认情况下为false;用http协议不安全传输;true:用https等协议安全传输.
Javascript代码

Javascript代码  收藏代码
  1. /**
  2. 函数名称:getCookie
  3. 函数功能:获取指定名称的cookie的值
  4. 输入参数:需要测试的字符串
  5. 返回参数:
  6. */
  7. function getSSOCookie()
  8. {
  9.     var arrStr = document.cookie.split(“; “);
  10.     for(var i = 0;i < arrStr.length;i ++){
  11.         var temp = arrStr[i].split(“=”);
  12.         if(temp[0] == “sso”) {
  13.           return unescape(temp[1]);
  14.         }
  15.     }
  16.     return “”;
  17. }
  18. /**
  19. 函数名称:addCookie
  20. 函数功能:添加cookie
  21. 输入参数:需要测试的字符串
  22. 返回参数:
  23. */
  24. function addSSOCookie(objValue)
  25. {
  26.     var str = “sso” + “=” + escape(objValue);
  27.     if(true){//为0时不设定过期时间,浏览器关闭时cookie自动消失
  28.         str += “; path=/”;
  29.     }
  30.     document.cookie = str;
  31. }
  32. /**
  33. 函数名称:delCookie
  34. 函数功能:删除cookie
  35. 输入参数:需要测试的字符串
  36. 返回参数:
  37. */
  38. function delCookie()
  39. {//为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间
  40.     var date =  new  Date();
  41.     date.setTime(date.getTime() – 10000);
  42.     document.cookie = “sso” + “=a; expires=” + date.toGMTString()+”; path=/”;
  43. }

用户在统一加载平台认证系统认证通过后,使用addSSOCookie,用户权限信息保存到了cookie中,其他平台通过调用getSSOCookie,取得用户信息。这样用户就可以不再受平台限制,而实现自由访问各个系统了。

在addSSOCookie方法中,没有设置cookie的失效时间,这样在浏览器关闭后,cookie就自动消失。注意:这样cookie的有效性只能在同一浏览器进程,如果重新打开了一个浏览器进程,cookie信息是获取不到的,也就是单点登录只能在同一个浏览器进程有效。如果想在不用浏览器进程中共享cookie信息,那就设置失效时间,如下:
Javascript代码

Javascript代码  收藏代码
  1. function addCookie(objValue,objHours){//添加cookie
  2.            var str = “sso”+ “=” + escape(objValue);
  3.             if(objHours > 0){//为0时不设定过期时间,浏览器关闭时cookie自动消失
  4.                 var date = new Date();
  5.                 var ms = objHours*3600*1000;
  6.                 date.setTime(date.getTime() + ms);
  7.                 str += “; expires=” + date.toGMTString()+”; path=/; domain=.hanj.com”;
  8.             }
  9.             document.cookie = str;
  10.         }

这样cookie在指定的时间后失效。但这样安全性不能保证,如果时间设置太短,用户在使用中,可能cookie就失效了,需要重新登录。如果时间过长,用户在下次访问,或电脑重起访问,cookie还在有效期中,有可能别其他人使用。cookie不能准确的删除,存在安全隐患。