Grails-URL映射

URL映射

到目前为止,贯穿整个文档用于URLs的规约默认为/controller/action/id。然而,这个规约不是硬性的写入Grails中,实际上,它是通过一个位于grails-app/controllers/UrlMappings.groovy的URL映射类所控制。

UrlMappings类包含一个名为mappings单一属性,并被赋予一个代码块:

class UrlMappings {
    static mappings = {
    }    
}

Read More

tomcat部署静态war包

使用RESTful接口,在做开发的时候前端和后端可以完全分离。

完全分离的好处就是前端代码更新可以实时生效,不需要重启服务器。

前端:HTML、CSS、JS文件
后端:JSP等

在本机上测试,需要同时启动两个tomcat,一个部署后台,一个部署前端。

Tomcat 官方网站上下载需要的 Mac 版本,确定 Mac 上 Java 版本与之对应。
解压 Tomcat 到想安装到的位置,进入 Tomcat/bin 目录下执行:

./catalina.sh run

Read More

AngularJS——ngClass

ngClass能够为HTML元素设置动态CSS样式,ngClass有三种使用方法:

ng-class=”字符串”

<p ng-class="style">字符串语法</p>
<input type="text" ng-model="style" >

字符串应该是一个或多个由空格分开的样式名称,例如在上面的input里面输入red的时候,“字符串语法”这五个字就会变红。如果要输入多个样式,例如bold red,那么就要用空格分隔。

Read More

浏览器的Storage对象

Storage对象简介

浏览器的storage对象包含localStoragesessionStorage,它们的用法是一样的,区别在于:

  • sessionStorage为每一个给定的源维持一个独立的存储区域,该存储区域在页面会话期间可用(即只要浏览器处于打开状态,包括页面重新加载和恢复)。
  • localStorage拥有sessionStorage全部的功能,但不一样的是:如果关闭浏览器关闭,然后重新打开后数据仍然存在。

也就是说它们的不同之处在于:存储在localStorage里面的数据没有过期时间,而存储在sessionStorage里面的数据会在浏览器会话结束(即浏览器关闭时)时被清除。这里面需要特别注意的是:Storage对象中保存的数据都仅限于该页面的协议。也就是说a.com下的Storage是不能被b.com所取到的,浏览器对于每个源使用不同的Storage对象进行独立运行和控制。

关于Storage对象的一些API

属性

  • Storage.length:获取存储的数据项数量。

方法

  • Storage.key(n):返回存储中的第n个键名。
  • Storage.getItem(key) :从存储中获取值
  • Storage.setItem(key,value):在存储中设置值
  • Storage.removeItem(key):删除某项记录
  • Storage.clear():删除全部记录

localStorage为例详细介绍

判断浏览器是否支持本地存储

1
2
3
4
5
if(window.localStorage){
alert('This browser supports localStorage');
}else{
alert('This browser does NOT support localStorage');
}

本地存储赋值的3种方式:

1
2
3
window.localStorage.a = 'value'
window.localStorage['a'] = 'value'
window.localStorage.setItem('a', 'value')

本地存储获取值的3种方式:

1
2
3
window.localStorage.a
window.localStorage['a']
window.localStorage.getItem('a')

获取本地存储一共存储了多少了属性键值对

1
window.localStorage.length

本地存储移除某个键值对

1
window.localStorage.removeItem('a')

一次性移除所有的键值对

1
window.localStorage.clear()

有时候在我们不知道有哪些键的情况下,可以通过key(index)的方法来获取键

1
2
3
4
for (var i=0; i<window.localStorage.length; i++) {
var propertyName = window.localStorage.key(i)
console.log(propertyName + "----" + window.localStorage.getItem(propertyName))
}

可以为本地存储添加事件监听器

Storage事件可以被监听,但是当前页面却收不到,只能是其他页面,也就是说同源下的两个不同页面之间可以通过监听Storage事件进行通信。

