Category Archives: Grails

java处理图片

/**
 * Created by IntelliJ IDEA.
 * User: 274836
 * Date: 11-10-17
 * Time: 下午3:42
 * To change this template use File | Settings | File Templates.
 */

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;

public class ImageUtilsForByte {
    /**
     * 图片水印
     *
     * @param pressImg  水印图片
     * @param targetImg 目标图片
     * @param [...]

利用Groovy的正则表达式处理字符串

常用的正则表达式

匹配意义
表达式
等价符号

数字
\d
[0-9]

非数字
\D
[^0-9]

word字符
\w
[a-zA-Z0-9]

非word字符
\W
[^a-zA-Z0-9]

空白字符
\s
[\t\n\f\r\v]

非空白字符
\S
[^\s]

汉字
[\u4E00-\u9FA5]

非汉字
[^\u4E00-\u9FA5]

 
     学习java已经两年一直都没搞懂java的正则表达式,每次学一点就会发困,感觉非常费劲。但在学习Groovy的过程中,还是很轻松的搞懂了正则表达式的一些皮毛。(惊叹Groovy真是Groovy)
    Groovy同样提供了3种方便的运算符
• 匹配操作符 (==~)
• 查找操作符 (=~)
• 模式操作符 (~string)
 
匹配操作符 (==~)
主要用于检查字符串是否匹配 返回true或false
 

Java代码  

assert “abc” ==~ /abc/  
assert “abc” ==~ “.*c\$”  

 查找操作符 (=~)
经常在复制网页上的网页时,发现复制的代码左边有数字序号,如果代码长的话自己动手去掉前面的序号也很费劲.利用下面的代码可以将所有的数字都去掉

Java代码  

def code = “”“01 import groovy.text.SimpleTemplateEngine  
02  
03 /** 
04 * Simple User Groovy Bean. 
05 */  
06 class User {  
07 String firstName;  
08 String lastName;  
09 }  
10  
11 def emailTemplate = this.class.getResource(“nightlyReportsEmail.gtpl”)  
12 def binding = [  
13 "user": new User(firstName: "Christopher", lastName: "Judd"),  
14 "date": new Date()  
15 ]  
16 def engine = new SimpleTemplateEngine()  
17 def email = engine.createTemplate(emailTemplate).make(binding)  
18 def body = email.toString()  
19  
20 println body“”“  
def matcher = code =~ /\d/  
  
def newCode = matcher.replaceAll(”)  
println newCode  

 
    以前做项目的时候,由于项目中需要将ocr识别的文字存入数据库,发现由于一些特殊字符导致插入数据库出现异常,以前一直想使用正则表达式进行过滤,就是不得其门而入

Java代码  

def sso = /‘’Groovy正则表达式0-9;[]‘;“;’;过滤标点符号/  
def matcher = sso =~ /['’‘;“”!!;\]\[]/  //可以加入任何需要过滤的特殊字符(注意有的需要转义)  
def newS = matcher.replaceAll(”)  
println newS  
  
//result:Groovy正则表达式0-9过滤标点符号  
  
如果只想留下汉字的话,可以将上面的matcher改为/[^\u4E00-\u9FA5]/  

模式操作符(~string)
运用该运算符将string定义为pattern(java.util.regex.Pattern),并运用这个pattern可以做到检索一个字符串中出现符合该pattern的string。(语言组织不好,还是看例子清楚点)

Java代码  

def saying = “”“Now is the time for all good men (and women) to come to the aid  
of their country“”“  
def pattern = ~/(\w+en)/  
def matcher = pattern.matcher(saying)  
def count = matcher.getCount()  
println “Matches = ${count}”  
for(i in 0..<count) {  
    println matcher[i]  
}  
  
result:  
Matches = 2  
["men", "men"]  
["women", "women"]  

6. Web层

返回>>Grails中文参考手册
6. Web层
6.1 控制器
控制器是属于请求范围的,用于处理请求,创建或者准备响应。换句话说,每次request会创建一个新的控制器实体。控制器能产生响应或者委托给一个视图。创建一个控制器,简单创建一个类名以 Controller 结尾的类,并放于grails-app/controllers目录中。
默认的URL映射设置能确保你的控制器名字的第一部分被映射到一个URI上,并且控制器中的每个操作定义被映射到控制器命名URI中的URI。
 
6.1.1 理解控制器和操作
创建一个控制器
控制器可以使用create-controller目标创建.作为示例,可以在Grails根目录下尝试运行下列命令。

grails create-controller book

这条命令将导致在grails-app/controllers/BookController.groovy位置上创建一个控制器。
 

class BookController { … }

BookController默认映射到/book URI上(相对于您的应用程序根目录)
 
create-controller命令只不过是个方便的工具,你还可以使用你喜欢的文本编辑器或者IDE更容易的创建控制器。
 
创建操作(Actions)
一个控制器可以拥有多个属性,每个属性都被分配一个代码块.每个这样的属性将被映射到URI上:

class BookController {
def list = {
// do controller logic
// create model
return model
}
}

默认情况下这个例子映射到/book/list URI上,因为属性被命名为list。
 
默认的操作
一个控制器具有默认URI的概念即映射到控制器的根URI。默认情况下缺省URI在这里的是/book。默认的URI通过以下规则来支配:

如果只有一个操作存在,一个控制器的默认URI将映射到该操作。
假如你定义了一个index操作,当没有操作被指定在URI/book上时,这个操作将处理请求。
除此之外,你可以明确的设置为defaultAction属性:

 

def [...]

6. Web层

返回>>Grails中文参考手册
6. Web层
6.1 控制器
控制器是属于请求范围的,用于处理请求,创建或者准备响应。换句话说,每次request会创建一个新的控制器实体。控制器能产生响应或者委托给一个视图。创建一个控制器,简单创建一个类名以 Controller 结尾的类,并放于grails-app/controllers目录中。
默认的URL映射设置能确保你的控制器名字的第一部分被映射到一个URI上,并且控制器中的每个操作定义被映射到控制器命名URI中的URI。
 
6.1.1 理解控制器和操作
创建一个控制器
控制器可以使用create-controller目标创建.作为示例,可以在Grails根目录下尝试运行下列命令。

grails create-controller book

这条命令将导致在grails-app/controllers/BookController.groovy位置上创建一个控制器。
 

class BookController { … }

BookController默认映射到/book URI上(相对于您的应用程序根目录)
 
create-controller命令只不过是个方便的工具,你还可以使用你喜欢的文本编辑器或者IDE更容易的创建控制器。
 
创建操作(Actions)
一个控制器可以拥有多个属性,每个属性都被分配一个代码块.每个这样的属性将被映射到URI上:

class BookController {
def list = {
// do controller logic
// create model
return model
}
}

默认情况下这个例子映射到/book/list URI上,因为属性被命名为list。
 
默认的操作
一个控制器具有默认URI的概念即映射到控制器的根URI。默认情况下缺省URI在这里的是/book。默认的URI通过以下规则来支配:

如果只有一个操作存在,一个控制器的默认URI将映射到该操作。
假如你定义了一个index操作,当没有操作被指定在URI/book上时,这个操作将处理请求。
除此之外,你可以明确的设置为defaultAction属性:

 

def [...]