1
2
3
4
5
if(window.addEventListener){
window.addEventListener("storage",funciton(){console.log('处理本地存储变化')},false)
}else if(window.attachEvent){
window.attachEvent("onstorage",funciton(){console.log('处理本地存储变化')})
}

AngularJS使用$resource进行增删改查

$resource服务是建立在$http服务之上的,对于RESTful接口,使用$resource服务进行增删改查非常容易。

$resource服务是一个angular插件,需要单独下载,

bower install angular-resource --save

在调用的时候还需要ngResource模块的支持,也就是说必须在定义模块的时候注入ngResource

angular.module('yourApp', ['ui.router','ngResource'])

否则在调用的时候,例如:

Read More

Ubuntu安装nginx

修改文件 /etc/apt/sources.list,在底部添加下面两句话。 也可以在文件夹 /etc/apt/sources.list.d/下面添加文件, 例如 /etc/apt/sources.list.d/nginx.list

1
2
deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx

然后更新软件包:

1
2
sudo apt-get update
sudo apt-get install nginx

Read More

常用Linux命令

常用Linux命令

查找文件

1
2
3
4
5
6
7
8
9
find / -name filename.txt #根据名称查找/目录下的filename.txt文件。
find . -name "*.xml" #递归查找所有的xml文件
find . -name "*.xml" |xargs grep "hello world" #递归查找所有文件内容中包含hello world的xml文件
grep -H 'spring' *.xml #查找所以有的包含spring的xml文件
find ./ -size 0 | xargs rm -f &amp; #删除文件大小为零的文件
ls -l | grep '.jar' #查找当前目录中的所有jar文件
grep 'test' d* #显示所有以d开头的文件中包含test的行。
grep 'test' aa bb cc #显示在aa,bb,cc文件中匹配test的行。
grep '[a-z]\{5\}' aa #显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

Read More

域名解析名词解释

域名解析就是从域名到IP的转换过程,由DNS服务器完成。

A记录

IP指向,用户可以在此设置子域名并指向目标主机,从而实现通过域名找到服务器。应用场景是:已知主机IP,需要将域名解析到此IP。例如:

1
2
3
www.a.com -——-> IP:116.255.202.1
web.b.cn -——-> IP:116.255.202.11
mail.c.la -——-> IP:116.255.202.111

Read More

开心一刻

孔子曰:中午不睡,下午崩溃。孟子曰:孔子说的对!


老子曰:睡可睡,非常睡。


你说…你喜欢我?其实…我一开始…其实我也…唉跟你说了吧,其实我也挺喜欢我自己的。


作为失败的典型,你实在是太成功了。


我这人从不记仇,一般有仇当场我就报了。


是这样的张总,你在家里的电脑上按了CTRL+C,然后在公司的电脑上再按CTRL+V是肯定不行的。即使同一篇文章也不行。不不,多贵的电脑都不行。


人永远不知道谁哪次不经意的跟你说了再见之后就真的再也不见了。


猜一句英文:「ABABBBAAAAAABBBABAAAABBBBAABBBAAAAA」?〈答案:Long time no C〉


每当困难的时候我就念藏经:“噢嘛呢哞嘛哄”, 翻译成英文就是:All money go my home!


最简单的长寿秘决——保持呼吸,不要断气。


执子之手,方知子丑,泪流满面,子不走我走。


人不犯我,我不犯人;人若犯我,礼让三分;人再犯我,我还一针;人还犯我,斩草除根。


单身并不难,难的是应付那些千方百计想让你结束单身的人 。


有空学风水去,死后占个好墓也算弥补了生前买不起好房的遗憾。


自己好点,因为一辈子不长;对身边的人好点,因为下辈子不一定能够遇见。


万事开头难,然后中间难,最后结尾难。


世上无难事,只要肯放弃。


等忙完这一阵,就可以忙下一阵了。


有时候你不努力一下,你都不知道什么叫绝望。


当你觉得自己又丑又穷的时候,不要悲伤,至少你的判断还是对的。