Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
JeeSpringCloud
Commits
05beecd0
Commit
05beecd0
authored
Nov 12, 2018
by
Huang
Browse files
no commit message
parent
bc5dd330
Changes
368
Hide whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
20 of 368+
files are displayed.
Plain diff
Email patch
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/servlet/ValidateCodeServlet.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.servlet
;
import
java.awt.Color
;
import
java.awt.Font
;
import
java.awt.Graphics
;
import
java.awt.image.BufferedImage
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.util.Random
;
import
javax.imageio.ImageIO
;
import
javax.servlet.ServletException
;
import
javax.servlet.annotation.WebServlet
;
import
javax.servlet.http.HttpServlet
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.commons.lang3.math.NumberUtils
;
import
org.apache.commons.lang3.StringUtils
;
/**
* 生成随机验证码
* @author 黄炳桂 516821420@qq.com
* @version 2014-7-27
*/
@SuppressWarnings
(
"serial"
)
@WebServlet
(
urlPatterns
=
"/servlet/validateCodeServlet"
)
public
class
ValidateCodeServlet
extends
HttpServlet
{
public
static
final
String
VALIDATE_CODE
=
"validateCode"
;
//private int w = 70;
//private int h = 26;
private
int
w
=
80
;
private
int
h
=
40
;
public
ValidateCodeServlet
()
{
super
();
}
@Override
public
void
destroy
()
{
super
.
destroy
();
}
public
static
boolean
validate
(
HttpServletRequest
request
,
String
validateCode
){
String
code
=
(
String
)
request
.
getSession
().
getAttribute
(
VALIDATE_CODE
);
return
validateCode
.
toUpperCase
().
equals
(
code
);
}
@Override
public
void
doGet
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
ServletException
,
IOException
{
String
validateCode
=
request
.
getParameter
(
VALIDATE_CODE
);
// AJAX验证,成功返回true
if
(
StringUtils
.
isNotBlank
(
validateCode
)){
response
.
getOutputStream
().
print
(
validate
(
request
,
validateCode
)?
"true"
:
"false"
);
}
else
{
this
.
doPost
(
request
,
response
);
}
}
@Override
public
void
doPost
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
ServletException
,
IOException
{
createImage
(
request
,
response
);
}
private
void
createImage
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
{
response
.
setHeader
(
"Pragma"
,
"no-cache"
);
response
.
setHeader
(
"Cache-Control"
,
"no-cache"
);
response
.
setDateHeader
(
"Expires"
,
0
);
response
.
setContentType
(
"image/jpeg"
);
/*
* 得到参数高,宽,都为数字时,则使用设置高宽,否则使用默认值
*/
String
width
=
request
.
getParameter
(
"width"
);
String
height
=
request
.
getParameter
(
"height"
);
if
(
StringUtils
.
isNumeric
(
width
)
&&
StringUtils
.
isNumeric
(
height
))
{
w
=
NumberUtils
.
toInt
(
width
);
h
=
NumberUtils
.
toInt
(
height
);
}
BufferedImage
image
=
new
BufferedImage
(
w
,
h
,
BufferedImage
.
TYPE_INT_RGB
);
Graphics
g
=
image
.
getGraphics
();
/*
* 生成背景
*/
createBackground
(
g
);
/*
* 生成字符
*/
String
s
=
createCharacter
(
g
);
createLine
(
g
);
request
.
getSession
().
setAttribute
(
VALIDATE_CODE
,
s
);
g
.
dispose
();
OutputStream
out
=
response
.
getOutputStream
();
ImageIO
.
write
(
image
,
"JPEG"
,
out
);
out
.
close
();
}
private
Color
getRandColor
(
int
fc
,
int
bc
)
{
int
f
=
fc
;
int
b
=
bc
;
Random
random
=
new
Random
();
if
(
f
>
255
)
{
f
=
255
;
}
if
(
b
>
255
)
{
b
=
255
;
}
return
new
Color
(
f
+
random
.
nextInt
(
b
-
f
),
f
+
random
.
nextInt
(
b
-
f
),
f
+
random
.
nextInt
(
b
-
f
));
}
private
void
createBackground
(
Graphics
g
)
{
// 填充背景
//g.setColor(getRandColor(220,250));
g
.
setColor
(
new
Color
(
255
,
255
,
255
));
g
.
fillRect
(
0
,
0
,
w
,
h
);
// 加入干扰线条
//干扰线条先注释
for
(
int
i
=
0
;
i
<
20
;
i
++)
{
/*g.setColor(getRandColor(40,150));
Random random = new Random();
int x = random.nextInt(w);
int y = random.nextInt(h);
int x1 = random.nextInt(w);
int y1 = random.nextInt(h);
g.drawLine(x, y, x1, y1);*/
}
}
private
void
createLine
(
Graphics
g
)
{
// 加入干扰线条
//干扰线条先注释
Random
randomTimes
=
new
Random
();
int
times
=
randomTimes
.
nextInt
(
25
);
for
(
int
i
=
0
;
i
<
times
;
i
++)
{
//g.setColor(getRandColor(40,150));
g
.
setColor
(
new
Color
(
255
,
255
,
255
));
Random
random
=
new
Random
();
int
x
=
random
.
nextInt
(
w
);
int
y
=
random
.
nextInt
(
h
);
int
x1
=
random
.
nextInt
(
w
);
int
y1
=
random
.
nextInt
(
h
);
g
.
drawLine
(
x
,
y
,
x1
,
y1
);
}
}
private
String
createCharacter
(
Graphics
g
)
{
/*char[] codeSeq = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J',
'K', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z', '2', '3', '4', '5', '6', '7', '8', '9' };*/
char
[]
codeSeq
=
{
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
};
//String[] fontTypes = {"Arial","Arial Black","AvantGarde Bk BT","Calibri"};
String
[]
fontTypes
=
{
"Ravie"
,
"Antique Olive Compact"
,
"Fixedsys"
,
"Wide Latin"
,
"Gill Sans Ultra Bold"
};
Random
random
=
new
Random
();
StringBuilder
s
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
4
;
i
++)
{
String
r
=
String
.
valueOf
(
codeSeq
[
random
.
nextInt
(
codeSeq
.
length
)]);
//random.nextInt(10));
//g.setColor(new Color(50 + random.nextInt(100), 50 + random.nextInt(100), 50 + random.nextInt(100)));
g
.
setColor
(
new
Color
(
70
,
70
,
70
));
//g.setFont(new Font(fontTypes[random.nextInt(fontTypes.length)],Font.BOLD,26));
g
.
setFont
(
new
Font
(
"Arial"
,
Font
.
ITALIC
,
18
));
//g.drawString(r, 15 * i + 5, 19 + random.nextInt(8));
g
.
drawString
(
r
,
20
*
i
+
4
,
26
);
s
.
append
(
r
);
}
return
s
.
toString
();
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/sms/SMSUtils.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.sms
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.net.URLEncoder
;
import
com.jeespring.common.security.Digests
;
/*
功能: 企信通PHP HTTP接口 发送短信
修改日期: 2014-03-19
说明: http://api.cnsms.cn/?ac=send&uid=用户账号&pwd=MD5位32密码&mobile=号码&content=内容
状态:
100 发送成功
101 验证失败
102 短信不足
103 操作失败
104 非法字符
105 内容过多
106 号码过多
107 频率过快
108 号码内容空
109 账号冻结
110 禁止频繁单条发送
111 系统暂定发送
112 号码不正确
120 系统升级
*/
public
class
SMSUtils
{
//发送短信,uid,pwd,参数值请向企信通申请, tel:发送的手机号, content:发送的内容
public
static
String
send
(
String
uid
,
String
pwd
,
String
tel
,
String
content
)
throws
IOException
{
try
{
// 创建StringBuffer对象用来操作字符串
StringBuffer
sb
=
new
StringBuffer
(
"http://api.cnsms.cn/?"
);
// 向StringBuffer追加用户名
sb
.
append
(
"ac=send&uid="
+
uid
);
//在此申请企信通uid,并进行配置用户名
// 向StringBuffer追加密码(密码采用MD5 32位 小写)
sb
.
append
(
"&encode=utf8"
);
// 向StringBuffer追加密码(密码采用MD5 32位 小写)
sb
.
append
(
"&pwd="
+
Digests
.
string2MD5
(
pwd
));
//在此申请企信通uid,并进行配置密码
// 向StringBuffer追加手机号码
sb
.
append
(
"&mobile="
+
tel
);
// 向StringBuffer追加消息内容转URL标准码
sb
.
append
(
"&content="
+
URLEncoder
.
encode
(
content
,
"utf8"
));
// 创建url对象
URL
url
=
new
URL
(
sb
.
toString
());
// 打开url连接
HttpURLConnection
connection
=
(
HttpURLConnection
)
url
.
openConnection
();
// 设置url请求方式 ‘get’ 或者 ‘post’
connection
.
setRequestMethod
(
"POST"
);
// 发送
BufferedReader
in
=
new
BufferedReader
(
new
InputStreamReader
(
url
.
openStream
()));
// 返回发送结果
String
inputline
=
in
.
readLine
();
return
inputline
;
}
catch
(
Exception
e
){
return
""
;
}
}
public
static
String
sendPass
(
String
tel
,
String
password
)
throws
IOException
{
//发送内容
String
content
=
"您的新密码是:"
+
password
+
",请登录系统,重新设置密码。"
;
// 创建StringBuffer对象用来操作字符串
StringBuffer
sb
=
new
StringBuffer
(
"http://api.cnsms.cn/?"
);
// 向StringBuffer追加用户名
sb
.
append
(
"ac=send&uid="
);
//设置用户名
// 向StringBuffer追加密码(密码采用MD5 32位 小写)
sb
.
append
(
"&encode=utf8"
);
// 向StringBuffer追加密码(密码采用MD5 32位 小写)
sb
.
append
(
"&pwd="
);
//设置密码
// 向StringBuffer追加手机号码
sb
.
append
(
"&mobile="
+
tel
);
// 向StringBuffer追加消息内容转URL标准码
sb
.
append
(
"&content="
+
URLEncoder
.
encode
(
content
,
"utf8"
));
// 创建url对象
URL
url
=
new
URL
(
sb
.
toString
());
// 打开url连接
HttpURLConnection
connection
=
(
HttpURLConnection
)
url
.
openConnection
();
// 设置url请求方式 ‘get’ 或者 ‘post’
connection
.
setRequestMethod
(
"POST"
);
// 发送
BufferedReader
in
=
new
BufferedReader
(
new
InputStreamReader
(
url
.
openStream
()));
// 返回发送结果
String
inputline
=
in
.
readLine
();
return
inputline
;
}
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/spring/SpringUtils.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.spring
;
import
org.springframework.beans.BeansException
;
import
org.springframework.beans.factory.NoSuchBeanDefinitionException
;
import
org.springframework.beans.factory.config.BeanFactoryPostProcessor
;
import
org.springframework.beans.factory.config.ConfigurableListableBeanFactory
;
import
org.springframework.stereotype.Component
;
/**
* spring工具类 方便在非spring管理环境中获取bean
*
* @author JeeSpring
*/
@Component
public
final
class
SpringUtils
implements
BeanFactoryPostProcessor
{
/** Spring应用上下文环境 */
private
static
ConfigurableListableBeanFactory
beanFactory
;
@Override
public
void
postProcessBeanFactory
(
ConfigurableListableBeanFactory
beanFactory
)
throws
BeansException
{
SpringUtils
.
beanFactory
=
beanFactory
;
}
/**
* 获取对象
*
* @param name
* @return Object 一个以所给名字注册的bean的实例
* @throws org.springframework.beans.BeansException
*
*/
@SuppressWarnings
(
"unchecked"
)
public
static
<
T
>
T
getBean
(
String
name
)
throws
BeansException
{
return
(
T
)
beanFactory
.
getBean
(
name
);
}
/**
* 获取类型为requiredType的对象
*
* @param clz
* @return
* @throws org.springframework.beans.BeansException
*
*/
public
static
<
T
>
T
getBean
(
Class
<
T
>
clz
)
throws
BeansException
{
T
result
=
(
T
)
beanFactory
.
getBean
(
clz
);
return
result
;
}
/**
* 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
*
* @param name
* @return boolean
*/
public
static
boolean
containsBean
(
String
name
)
{
return
beanFactory
.
containsBean
(
name
);
}
/**
* 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
*
* @param name
* @return boolean
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
*
*/
public
static
boolean
isSingleton
(
String
name
)
throws
NoSuchBeanDefinitionException
{
return
beanFactory
.
isSingleton
(
name
);
}
/**
* @param name
* @return Class 注册对象的类型
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
*
*/
public
static
Class
<?>
getType
(
String
name
)
throws
NoSuchBeanDefinitionException
{
return
beanFactory
.
getType
(
name
);
}
/**
* 如果给定的bean名字在bean定义中有别名,则返回这些别名
*
* @param name
* @return
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
*
*/
public
static
String
[]
getAliases
(
String
name
)
throws
NoSuchBeanDefinitionException
{
return
beanFactory
.
getAliases
(
name
);
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/swagger/Swagger.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.swagger
;
import
com.google.common.base.Predicates
;
import
com.jeespring.common.web.AbstractBaseController
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
springfox.documentation.builders.ApiInfoBuilder
;
import
springfox.documentation.builders.PathSelectors
;
import
springfox.documentation.builders.RequestHandlerSelectors
;
import
springfox.documentation.service.ApiInfo
;
import
springfox.documentation.spi.DocumentationType
;
import
springfox.documentation.spring.web.plugins.Docket
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
@Configuration
@EnableSwagger2
public
class
Swagger
{
@Bean
(
"JeeSpring云接口"
)
public
Docket
createJeeSpringRestApi
()
{
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
groupName
(
"JeeSpring云接口"
)
.
apiInfo
(
apiInfo
())
.
select
()
.
apis
(
RequestHandlerSelectors
.
withMethodAnnotation
(
ApiOperation
.
class
))
//这里采用包含注解的方式来确定要显示的接口
//.apis(RequestHandlerSelectors.basePackage("com.jeespring.modules")) //这里采用包扫描的方式来确定要显示的接口
//.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
//.paths(PathSelectors.regex("/rest/.*"))
//.paths(PathSelectors.any())
.
build
();
}
private
ApiInfo
apiInfo
()
{
return
new
ApiInfoBuilder
()
.
title
(
"Swagger2构建RESTful APIs"
)
.
description
(
"更多JeeSpring相关文章"
)
.
termsOfServiceUrl
(
"http://www.jeespring.com/"
)
.
contact
(
"contact"
)
.
version
(
"1.0"
)
.
build
();
}
/*注解
@ApiOperation(value="创建用户", notes="根据User对象创建用户")
@ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
@ApiOperation("生成代码")
@ApiImplicitParams({
@ApiImplicitParam(name = "moduleName", value = "模块名称", required = true, dataType = "String"),
@ApiImplicitParam(name = "bizChName", value = "业务名称", required = true, dataType = "String"),
@ApiImplicitParam(name = "bizEnName", value = "业务英文名称", required = true, dataType = "String"),
@ApiImplicitParam(name = "path", value = "项目生成类路径", required = true, dataType = "String")
})
*/
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/tag/AceMenuTag.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.tag
;
import
java.io.IOException
;
import
java.util.List
;
import
javax.servlet.ServletContext
;
import
javax.servlet.jsp.JspTagException
;
import
javax.servlet.jsp.JspWriter
;
import
javax.servlet.jsp.tagext.TagSupport
;
import
com.jeespring.common.config.Global
;
import
com.jeespring.common.utils.SpringContextHolder
;
import
com.jeespring.modules.sys.entity.Menu
;
import
com.jeespring.modules.sys.utils.UserUtils
;
/**
*
* 类描述:菜单标签
*
* 刘高峰
*
* @date: 日期:2015-1-23 时间:上午10:17:45
* @version 1.0
*/
public
class
AceMenuTag
extends
TagSupport
{
private
static
final
long
serialVersionUID
=
1L
;
protected
Menu
menu
;
// 菜单Map
public
Menu
getMenu
()
{
return
menu
;
}
public
void
setMenu
(
Menu
menu
)
{
this
.
menu
=
menu
;
}
@Override
public
int
doStartTag
()
throws
JspTagException
{
return
EVAL_PAGE
;
}
@Override
public
int
doEndTag
()
throws
JspTagException
{
try
{
JspWriter
out
=
this
.
pageContext
.
getOut
();
String
menu
=
(
String
)
this
.
pageContext
.
getSession
().
getAttribute
(
"menu"
);
if
(
menu
!=
null
)
{
out
.
print
(
menu
);
}
else
{
menu
=
end
().
toString
();
out
.
print
(
menu
);
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
EVAL_PAGE
;
}
public
StringBuffer
end
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
getChildOfTree
(
menu
,
0
,
UserUtils
.
getMenuList
()));
System
.
out
.
println
(
sb
);
return
sb
;
}
private
static
String
getChildOfTree
(
Menu
parent
,
int
level
,
List
<
Menu
>
menuList
)
{
StringBuffer
menuString
=
new
StringBuffer
();
String
href
=
""
;
if
(!
parent
.
hasPermisson
())
{
return
""
;
}
ServletContext
context
=
SpringContextHolder
.
getBean
(
ServletContext
.
class
);
if
(
parent
.
getHref
()
!=
null
&&
parent
.
getHref
().
length
()
>
0
)
{
if
(
parent
.
getHref
().
endsWith
(
".html"
)
&&
!
parent
.
getHref
().
endsWith
(
"ckfinder.html"
))
{
// 如果是静态资源并且不是ckfinder.html,直接访问不加adminPath
href
=
context
.
getContextPath
()
+
parent
.
getHref
();
}
else
{
href
=
context
.
getContextPath
()
+
Global
.
getAdminPath
()
+
parent
.
getHref
();
}
}
if
(
level
>
0
)
{
// level 为0是功能菜单
menuString
.
append
(
"<li>"
);
if
((
parent
.
getHref
()
==
null
||
""
.
equals
(
parent
.
getHref
().
trim
()))
&&
"1"
.
equals
(
parent
.
getIsShow
()))
{
menuString
.
append
(
"<a href=\""
+
href
+
"\" class=\"dropdown-toggle\">"
);
}
else
{
menuString
.
append
(
"<a class=\"J_menuItem\" href=\""
+
href
+
"\">"
);
}
menuString
.
append
(
"<i class=\"menu-icon fa "
+
parent
.
getIcon
()
+
"\"></i>"
);
menuString
.
append
(
"<span class=\"menu-text\">"
+
parent
.
getName
()+
"</span>"
);
if
((
parent
.
getHref
()
==
null
||
""
.
equals
(
parent
.
getHref
().
trim
()))
&&
"1"
.
equals
(
parent
.
getIsShow
()))
{
menuString
.
append
(
"<b class=\"arrow fa fa-angle-down\"></b>"
);
}
menuString
.
append
(
"</a>"
);
menuString
.
append
(
"<b class=\"arrow\"></b>"
);
}
if
((
parent
.
getHref
()
==
null
||
""
.
equals
(
parent
.
getHref
().
trim
()))
&&
"1"
.
equals
(
parent
.
getIsShow
()))
{
if
(
level
==
0
)
{
menuString
.
append
(
"<ul class=\"nav nav-list\">"
);
}
else
{
menuString
.
append
(
"<ul class=\"submenu\">"
);
}
for
(
Menu
child
:
menuList
)
{
if
(
child
.
getParentId
().
equals
(
parent
.
getId
())&&
"1"
.
equals
(
child
.
getIsShow
()))
{
menuString
.
append
(
getChildOfTree
(
child
,
level
+
1
,
menuList
));
}
}
menuString
.
append
(
"</ul>"
);
}
if
(
level
>
0
)
{
menuString
.
append
(
"</li>"
);
}
return
menuString
.
toString
();
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/tag/MenuTag.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.tag
;
import
java.io.IOException
;
import
javax.servlet.ServletContext
;
import
javax.servlet.jsp.JspTagException
;
import
javax.servlet.jsp.JspWriter
;
import
javax.servlet.jsp.tagext.TagSupport
;
import
com.jeespring.common.config.Global
;
import
com.jeespring.common.utils.SpringContextHolder
;
import
com.jeespring.modules.sys.entity.Menu
;
import
com.jeespring.modules.sys.utils.UserUtils
;
/**
*
* 类描述:菜单标签
*
*
* @date: 日期:2012-12-7 时间:上午10:17:45
* @version 1.0
*/
public
class
MenuTag
extends
TagSupport
{
private
static
final
long
serialVersionUID
=
1L
;
protected
Menu
menu
;
//菜单Map
public
Menu
getMenu
()
{
return
menu
;
}
public
void
setMenu
(
Menu
menu
)
{
this
.
menu
=
menu
;
}
@Override
public
int
doStartTag
()
throws
JspTagException
{
return
EVAL_PAGE
;
}
@Override
public
int
doEndTag
()
throws
JspTagException
{
try
{
JspWriter
out
=
this
.
pageContext
.
getOut
();
String
menu
=
(
String
)
this
.
pageContext
.
getSession
().
getAttribute
(
"menu"
);
if
(
menu
!=
null
){
out
.
print
(
menu
);
}
else
{
menu
=
end
().
toString
();
out
.
print
(
menu
);
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
EVAL_PAGE
;
}
public
StringBuffer
end
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
getChildOfTree
(
menu
,
0
));
//System.out.println(sb);
return
sb
;
}
private
static
String
getChildOfTree
(
Menu
parent
,
int
level
)
{
StringBuffer
menuString
=
new
StringBuffer
();
String
href
=
""
;
if
(!
parent
.
hasPermisson
())
{
return
""
;
}
if
(
level
>
0
)
{
//level 为0是功能菜单
if
(
parent
.
hasChildren
())
//menu-open
{
menuString
.
append
(
"<li class=\"treeview\">"
);
}
else
{
menuString
.
append
(
"<li>"
);
}
ServletContext
context
=
SpringContextHolder
.
getBean
(
ServletContext
.
class
);
if
(
parent
.
getHref
()
!=
null
&&
parent
.
getHref
().
length
()
>
0
)
{
if
(
parent
.
getHref
().
endsWith
(
".html"
)&&!
parent
.
getHref
().
endsWith
(
"ckfinder.html"
)){
//如果是静态资源并且不是ckfinder.html,直接访问不加adminPath
href
=
context
.
getContextPath
()
+
parent
.
getHref
();
}
else
if
(
parent
.
getHref
().
contains
(
"http://"
)
||
parent
.
getHref
().
contains
(
"https://"
)){
href
=
context
.
getContextPath
()
+
parent
.
getHref
();
}
else
{
href
=
context
.
getContextPath
()
+
Global
.
getAdminPath
()
+
parent
.
getHref
();
}
}
}
if
(
parent
.
hasChildren
())
{
if
(
level
>
0
)
{
menuString
.
append
(
"<a title=\""
+
parent
.
getName
()+
"\" href=\"javascript:\" data-href=\"blank\" class=\"nav-link\" href=\""
+
href
+
"\"><i class=\"fa "
+
parent
.
getIcon
()+
"\"></i> <span class=\"nav-label\">"
+
parent
.
getName
()
//+ "</span><span class=\"fa arrow\"></span></a>");
+
"</span><span class=\"pull-right-container\"><i class=\"fa fa-angle-left pull-right\"></i></span></a>"
);
}
if
(
level
==
1
)
{
menuString
.
append
(
"<ul class=\"nav nav-second-level treeview-menu\" >"
);
}
else
if
(
level
==
2
)
{
menuString
.
append
(
"<ul class=\"nav nav-third-level treeview-menu\" >"
);
}
else
if
(
level
==
3
)
{
menuString
.
append
(
"<ul class=\"nav nav-forth-level treeview-menu\" >"
);
}
else
if
(
level
==
4
)
{
menuString
.
append
(
"<ul class=\"nav nav-fifth-level treeview-menu\" >"
);
}
for
(
Menu
child
:
parent
.
getChildren
())
{
if
(
"1"
.
equals
(
child
.
getIsShow
()))
{
menuString
.
append
(
getChildOfTree
(
child
,
level
+
1
));
}
}
if
(
level
>
0
)
{
menuString
.
append
(
"</ul>"
);
}
}
else
{
//javascript:
menuString
.
append
(
"<a title=\""
+
parent
.
getName
()+
"\" class=\"nav-link\" target=\""
+
parent
.
getTarget
()+
"\" href=\""
+
href
+
"\" data-href=\""
+
href
+
"\"><i class=\"fa "
+
parent
.
getIcon
()+
"\"></i> <span class=\"nav-label\">"
+
parent
.
getName
()+
"</span></a>"
);
}
if
(
level
>
0
)
{
menuString
.
append
(
"</li>"
);
}
return
menuString
.
toString
();
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/tag/echarts/EChartsBarTag.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.tag.echarts
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Map
;
import
javax.servlet.jsp.JspException
;
import
javax.servlet.jsp.tagext.BodyTag
;
import
javax.servlet.jsp.tagext.BodyTagSupport
;
import
javax.servlet.jsp.tagext.Tag
;
import
com.github.abel533.echarts.axis.CategoryAxis
;
import
com.github.abel533.echarts.axis.ValueAxis
;
import
com.github.abel533.echarts.code.*
;
import
com.github.abel533.echarts.feature.MagicType
;
import
com.github.abel533.echarts.json.GsonOption
;
import
com.github.abel533.echarts.series.Line
;
public
class
EChartsBarTag
extends
BodyTagSupport
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
id
;
private
String
title
;
private
String
subtitle
;
private
String
xAxisName
;
private
String
yAxisName
;
private
List
<
String
>
xAxisData
;
private
Map
<
String
,
Integer
>
yAxisIndex
;
private
Map
<
String
,
List
<
Double
>>
yAxisData
;
@Override
public
int
doStartTag
()
throws
JspException
{
return
BodyTag
.
EVAL_BODY_BUFFERED
;
}
@Override
public
int
doEndTag
()
throws
JspException
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"<script type='text/javascript'>"
);
sb
.
append
(
"require([ 'echarts', 'echarts/chart/bar'], function(ec) {"
);
sb
.
append
(
"var myChart= ec.init(document.getElementById('"
+
id
+
"'));"
);
// 创建GsonOption对象,即为json字符串
GsonOption
option
=
new
GsonOption
();
option
.
tooltip
().
trigger
(
Trigger
.
axis
);
option
.
title
(
title
,
subtitle
);
// 工具栏
option
.
toolbox
().
show
(
true
).
feature
(
Tool
.
mark
,
Tool
.
dataView
,
Tool
.
saveAsImage
,
//new MagicType(Magic.line, Magic.bar,Magic.stack,Magic.tiled),
Tool
.
dataZoom
,
Tool
.
restore
);
option
.
calculable
(
true
);
option
.
dataZoom
().
show
(
true
).
realtime
(
true
).
start
(
0
).
end
(
100
);
// X轴数据封装并解析
ValueAxis
valueAxis
=
new
ValueAxis
();
for
(
String
s
:
xAxisData
)
{
valueAxis
.
type
(
AxisType
.
category
).
data
(
s
);
}
// X轴单位
valueAxis
.
name
(
xAxisName
);
option
.
xAxis
(
valueAxis
);
for
(
String
key
:
yAxisData
.
keySet
())
{
option
.
legend
().
data
(
key
);
}
// Y轴数据封装并解析
String
[]
unitNameArray
=
yAxisName
.
split
(
","
);
for
(
String
s
:
unitNameArray
)
{
CategoryAxis
categoryAxis
=
new
CategoryAxis
();
categoryAxis
.
type
(
AxisType
.
value
);
option
.
yAxis
(
categoryAxis
.
name
(
s
));
}
int
i
=
0
;
for
(
String
key
:
yAxisData
.
keySet
())
{
// 遍历list得到数据
List
<
Double
>
list
=
yAxisData
.
get
(
key
);
Line
line
=
new
Line
().
name
(
key
);
for
(
Double
d
:
list
)
{
// KW与MW单位的转换
// if(settingGlobal!=null&&settingGlobal.getIskw()==0){
// d = d/1000;
// }
// 数据为空的话会报错,为空则为零
if
(
d
!=
null
)
{
line
.
type
(
SeriesType
.
bar
).
data
(
d
);
}
else
{
line
.
type
(
SeriesType
.
bar
).
data
(
0
);
}
if
(
yAxisIndex
!=
null
&&
yAxisIndex
.
get
(
key
)
!=
null
)
{
line
.
type
(
SeriesType
.
bar
).
yAxisIndex
(
yAxisIndex
.
get
(
key
));
line
.
symbol
(
Symbol
.
none
);
}
else
{
line
.
type
(
SeriesType
.
bar
).
yAxisIndex
(
0
);
line
.
symbol
(
Symbol
.
none
);
}
}
option
.
series
(
line
);
i
++;
}
sb
.
append
(
"var option="
+
option
.
toString
()
+
";"
);
sb
.
append
(
"myChart.setOption(option);"
);
sb
.
append
(
"});"
);
sb
.
append
(
"</script>"
);
try
{
this
.
pageContext
.
getOut
().
write
(
sb
.
toString
());
}
catch
(
IOException
e
)
{
System
.
err
.
print
(
e
);
}
return
Tag
.
EVAL_PAGE
;
// 继续处理页面
}
@Override
public
String
getId
()
{
return
id
;
}
@Override
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getSubtitle
()
{
return
subtitle
;
}
public
void
setSubtitle
(
String
subtitle
)
{
this
.
subtitle
=
subtitle
;
}
public
String
getxAxisName
()
{
return
xAxisName
;
}
public
void
setxAxisName
(
String
xAxisName
)
{
this
.
xAxisName
=
xAxisName
;
}
public
String
getyAxisName
()
{
return
yAxisName
;
}
public
void
setyAxisName
(
String
yAxisName
)
{
this
.
yAxisName
=
yAxisName
;
}
public
List
<
String
>
getxAxisData
()
{
return
xAxisData
;
}
public
void
setxAxisData
(
List
<
String
>
xAxisData
)
{
this
.
xAxisData
=
xAxisData
;
}
public
Map
<
String
,
Integer
>
getyAxisIndex
()
{
return
yAxisIndex
;
}
public
void
setyAxisIndex
(
Map
<
String
,
Integer
>
yAxisIndex
)
{
this
.
yAxisIndex
=
yAxisIndex
;
}
public
Map
<
String
,
List
<
Double
>>
getyAxisData
()
{
return
yAxisData
;
}
public
void
setyAxisData
(
Map
<
String
,
List
<
Double
>>
yAxisData
)
{
this
.
yAxisData
=
yAxisData
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/tag/echarts/EChartsLineDoubleNumTag.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.tag.echarts
;
import
java.io.IOException
;
import
java.util.Map
;
import
javax.servlet.jsp.JspException
;
import
javax.servlet.jsp.tagext.BodyTag
;
import
javax.servlet.jsp.tagext.BodyTagSupport
;
import
javax.servlet.jsp.tagext.Tag
;
import
com.github.abel533.echarts.axis.CategoryAxis
;
import
com.github.abel533.echarts.axis.ValueAxis
;
import
com.github.abel533.echarts.code.*
;
import
com.github.abel533.echarts.feature.MagicType
;
import
com.github.abel533.echarts.json.GsonOption
;
import
com.github.abel533.echarts.series.Line
;
import
com.github.abel533.echarts.style.LineStyle
;
public
class
EChartsLineDoubleNumTag
extends
BodyTagSupport
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
id
;
private
String
title
;
private
String
subtitle
;
private
String
xAxisName
;
private
String
yAxisName
;
private
Map
<
String
,
Integer
>
yAxisIndex
;
private
Map
<
String
,
Double
[][]>
axisDataArr
;
@Override
public
int
doStartTag
()
throws
JspException
{
return
BodyTag
.
EVAL_BODY_BUFFERED
;
}
@SuppressWarnings
(
"unchecked"
)
@Override
public
int
doEndTag
()
throws
JspException
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"<script type='text/javascript'>"
);
sb
.
append
(
"require([ 'echarts', 'echarts/chart/line'], function(ec) {"
);
sb
.
append
(
"var myChart= ec.init(document.getElementById('"
+
id
+
"'));"
);
// 创建GsonOption对象,即为json字符串
GsonOption
option
=
new
GsonOption
();
/**
* tooltip : { trigger: 'axis' }
*/
option
.
tooltip
().
trigger
(
Trigger
.
axis
);
option
.
tooltip
().
axisPointer
().
show
(
true
).
type
(
PointerType
.
cross
)
.
lineStyle
(
new
LineStyle
().
type
(
LineType
.
dashed
).
width
(
1
));
/**
* title : { 'text':'2002全国宏观经济关联分析(GDP vs 房地产)', 'subtext':'数据来自国家统计局'
* }
*/
option
.
title
(
title
,
subtitle
);
/**
* toolbox: { show : true, feature : { mark : {show: true}, dataZoom :
* {show: true}, dataView : {show: true}, magicType : {show: true, type:
* ['line', 'bar', 'stack', 'tiled']}, restore : {show: true},
* saveAsImage : {show: true} } }
*/
// 工具栏
option
.
toolbox
().
show
(
true
).
feature
(
Tool
.
mark
,
Tool
.
dataZoom
,
Tool
.
dataView
,
//new MagicType(Magic.line, Magic.bar,Magic.stack,Magic.tiled),
Tool
.
restore
,
Tool
.
saveAsImage
);
option
.
calculable
(
true
);
option
.
dataZoom
().
show
(
true
).
realtime
(
true
).
start
(
0
).
end
(
100
);
/**
* xAxis : [ { type: 'value' } ]
*/
// X轴数据设置类型
ValueAxis
valueAxis
=
new
ValueAxis
();
valueAxis
.
type
(
AxisType
.
value
);
valueAxis
.
name
(
xAxisName
);
option
.
xAxis
(
valueAxis
);
// Y轴数据设置类型
CategoryAxis
categoryAxis
=
new
CategoryAxis
();
categoryAxis
.
type
(
AxisType
.
value
);
categoryAxis
.
name
(
yAxisName
);
option
.
yAxis
(
categoryAxis
);
for
(
String
xtitle
:
axisDataArr
.
keySet
())
{
option
.
legend
().
data
(
xtitle
);
}
for
(
String
mapkey
:
axisDataArr
.
keySet
())
{
Line
line
=
new
Line
();
// 显示直线,而不是密密麻麻的点,一点都不好看
line
.
name
(
mapkey
).
type
(
SeriesType
.
line
).
symbol
(
Symbol
.
none
);
Object
[][]
dataArr
=
(
Double
[][])
axisDataArr
.
get
(
mapkey
);
for
(
int
num
=
0
;
num
<
dataArr
.
length
;
num
++)
{
line
.
data
().
add
(
dataArr
[
num
]);
}
if
(
yAxisIndex
!=
null
&&
yAxisIndex
.
get
(
mapkey
)
!=
null
)
{
line
.
yAxisIndex
(
yAxisIndex
.
get
(
mapkey
));
}
else
{
line
.
yAxisIndex
(
0
);
}
option
.
series
(
line
);
}
sb
.
append
(
"var option="
+
option
.
toString
()+
";"
);
sb
.
append
(
"myChart.setOption(option);"
);
sb
.
append
(
"});"
);
sb
.
append
(
"</script>"
);
try
{
this
.
pageContext
.
getOut
().
write
(
sb
.
toString
());
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
Tag
.
EVAL_PAGE
;
// 继续处理页面
}
@Override
public
String
getId
()
{
return
id
;
}
@Override
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getSubtitle
()
{
return
subtitle
;
}
public
void
setSubtitle
(
String
subtitle
)
{
this
.
subtitle
=
subtitle
;
}
public
String
getxAxisName
()
{
return
xAxisName
;
}
public
void
setxAxisName
(
String
xAxisName
)
{
this
.
xAxisName
=
xAxisName
;
}
public
String
getyAxisName
()
{
return
yAxisName
;
}
public
void
setyAxisName
(
String
yAxisName
)
{
this
.
yAxisName
=
yAxisName
;
}
public
Map
<
String
,
Integer
>
getyAxisIndex
()
{
return
yAxisIndex
;
}
public
void
setyAxisIndex
(
Map
<
String
,
Integer
>
yAxisIndex
)
{
this
.
yAxisIndex
=
yAxisIndex
;
}
public
Map
<
String
,
Double
[][]>
getAxisDataArr
()
{
return
axisDataArr
;
}
public
void
setAxisDataArr
(
Map
<
String
,
Double
[][]>
axisDataArr
)
{
this
.
axisDataArr
=
axisDataArr
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/tag/echarts/EChartsLineTag.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.tag.echarts
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Map
;
import
javax.servlet.jsp.JspException
;
import
javax.servlet.jsp.tagext.BodyTag
;
import
javax.servlet.jsp.tagext.BodyTagSupport
;
import
javax.servlet.jsp.tagext.Tag
;
import
com.github.abel533.echarts.axis.CategoryAxis
;
import
com.github.abel533.echarts.axis.ValueAxis
;
import
com.github.abel533.echarts.code.*
;
import
com.github.abel533.echarts.feature.MagicType
;
import
com.github.abel533.echarts.json.GsonOption
;
import
com.github.abel533.echarts.series.Line
;
public
class
EChartsLineTag
extends
BodyTagSupport
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
id
;
private
String
title
;
private
String
subtitle
;
private
String
xAxisName
;
private
String
yAxisName
;
private
List
<
String
>
xAxisData
;
private
Map
<
String
,
Integer
>
yAxisIndex
;
private
Map
<
String
,
List
<
Double
>>
yAxisData
;
@Override
public
int
doStartTag
()
throws
JspException
{
return
BodyTag
.
EVAL_BODY_BUFFERED
;
}
@Override
public
int
doEndTag
()
throws
JspException
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"<script type='text/javascript'>"
);
sb
.
append
(
"require([ 'echarts', 'echarts/chart/line','echarts/chart/bar'], function(ec) {"
);
sb
.
append
(
"var myChart= ec.init(document.getElementById('"
+
id
+
"'));"
);
// 创建GsonOption对象,即为json字符串
GsonOption
option
=
new
GsonOption
();
option
.
tooltip
().
trigger
(
Trigger
.
axis
);
option
.
title
(
title
,
subtitle
);
// 工具栏
option
.
toolbox
().
show
(
true
).
feature
(
Tool
.
mark
,
Tool
.
dataView
,
Tool
.
saveAsImage
,
Tool
.
magicType
,
new
MagicType
(
Magic
.
line
,
Magic
.
bar
,
Magic
.
stack
,
Magic
.
tiled
),
Tool
.
dataZoom
,
Tool
.
restore
);
option
.
calculable
(
true
);
option
.
dataZoom
().
show
(
true
).
realtime
(
true
).
start
(
0
).
end
(
100
);
// X轴数据封装并解析
ValueAxis
valueAxis
=
new
ValueAxis
();
for
(
String
s
:
xAxisData
)
{
valueAxis
.
type
(
AxisType
.
category
).
data
(
s
);
}
// X轴单位
valueAxis
.
name
(
xAxisName
);
option
.
xAxis
(
valueAxis
);
for
(
String
key
:
yAxisData
.
keySet
())
{
option
.
legend
().
data
(
key
);
}
// Y轴数据封装并解析
String
[]
unitNameArray
=
yAxisName
.
split
(
","
);
for
(
String
s
:
unitNameArray
)
{
CategoryAxis
categoryAxis
=
new
CategoryAxis
();
categoryAxis
.
type
(
AxisType
.
value
);
option
.
yAxis
(
categoryAxis
.
name
(
s
));
}
int
i
=
0
;
for
(
String
key
:
yAxisData
.
keySet
())
{
// 遍历list得到数据
List
<
Double
>
list
=
yAxisData
.
get
(
key
);
Line
line
=
new
Line
().
name
(
key
);
for
(
Double
d
:
list
)
{
// KW与MW单位的转换
// if(settingGlobal!=null&&settingGlobal.getIskw()==0){
// d = d/1000;
// }
// 数据为空的话会报错,为空则为零
if
(
d
!=
null
)
{
line
.
type
(
SeriesType
.
line
).
data
(
d
);
}
else
{
line
.
type
(
SeriesType
.
line
).
data
(
0
);
}
if
(
yAxisIndex
!=
null
&&
yAxisIndex
.
get
(
key
)
!=
null
)
{
line
.
type
(
SeriesType
.
line
).
yAxisIndex
(
yAxisIndex
.
get
(
key
));
line
.
symbol
(
Symbol
.
none
);
}
else
{
line
.
type
(
SeriesType
.
line
).
yAxisIndex
(
0
);
//显示直线,而不是密密麻麻的点,一点都不好看
line
.
symbol
(
Symbol
.
none
);
}
}
option
.
series
(
line
);
i
++;
}
sb
.
append
(
"var option="
+
option
.
toString
()+
";"
);
sb
.
append
(
"myChart.setOption(option);"
);
sb
.
append
(
"});"
);
sb
.
append
(
"</script>"
);
try
{
this
.
pageContext
.
getOut
().
write
(
sb
.
toString
());
}
catch
(
IOException
e
)
{
System
.
err
.
print
(
e
);
}
return
Tag
.
EVAL_PAGE
;
// 继续处理页面
}
@Override
public
String
getId
()
{
return
id
;
}
@Override
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getSubtitle
()
{
return
subtitle
;
}
public
void
setSubtitle
(
String
subtitle
)
{
this
.
subtitle
=
subtitle
;
}
public
String
getxAxisName
()
{
return
xAxisName
;
}
public
void
setxAxisName
(
String
xAxisName
)
{
this
.
xAxisName
=
xAxisName
;
}
public
String
getyAxisName
()
{
return
yAxisName
;
}
public
void
setyAxisName
(
String
yAxisName
)
{
this
.
yAxisName
=
yAxisName
;
}
public
List
<
String
>
getxAxisData
()
{
return
xAxisData
;
}
public
void
setxAxisData
(
List
<
String
>
xAxisData
)
{
this
.
xAxisData
=
xAxisData
;
}
public
Map
<
String
,
Integer
>
getyAxisIndex
()
{
return
yAxisIndex
;
}
public
void
setyAxisIndex
(
Map
<
String
,
Integer
>
yAxisIndex
)
{
this
.
yAxisIndex
=
yAxisIndex
;
}
public
Map
<
String
,
List
<
Double
>>
getyAxisData
()
{
return
yAxisData
;
}
public
void
setyAxisData
(
Map
<
String
,
List
<
Double
>>
yAxisData
)
{
this
.
yAxisData
=
yAxisData
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/tag/echarts/EChartsLineTimeLineTag.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.tag.echarts
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Map
;
import
javax.servlet.jsp.JspException
;
import
javax.servlet.jsp.tagext.BodyTag
;
import
javax.servlet.jsp.tagext.BodyTagSupport
;
import
javax.servlet.jsp.tagext.Tag
;
import
com.github.abel533.echarts.axis.CategoryAxis
;
import
com.github.abel533.echarts.axis.ValueAxis
;
import
com.github.abel533.echarts.code.*
;
import
com.github.abel533.echarts.feature.MagicType
;
import
com.github.abel533.echarts.json.GsonOption
;
import
com.github.abel533.echarts.series.Line
;
public
class
EChartsLineTimeLineTag
extends
BodyTagSupport
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
id
;
private
String
title
;
private
String
subtitle
;
private
String
xAxisName
;
private
String
yAxisName
;
private
List
<
String
>
xAxisData
;
private
Map
<
String
,
Integer
>
yAxisIndex
;
private
Map
<
String
,
List
<
Double
>>
yAxisData
;
private
List
<
String
>
timelineData
;
private
List
<
Map
<
String
,
List
<
Double
>>>
timelineAxisData
;
@Override
public
int
doStartTag
()
throws
JspException
{
return
BodyTag
.
EVAL_BODY_BUFFERED
;
}
@Override
public
int
doEndTag
()
throws
JspException
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"<script type='text/javascript'>"
);
sb
.
append
(
"require([ 'echarts', 'echarts/chart/line'], function(ec) {"
);
sb
.
append
(
"var myChart= ec.init(document.getElementById('"
+
id
+
"'));"
);
GsonOption
option
=
new
GsonOption
();
GsonOption
options
=
new
GsonOption
();
/**
* timeline:{ data:[
* '2002-01-01','2003-01-01','2004-01-01','2005-01-01','2006-01-01',
* '2007-01-01','2008-01-01','2009-01-01','2010-01-01','2011-01-01' ],
* label : { formatter : function(s) { return s.slice(0, 4); } },
* autoPlay : true, playInterval : 1000 },
*/
option
.
timeline
().
autoPlay
(
true
).
playInterval
(
1000
).
label
()
.
formatter
(
"function(s){return s.slice(0, 4);}"
);
for
(
String
key
:
timelineData
)
{
option
.
timeline
().
data
(
key
);
}
/**
* title : { 'text':'2002全国宏观经济指标', 'subtext':'数据来自国家统计局' },
*/
options
.
title
(
title
,
subtitle
);
/**
* tooltip : {'trigger':'axis'},
*/
options
.
tooltip
().
trigger
(
Trigger
.
axis
);
/**
* legend : { x:'right', 'data':['GDP','金融','房地产','第一产业','第二产业','第三产业'],
* 'selected':{ 'GDP':true, '金融':false, '房地产':true, '第一产业':false,
* '第二产业':false, '第三产业':false } },
*/
options
.
legend
().
x
(
X
.
right
);
for
(
String
key
:
yAxisData
.
keySet
())
{
options
.
legend
().
data
(
key
);
}
/**
* toolbox : { 'show':true, orient : 'vertical', x: 'right', y:
* 'center', 'feature':{ 'mark':{'show':true},
* 'dataView':{'show':true,'readOnly':false},
* 'magicType':{'show':true,'type':['line','bar','stack','tiled']},
* 'restore':{'show':true}, 'saveAsImage':{'show':true} } }, calculable
* : true,
*/
// 工具栏
options
.
toolbox
().
orient
(
Orient
.
vertical
).
x
(
X
.
right
).
y
(
Y
.
center
)
.
show
(
true
).
feature
(
Tool
.
mark
,
Tool
.
dataView
,
Tool
.
saveAsImage
,
//new MagicType(Magic.line, Magic.bar,Magic.stack,Magic.tiled),
Tool
.
dataZoom
,
Tool
.
restore
);
options
.
calculable
(
true
);
options
.
dataZoom
().
show
(
true
).
realtime
(
true
).
start
(
0
).
end
(
100
);
/**
* xAxis : [{ 'type':'category', 'axisLabel':{'interval':0}, 'data':[
* '北京','\n天津','河北','\n山西','内蒙古','\n辽宁','吉林','\n黑龙江',
* '上海','\n江苏','浙江','\n安徽','福建','\n江西','山东','\n河南',
* '湖北','\n湖南','广东','\n广西','海南','\n重庆','四川','\n贵州',
* '云南','\n西藏','陕西','\n甘肃','青海','\n宁夏','新疆' ] }],
*/
// X轴数据封装并解析
ValueAxis
valueAxis
=
new
ValueAxis
();
for
(
String
s
:
xAxisData
)
{
valueAxis
.
type
(
AxisType
.
category
).
data
(
s
);
}
// X轴单位
valueAxis
.
name
(
xAxisName
);
options
.
xAxis
(
valueAxis
);
/**
* yAxis : [ { 'type':'value', 'name':'GDP(亿元)', 'max':53500 }, {
* 'type':'value', 'name':'其他(亿元)' } ],
*/
// Y轴数据封装并解析
String
[]
unitNameArray
=
yAxisName
.
split
(
","
);
for
(
String
s
:
unitNameArray
)
{
CategoryAxis
categoryAxis
=
new
CategoryAxis
();
categoryAxis
.
type
(
AxisType
.
value
);
options
.
yAxis
(
categoryAxis
.
name
(
s
));
}
for
(
String
key
:
yAxisData
.
keySet
())
{
// 遍历list得到数据
List
<
Double
>
list
=
yAxisData
.
get
(
key
);
Line
line
=
new
Line
().
name
(
key
);
for
(
Double
d
:
list
)
{
// KW与MW单位的转换
// if(settingGlobal!=null&&settingGlobal.getIskw()==0){
// d = d/1000;
// }
// 数据为空的话会报错,为空则为零
if
(
d
!=
null
)
{
line
.
type
(
SeriesType
.
line
).
data
(
d
);
}
else
{
line
.
type
(
SeriesType
.
line
).
data
(
0
);
}
if
(
yAxisIndex
!=
null
&&
yAxisIndex
.
get
(
key
)
!=
null
)
{
line
.
type
(
SeriesType
.
line
).
yAxisIndex
(
yAxisIndex
.
get
(
key
));
// 显示直线,而不是密密麻麻的点,一点都不好看
line
.
symbol
(
Symbol
.
none
);
}
else
{
line
.
type
(
SeriesType
.
line
).
yAxisIndex
(
0
);
line
.
symbol
(
Symbol
.
none
);
}
}
options
.
series
(
line
);
}
option
.
options
(
options
);
for
(
int
ii
=
1
;
ii
<
timelineData
.
size
();
ii
++)
{
Map
<
String
,
List
<
Double
>>
timelineAxisDataMap
=
timelineAxisData
.
get
(
ii
-
1
);
GsonOption
timeLineOption
=
new
GsonOption
();
timeLineOption
.
title
(
timelineData
.
get
(
ii
)
+
title
.
substring
(
4
,
title
.
length
()),
subtitle
);
for
(
String
key
:
timelineAxisDataMap
.
keySet
())
{
// 遍历list得到数据
List
<
Double
>
list
=
timelineAxisDataMap
.
get
(
key
);
Line
line
=
new
Line
().
name
(
key
);
for
(
Double
d
:
list
)
{
// KW与MW单位的转换
// if(settingGlobal!=null&&settingGlobal.getIskw()==0){
// d = d/1000;
// }
// 数据为空的话会报错,为空则为零
if
(
d
!=
null
)
{
line
.
type
(
SeriesType
.
line
).
data
(
d
);
}
else
{
line
.
type
(
SeriesType
.
line
).
data
(
0
);
}
if
(
yAxisIndex
!=
null
&&
yAxisIndex
.
get
(
key
)
!=
null
)
{
line
.
type
(
SeriesType
.
line
).
yAxisIndex
(
yAxisIndex
.
get
(
key
));
// 显示直线,而不是密密麻麻的点,一点都不好看
line
.
symbol
(
Symbol
.
none
);
}
else
{
line
.
type
(
SeriesType
.
line
).
yAxisIndex
(
0
);
line
.
symbol
(
Symbol
.
none
);
}
}
timeLineOption
.
series
(
line
);
}
option
.
options
(
timeLineOption
);
}
sb
.
append
(
"var option="
+
option
.
toString
()
+
";"
);
sb
.
append
(
"myChart.setOption(option);"
);
sb
.
append
(
"});"
);
sb
.
append
(
"</script>"
);
try
{
this
.
pageContext
.
getOut
().
write
(
sb
.
toString
());
}
catch
(
IOException
e
)
{
System
.
err
.
print
(
e
);
}
return
Tag
.
EVAL_PAGE
;
// 继续处理页面
}
@Override
public
String
getId
()
{
return
id
;
}
@Override
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getSubtitle
()
{
return
subtitle
;
}
public
void
setSubtitle
(
String
subtitle
)
{
this
.
subtitle
=
subtitle
;
}
public
String
getxAxisName
()
{
return
xAxisName
;
}
public
void
setxAxisName
(
String
xAxisName
)
{
this
.
xAxisName
=
xAxisName
;
}
public
String
getyAxisName
()
{
return
yAxisName
;
}
public
void
setyAxisName
(
String
yAxisName
)
{
this
.
yAxisName
=
yAxisName
;
}
public
List
<
String
>
getxAxisData
()
{
return
xAxisData
;
}
public
void
setxAxisData
(
List
<
String
>
xAxisData
)
{
this
.
xAxisData
=
xAxisData
;
}
public
Map
<
String
,
Integer
>
getyAxisIndex
()
{
return
yAxisIndex
;
}
public
void
setyAxisIndex
(
Map
<
String
,
Integer
>
yAxisIndex
)
{
this
.
yAxisIndex
=
yAxisIndex
;
}
public
Map
<
String
,
List
<
Double
>>
getyAxisData
()
{
return
yAxisData
;
}
public
void
setyAxisData
(
Map
<
String
,
List
<
Double
>>
yAxisData
)
{
this
.
yAxisData
=
yAxisData
;
}
public
List
<
String
>
getTimelineData
()
{
return
timelineData
;
}
public
void
setTimelineData
(
List
<
String
>
timelineData
)
{
this
.
timelineData
=
timelineData
;
}
public
List
<
Map
<
String
,
List
<
Double
>>>
getTimelineAxisData
()
{
return
timelineAxisData
;
}
public
void
setTimelineAxisData
(
List
<
Map
<
String
,
List
<
Double
>>>
timelineAxisData
)
{
this
.
timelineAxisData
=
timelineAxisData
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/tag/echarts/EChartsPieTag.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.tag.echarts
;
import
java.io.IOException
;
import
java.util.Map
;
import
javax.servlet.jsp.JspException
;
import
javax.servlet.jsp.tagext.BodyTag
;
import
javax.servlet.jsp.tagext.BodyTagSupport
;
import
javax.servlet.jsp.tagext.Tag
;
import
com.github.abel533.echarts.code.*
;
import
com.github.abel533.echarts.data.Data
;
import
com.github.abel533.echarts.feature.MagicType
;
import
com.github.abel533.echarts.json.GsonOption
;
import
com.github.abel533.echarts.series.Line
;
public
class
EChartsPieTag
extends
BodyTagSupport
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
id
;
private
String
title
;
private
String
subtitle
;
private
Map
<
String
,
Object
>
orientData
;
@Override
public
int
doStartTag
()
throws
JspException
{
return
BodyTag
.
EVAL_BODY_BUFFERED
;
}
@Override
public
int
doEndTag
()
throws
JspException
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"<script type='text/javascript'>"
);
sb
.
append
(
"require([ 'echarts','echarts/chart/pie'], function(ec) {"
);
sb
.
append
(
"var myChart= ec.init(document.getElementById('"
+
id
+
"'));"
);
// 创建GsonOption对象,即为json字符串
GsonOption
option
=
new
GsonOption
();
option
.
tooltip
().
trigger
(
Trigger
.
item
).
formatter
(
"{a} <br/>{b} : {c} ({d}%)"
);
option
.
title
(
title
,
subtitle
);
// 工具栏
option
.
toolbox
().
show
(
true
).
feature
(
Tool
.
mark
,
Tool
.
dataView
,
Tool
.
saveAsImage
,
//Tool.magicType,
//new MagicType(Magic.line, Magic.bar,Magic.pie,Magic.stack,Magic.tiled),
Tool
.
dataZoom
,
Tool
.
restore
);
option
.
calculable
(
true
);
// 数据轴封装并解析
for
(
String
xdata
:
orientData
.
keySet
())
{
//option.legend().orient(Orient.horizontal).x(X.left).y(Y.bottom).data(xdata);
option
.
legend
().
orient
(
Orient
.
vertical
).
x
(
X
.
left
).
y
(
Y
.
bottom
).
data
(
xdata
);
}
if
(
orientData
!=
null
)
{
Line
line
=
new
Line
();
line
.
name
(
title
).
type
(
SeriesType
.
pie
);
for
(
String
title
:
orientData
.
keySet
())
{
Object
value
=
orientData
.
get
(
title
);
Data
data
=
new
Data
().
name
(
title
);
data
.
value
(
value
);
line
.
data
(
data
);
}
option
.
series
(
line
);
}
sb
.
append
(
"var option="
+
option
.
toString
()
+
";\n"
);
/*sb.append("option.series[0].label={\nnormal: { formatter: ' {b|{b}:}{c} {per|{d}%} ',");
sb.append("backgroundColor: '#eee',borderColor: '#aaa',borderWidth: 1,borderRadius: 4,");
sb.append("rich: {a: {color: '#999',lineHeight: 22,align: 'center'},");
sb.append("hr: {borderColor: '#aaa',width: '100%',borderWidth: 0.5,height: 0},");
sb.append("b: {fontSize: 16,lineHeight: 33},");
sb.append("per: {color: '#eee',backgroundColor: '#334455',padding: [2, 4],borderRadius: 2}");
sb.append("}}\n};\n");*/
sb
.
append
(
"myChart.setOption(option);\n"
);
sb
.
append
(
"});"
);
sb
.
append
(
"</script>"
);
try
{
this
.
pageContext
.
getOut
().
write
(
sb
.
toString
());
}
catch
(
IOException
e
)
{
System
.
err
.
print
(
e
);
}
return
Tag
.
EVAL_PAGE
;
// 继续处理页面
}
@Override
public
String
getId
()
{
return
id
;
}
@Override
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getSubtitle
()
{
return
subtitle
;
}
public
void
setSubtitle
(
String
subtitle
)
{
this
.
subtitle
=
subtitle
;
}
public
Map
<
String
,
Object
>
getOrientData
()
{
return
orientData
;
}
public
void
setOrientData
(
Map
<
String
,
Object
>
orientData
)
{
this
.
orientData
=
orientData
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/tag/echarts/EChartsRadarTag.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.tag.echarts
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Map
;
import
javax.servlet.jsp.JspException
;
import
javax.servlet.jsp.tagext.BodyTag
;
import
javax.servlet.jsp.tagext.BodyTagSupport
;
import
javax.servlet.jsp.tagext.Tag
;
import
com.github.abel533.echarts.Polar
;
import
com.github.abel533.echarts.code.*
;
import
com.github.abel533.echarts.data.Data
;
import
com.github.abel533.echarts.feature.MagicType
;
import
com.github.abel533.echarts.json.GsonOption
;
import
com.github.abel533.echarts.series.Line
;
public
class
EChartsRadarTag
extends
BodyTagSupport
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
id
;
private
String
title
;
private
String
subtitle
;
private
Integer
polarType
;
private
List
<
Map
<
String
,
Object
>>
orientData
;
@Override
public
int
doStartTag
()
throws
JspException
{
return
BodyTag
.
EVAL_BODY_BUFFERED
;
}
@Override
public
int
doEndTag
()
throws
JspException
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"<script type='text/javascript'>"
);
sb
.
append
(
"require([ 'echarts', 'echarts/chart/radar'], function(ec) {"
);
sb
.
append
(
"var myChart= ec.init(document.getElementById('"
+
id
+
"'));"
);
// 创建GsonOption对象,即为json字符串
GsonOption
option
=
new
GsonOption
();
/**
* title: { text: '实时风向玫瑰图', subtext: '预测时间:' },
*/
option
.
title
(
title
,
subtitle
);
/**
* tooltip: { trigger: 'axis' },
*/
option
.
tooltip
().
trigger
(
Trigger
.
axis
);
/**
* polar: [ { indicator: [ { text: '正北(N)', max: 100 }, { text:
* '西北(NW)', max: 100 }, { text: '正西(W)', max: 100 }, { text: '西南(SW)',
* max: 100 }, { text: '正南(S)', max: 100 }, { text: '东南(SE)', max: 100
* }, { text: '正东(E)', max: 100 }, { text: '东北(NE)', max: 100 } ] } ]
*/
// 工具栏
option
.
toolbox
().
show
(
true
).
feature
(
Tool
.
mark
,
Tool
.
dataView
,
Tool
.
saveAsImage
,
//new MagicType(Magic.line, Magic.bar,Magic.stack,Magic.tiled),
Tool
.
dataZoom
,
Tool
.
restore
);
Polar
polar
=
new
Polar
();
if
(
polarType
==
8
)
{
polar
.
indicator
(
new
Data
().
text
(
"正北(N)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"西北(NW)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"正西(W)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"西南(SW)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"正南(S)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"东南(SE)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"正东(E)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"东北(NE)"
).
max
(
100
));
}
else
if
(
polarType
==
16
)
{
polar
.
indicator
(
new
Data
().
text
(
"正北(N)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"北西北(NNW)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"西北(NW)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"西北西(WNW)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"正西(W)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"西南西(WSW)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"西南(SW)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"南西南(SSW)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"正南(S)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"南东南(SSE)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"东南(SE)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"东南东(ESE)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"正东(E)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"东北东(ENE)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"东北(NE)"
).
max
(
100
))
.
indicator
(
new
Data
().
text
(
"北东北(NNE)"
).
max
(
100
));
}
option
.
polar
(
polar
);
option
.
calculable
(
true
);
/**
* legend: { orient: 'horizontal', x: 'left', y: 'bottom', data: [
* <c:forEach var="item" items="${towerList}" varStatus="status">
* '${item.tower_mater}米风向', </c:forEach> ] },
*/
if
(
orientData
!=
null
)
{
for
(
Map
<
String
,
Object
>
legendMap
:
orientData
)
{
String
title
=
legendMap
.
get
(
"title"
).
toString
();
option
.
legend
().
orient
(
Orient
.
horizontal
).
x
(
X
.
left
).
y
(
Y
.
bottom
).
data
(
title
);
Line
line
=
new
Line
();
Data
data
=
new
Data
().
name
(
title
);
Object
[]
dataArr
=
(
Double
[])
legendMap
.
get
(
"dataArr"
);
data
.
value
(
dataArr
);
line
.
type
(
SeriesType
.
radar
).
data
(
data
);
option
.
series
(
line
);
}
}
sb
.
append
(
"var option="
+
option
.
toString
()+
";"
);
sb
.
append
(
"myChart.setOption(option);"
);
sb
.
append
(
"});"
);
sb
.
append
(
"</script>"
);
try
{
this
.
pageContext
.
getOut
().
write
(
sb
.
toString
());
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
Tag
.
EVAL_PAGE
;
// 继续处理页面
}
@Override
public
String
getId
()
{
return
id
;
}
@Override
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getSubtitle
()
{
return
subtitle
;
}
public
void
setSubtitle
(
String
subtitle
)
{
this
.
subtitle
=
subtitle
;
}
public
Integer
getPolarType
()
{
return
polarType
;
}
public
void
setPolarType
(
Integer
polarType
)
{
this
.
polarType
=
polarType
;
}
public
List
<
Map
<
String
,
Object
>>
getOrientData
()
{
return
orientData
;
}
public
void
setOrientData
(
List
<
Map
<
String
,
Object
>>
orientData
)
{
this
.
orientData
=
orientData
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/utils/AddressUtils.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.utils
;
import
com.alibaba.fastjson.JSONObject
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.jeespring.common.utils.http.HttpUtils
;
import
org.springframework.beans.factory.annotation.Value
;
/**
* 获取地址类
*
* @author JeeSpring
*/
public
class
AddressUtils
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
AddressUtils
.
class
);
public
static
final
String
IP_URL
=
"http://ip.taobao.com/service/getIpInfo.php"
;
/** 获取地址开关 */
private
static
boolean
addressEnabled
=
false
;
public
static
String
getRealAddressByIP
(
String
ip
)
{
String
address
=
""
;
try
{
if
(
addressEnabled
)
{
address
=
HttpUtils
.
sendPost
(
IP_URL
,
"ip="
+
ip
);
JSONObject
json
=
JSONObject
.
parseObject
(
address
);
JSONObject
object
=
json
.
getObject
(
"data"
,
JSONObject
.
class
);
String
region
=
object
.
getString
(
"region"
);
String
city
=
object
.
getString
(
"city"
);
address
=
region
+
" "
+
city
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
"获取地理位置异常:"
,
e
.
getMessage
());
}
return
address
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/utils/Base64ImageUtils.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.utils
;
import
sun.misc.BASE64Decoder
;
import
sun.misc.BASE64Encoder
;
import
java.io.*
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
/**
* Created by zhangwenchao on 2017/9/29.
* 本地或者网络图片资源转为Base64字符串
*/
public
class
Base64ImageUtils
{
/**
* @Title: GetImageStrFromUrl
* @Description: 将一张网络图片转化成Base64字符串
* @param imgURL 网络资源位置
* @return Base64字符串
*/
public
static
String
GetImageStrFromUrl
(
String
imgURL
)
{
byte
[]
data
=
null
;
try
{
// 创建URL
URL
url
=
new
URL
(
imgURL
);
// 创建链接
HttpURLConnection
conn
=
(
HttpURLConnection
)
url
.
openConnection
();
conn
.
setRequestMethod
(
"GET"
);
conn
.
setConnectTimeout
(
5
*
1000
);
InputStream
inStream
=
conn
.
getInputStream
();
data
=
new
byte
[
inStream
.
available
()];
inStream
.
read
(
data
);
inStream
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
// 对字节数组Base64编码
BASE64Encoder
encoder
=
new
BASE64Encoder
();
// 返回Base64编码过的字节数组字符串
return
encoder
.
encode
(
data
);
}
/**
* @Title: GetImageStrFromPath
* @Description: (将一张本地图片转化成Base64字符串)
* @param imgPath
* @return
*/
public
static
String
GetImageStrFromPath
(
String
imgPath
)
{
InputStream
in
=
null
;
byte
[]
data
=
null
;
// 读取图片字节数组
try
{
in
=
new
FileInputStream
(
imgPath
);
data
=
new
byte
[
in
.
available
()];
in
.
read
(
data
);
in
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
// 对字节数组Base64编码
BASE64Encoder
encoder
=
new
BASE64Encoder
();
// 返回Base64编码过的字节数组字符串
return
encoder
.
encode
(
data
);
}
/**
* @Title: GenerateImage
* @Description: base64字符串转化成图片
* @param imgStr
* @param imgFilePath 图片文件名,如“E:/tmp.jpg”
* @return
*/
public
static
boolean
saveImage
(
String
imgStr
,
String
imgFilePath
)
{
if
(
imgStr
==
null
)
// 图像数据为空
{
return
false
;
}
BASE64Decoder
decoder
=
new
BASE64Decoder
();
try
{
// Base64解码
byte
[]
b
=
decoder
.
decodeBuffer
(
imgStr
);
for
(
int
i
=
0
;
i
<
b
.
length
;
++
i
)
{
if
(
b
[
i
]
<
0
)
{
// 调整异常数据
b
[
i
]
+=
256
;
}
}
// 生成jpeg图片
OutputStream
out
=
new
FileOutputStream
(
imgFilePath
);
out
.
write
(
b
);
out
.
flush
();
out
.
close
();
return
true
;
}
catch
(
Exception
e
)
{
return
false
;
}
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/utils/CacheUtils.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.utils
;
import
org.apache.shiro.cache.Cache
;
import
org.apache.shiro.cache.CacheManager
;
/**
* Cache工具类
*
* @author 黄炳桂 516821420@qq.com
* @version 2013-5-29
*/
public
class
CacheUtils
{
private
static
CacheManager
cacheManager
=
SpringContextHolder
.
getBean
(
CacheManager
.
class
);
private
static
final
String
SYS_CACHE
=
"sysCache"
;
/**
* 获取SYS_CACHE缓存
*
* @param key
* @return
*/
public
static
Object
get
(
String
key
)
{
return
get
(
SYS_CACHE
,
key
);
}
/**
* 获取SYS_CACHE缓存
*
* @param key
* @param defaultValue
* @return
*/
public
static
Object
get
(
String
key
,
Object
defaultValue
)
{
Object
value
=
get
(
key
);
return
value
!=
null
?
value
:
defaultValue
;
}
/**
* 写入SYS_CACHE缓存
*
* @param key
* @return
*/
public
static
void
put
(
String
key
,
Object
value
)
{
put
(
SYS_CACHE
,
key
,
value
);
}
/**
* 从SYS_CACHE缓存中移除
*
* @param key
* @return
*/
public
static
void
remove
(
String
key
)
{
remove
(
SYS_CACHE
,
key
);
}
/**
* 获取缓存
*
* @param cacheName
* @param key
* @return
*/
public
static
Object
get
(
String
cacheName
,
String
key
)
{
return
getCache
(
cacheName
).
get
(
key
);
}
/**
* 获取缓存
*
* @param cacheName
* @param key
* @param defaultValue
* @return
*/
public
static
Object
get
(
String
cacheName
,
String
key
,
Object
defaultValue
)
{
Object
value
=
get
(
cacheName
,
key
);
return
value
!=
null
?
value
:
defaultValue
;
}
/**
* 写入缓存
*
* @param cacheName
* @param key
* @param value
*/
public
static
void
put
(
String
cacheName
,
String
key
,
Object
value
)
{
getCache
(
cacheName
).
put
(
key
,
value
);
}
/**
* 从缓存中移除
*
* @param cacheName
* @param key
*/
public
static
void
remove
(
String
cacheName
,
String
key
)
{
getCache
(
cacheName
).
remove
(
key
);
}
/**
* 获得一个Cache,没有则显示日志。
*
* @param cacheName
* @return
*/
private
static
Cache
<
String
,
Object
>
getCache
(
String
cacheName
)
{
Cache
<
String
,
Object
>
cache
=
cacheManager
.
getCache
(
cacheName
);
if
(
cache
==
null
)
{
throw
new
RuntimeException
(
"当前系统中没有定义“"
+
cacheName
+
"”这个缓存。"
);
}
return
cache
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/utils/CharsetKit.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.utils
;
import
java.nio.charset.Charset
;
import
java.nio.charset.StandardCharsets
;
/**
* 字符集工具类
*
* @author JeeSpring
*
*/
public
class
CharsetKit
{
/** ISO-8859-1 */
public
static
final
String
ISO_8859_1
=
"ISO-8859-1"
;
/** UTF-8 */
public
static
final
String
UTF_8
=
"UTF-8"
;
/** GBK */
public
static
final
String
GBK
=
"GBK"
;
/** ISO-8859-1 */
public
static
final
Charset
CHARSET_ISO_8859_1
=
Charset
.
forName
(
ISO_8859_1
);
/** UTF-8 */
public
static
final
Charset
CHARSET_UTF_8
=
Charset
.
forName
(
UTF_8
);
/** GBK */
public
static
final
Charset
CHARSET_GBK
=
Charset
.
forName
(
GBK
);
/**
* 转换为Charset对象
*
* @param charset 字符集,为空则返回默认字符集
* @return Charset
*/
public
static
Charset
charset
(
String
charset
)
{
return
StringUtils
.
isEmpty
(
charset
)
?
Charset
.
defaultCharset
()
:
Charset
.
forName
(
charset
);
}
/**
* 转换字符串的字符集编码
*
* @param source 字符串
* @param srcCharset 源字符集,默认ISO-8859-1
* @param destCharset 目标字符集,默认UTF-8
* @return 转换后的字符集
*/
public
static
String
convert
(
String
source
,
String
srcCharset
,
String
destCharset
)
{
return
convert
(
source
,
Charset
.
forName
(
srcCharset
),
Charset
.
forName
(
destCharset
));
}
/**
* 转换字符串的字符集编码
*
* @param source 字符串
* @param srcCharset 源字符集,默认ISO-8859-1
* @param destCharset 目标字符集,默认UTF-8
* @return 转换后的字符集
*/
public
static
String
convert
(
String
source
,
Charset
srcCharset
,
Charset
destCharset
)
{
if
(
null
==
srcCharset
)
{
srcCharset
=
StandardCharsets
.
ISO_8859_1
;
}
if
(
null
==
destCharset
)
{
srcCharset
=
StandardCharsets
.
UTF_8
;
}
if
(
StringUtils
.
isEmpty
(
source
)
||
srcCharset
.
equals
(
destCharset
))
{
return
source
;
}
return
new
String
(
source
.
getBytes
(
srcCharset
),
destCharset
);
}
/**
* @return 系统字符集编码
*/
public
static
String
systemCharset
()
{
return
Charset
.
defaultCharset
().
name
();
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/utils/Collections3.java
0 → 100644
View file @
05beecd0
/**
* Copyright (c) 2005-2012 springside.org.cn
*/
package
com.jeespring.common.utils
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.commons.beanutils.PropertyUtils
;
import
org.apache.commons.lang3.StringUtils
;
/**
* Collections工具集.
* 在JDK的Collections和Guava的Collections2后, 命名为Collections3.
* @author calvin
* @version 2013-01-15
*/
@SuppressWarnings
(
"rawtypes"
)
public
class
Collections3
{
/**
* 提取集合中的对象的两个属性(通过Getter函数), 组合成Map.
*
* @param collection 来源集合.
* @param keyPropertyName 要提取为Map中的Key值的属性名.
* @param valuePropertyName 要提取为Map中的Value值的属性名.
*/
@SuppressWarnings
(
"unchecked"
)
public
static
Map
extractToMap
(
final
Collection
collection
,
final
String
keyPropertyName
,
final
String
valuePropertyName
)
{
Map
map
=
new
HashMap
(
collection
.
size
());
try
{
for
(
Object
obj
:
collection
)
{
map
.
put
(
PropertyUtils
.
getProperty
(
obj
,
keyPropertyName
),
PropertyUtils
.
getProperty
(
obj
,
valuePropertyName
));
}
}
catch
(
Exception
e
)
{
throw
Reflections
.
convertReflectionExceptionToUnchecked
(
e
);
}
return
map
;
}
/**
* 提取集合中的对象的一个属性(通过Getter函数), 组合成List.
*
* @param collection 来源集合.
* @param propertyName 要提取的属性名.
*/
@SuppressWarnings
(
"unchecked"
)
public
static
List
extractToList
(
final
Collection
collection
,
final
String
propertyName
)
{
List
list
=
new
ArrayList
(
collection
.
size
());
try
{
for
(
Object
obj
:
collection
)
{
list
.
add
(
PropertyUtils
.
getProperty
(
obj
,
propertyName
));
}
}
catch
(
Exception
e
)
{
throw
Reflections
.
convertReflectionExceptionToUnchecked
(
e
);
}
return
list
;
}
/**
* 提取集合中的对象的一个属性(通过Getter函数), 组合成由分割符分隔的字符串.
*
* @param collection 来源集合.
* @param propertyName 要提取的属性名.
* @param separator 分隔符.
*/
public
static
String
extractToString
(
final
Collection
collection
,
final
String
propertyName
,
final
String
separator
)
{
List
list
=
extractToList
(
collection
,
propertyName
);
return
StringUtils
.
join
(
list
,
separator
);
}
/**
* 转换Collection所有元素(通过toString())为String, 中间以 separator分隔。
*/
public
static
String
convertToString
(
final
Collection
collection
,
final
String
separator
)
{
return
StringUtils
.
join
(
collection
,
separator
);
}
/**
* 转换Collection所有元素(通过toString())为String, 每个元素的前面加入prefix,后面加入postfix,如<div>mymessage</div>。
*/
public
static
String
convertToString
(
final
Collection
collection
,
final
String
prefix
,
final
String
postfix
)
{
StringBuilder
builder
=
new
StringBuilder
();
for
(
Object
o
:
collection
)
{
builder
.
append
(
prefix
).
append
(
o
).
append
(
postfix
);
}
return
builder
.
toString
();
}
/**
* 判断是否为空.
*/
public
static
boolean
isEmpty
(
Collection
collection
)
{
return
(
collection
==
null
||
collection
.
isEmpty
());
}
/**
* 取得Collection的第一个元素,如果collection为空返回null.
*/
public
static
<
T
>
T
getFirst
(
Collection
<
T
>
collection
)
{
if
(
isEmpty
(
collection
))
{
return
null
;
}
return
collection
.
iterator
().
next
();
}
/**
* 获取Collection的最后一个元素 ,如果collection为空返回null.
*/
public
static
<
T
>
T
getLast
(
Collection
<
T
>
collection
)
{
if
(
isEmpty
(
collection
))
{
return
null
;
}
//当类型为List时,直接取得最后一个元素 。
if
(
collection
instanceof
List
)
{
List
<
T
>
list
=
(
List
<
T
>)
collection
;
return
list
.
get
(
list
.
size
()
-
1
);
}
//其他类型通过iterator滚动到最后一个元素.
Iterator
<
T
>
iterator
=
collection
.
iterator
();
while
(
true
)
{
T
current
=
iterator
.
next
();
if
(!
iterator
.
hasNext
())
{
return
current
;
}
}
}
/**
* 返回a+b的新List.
*/
public
static
<
T
>
List
<
T
>
union
(
final
Collection
<
T
>
a
,
final
Collection
<
T
>
b
)
{
List
<
T
>
result
=
new
ArrayList
<
T
>(
a
);
result
.
addAll
(
b
);
return
result
;
}
/**
* 返回a-b的新List.
*/
public
static
<
T
>
List
<
T
>
subtract
(
final
Collection
<
T
>
a
,
final
Collection
<
T
>
b
)
{
List
<
T
>
list
=
new
ArrayList
<
T
>(
a
);
for
(
T
element
:
b
)
{
list
.
remove
(
element
);
}
return
list
;
}
/**
* 返回a与b的交集的新List.
*/
public
static
<
T
>
List
<
T
>
intersection
(
Collection
<
T
>
a
,
Collection
<
T
>
b
)
{
List
<
T
>
list
=
new
ArrayList
<
T
>();
for
(
T
element
:
a
)
{
if
(
b
.
contains
(
element
))
{
list
.
add
(
element
);
}
}
return
list
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/utils/Convert.java
0 → 100644
View file @
05beecd0
package
com.jeespring.common.utils
;
import
java.math.BigDecimal
;
import
java.math.BigInteger
;
import
java.nio.ByteBuffer
;
import
java.nio.charset.Charset
;
import
java.text.NumberFormat
;
import
java.util.Set
;
/**
* 类型转换器
*
* @author JeeSpring
*
*/
public
class
Convert
{
/**
* 转换为字符串<br>
* 如果给定的值为null,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
String
toStr
(
Object
value
,
String
defaultValue
)
{
if
(
null
==
value
)
{
return
defaultValue
;
}
if
(
value
instanceof
String
)
{
return
(
String
)
value
;
}
return
value
.
toString
();
}
/**
* 转换为字符串<br>
* 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
String
toStr
(
Object
value
)
{
return
toStr
(
value
,
null
);
}
/**
* 转换为字符<br>
* 如果给定的值为null,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
Character
toChar
(
Object
value
,
Character
defaultValue
)
{
if
(
null
==
value
)
{
return
defaultValue
;
}
if
(
value
instanceof
Character
)
{
return
(
Character
)
value
;
}
final
String
valueStr
=
toStr
(
value
,
null
);
return
StringUtils
.
isEmpty
(
valueStr
)
?
defaultValue
:
valueStr
.
charAt
(
0
);
}
/**
* 转换为字符<br>
* 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
Character
toChar
(
Object
value
)
{
return
toChar
(
value
,
null
);
}
/**
* 转换为byte<br>
* 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
Byte
toByte
(
Object
value
,
Byte
defaultValue
)
{
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
value
instanceof
Byte
)
{
return
(
Byte
)
value
;
}
if
(
value
instanceof
Number
)
{
return
((
Number
)
value
).
byteValue
();
}
final
String
valueStr
=
toStr
(
value
,
null
);
if
(
StringUtils
.
isEmpty
(
valueStr
))
{
return
defaultValue
;
}
try
{
return
Byte
.
parseByte
(
valueStr
);
}
catch
(
Exception
e
)
{
return
defaultValue
;
}
}
/**
* 转换为byte<br>
* 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
Byte
toByte
(
Object
value
)
{
return
toByte
(
value
,
null
);
}
/**
* 转换为Short<br>
* 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
Short
toShort
(
Object
value
,
Short
defaultValue
)
{
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
value
instanceof
Short
)
{
return
(
Short
)
value
;
}
if
(
value
instanceof
Number
)
{
return
((
Number
)
value
).
shortValue
();
}
final
String
valueStr
=
toStr
(
value
,
null
);
if
(
StringUtils
.
isEmpty
(
valueStr
))
{
return
defaultValue
;
}
try
{
return
Short
.
parseShort
(
valueStr
.
trim
());
}
catch
(
Exception
e
)
{
return
defaultValue
;
}
}
/**
* 转换为Short<br>
* 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
Short
toShort
(
Object
value
)
{
return
toShort
(
value
,
null
);
}
/**
* 转换为Number<br>
* 如果给定的值为空,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
Number
toNumber
(
Object
value
,
Number
defaultValue
)
{
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
value
instanceof
Number
)
{
return
(
Number
)
value
;
}
final
String
valueStr
=
toStr
(
value
,
null
);
if
(
StringUtils
.
isEmpty
(
valueStr
))
{
return
defaultValue
;
}
try
{
return
NumberFormat
.
getInstance
().
parse
(
valueStr
);
}
catch
(
Exception
e
)
{
return
defaultValue
;
}
}
/**
* 转换为Number<br>
* 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
Number
toNumber
(
Object
value
)
{
return
toNumber
(
value
,
null
);
}
/**
* 转换为int<br>
* 如果给定的值为空,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
Integer
toInt
(
Object
value
,
Integer
defaultValue
)
{
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
value
instanceof
Integer
)
{
return
(
Integer
)
value
;
}
if
(
value
instanceof
Number
)
{
return
((
Number
)
value
).
intValue
();
}
final
String
valueStr
=
toStr
(
value
,
null
);
if
(
StringUtils
.
isEmpty
(
valueStr
))
{
return
defaultValue
;
}
try
{
return
Integer
.
parseInt
(
valueStr
.
trim
());
}
catch
(
Exception
e
)
{
return
defaultValue
;
}
}
/**
* 转换为int<br>
* 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
Integer
toInt
(
Object
value
)
{
return
toInt
(
value
,
null
);
}
/**
* 转换为Integer数组<br>
*
* @param split 被转换的值
* @return 结果
*/
public
static
Integer
[]
toIntArray
(
String
str
)
{
return
toIntArray
(
","
,
str
);
}
/**
* 转换为Long数组<br>
*
* @param split 被转换的值
* @return 结果
*/
public
static
Long
[]
toLongArray
(
String
str
)
{
return
toLongArray
(
","
,
str
);
}
/**
* 转换为Integer数组<br>
*
* @param split 分隔符
* @param split 被转换的值
* @return 结果
*/
public
static
Integer
[]
toIntArray
(
String
split
,
String
str
)
{
if
(
StringUtils
.
isEmpty
(
str
))
{
return
new
Integer
[]
{};
}
String
[]
arr
=
str
.
split
(
split
);
final
Integer
[]
ints
=
new
Integer
[
arr
.
length
];
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
final
Integer
v
=
toInt
(
arr
[
i
],
0
);
ints
[
i
]
=
v
;
}
return
ints
;
}
/**
* 转换为Long数组<br>
*
* @param isIgnoreConvertError 是否忽略转换错误,忽略则给值null
* @param values 被转换的值
* @return 结果
*/
public
static
Long
[]
toLongArray
(
String
split
,
String
str
)
{
if
(
StringUtils
.
isEmpty
(
str
))
{
return
new
Long
[]
{};
}
String
[]
arr
=
str
.
split
(
split
);
final
Long
[]
longs
=
new
Long
[
arr
.
length
];
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
final
Long
v
=
toLong
(
arr
[
i
],
null
);
longs
[
i
]
=
v
;
}
return
longs
;
}
/**
* 转换为String数组<br>
*
* @param split 被转换的值
* @return 结果
*/
public
static
String
[]
toStrArray
(
String
str
)
{
return
toStrArray
(
","
,
str
);
}
/**
* 转换为String数组<br>
*
* @param split 分隔符
* @param split 被转换的值
* @return 结果
*/
public
static
String
[]
toStrArray
(
String
split
,
String
str
)
{
return
str
.
split
(
split
);
}
/**
* 转换为long<br>
* 如果给定的值为空,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
Long
toLong
(
Object
value
,
Long
defaultValue
)
{
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
value
instanceof
Long
)
{
return
(
Long
)
value
;
}
if
(
value
instanceof
Number
)
{
return
((
Number
)
value
).
longValue
();
}
final
String
valueStr
=
toStr
(
value
,
null
);
if
(
StringUtils
.
isEmpty
(
valueStr
))
{
return
defaultValue
;
}
try
{
// 支持科学计数法
return
new
BigDecimal
(
valueStr
.
trim
()).
longValue
();
}
catch
(
Exception
e
)
{
return
defaultValue
;
}
}
/**
* 转换为long<br>
* 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
Long
toLong
(
Object
value
)
{
return
toLong
(
value
,
null
);
}
/**
* 转换为double<br>
* 如果给定的值为空,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
Double
toDouble
(
Object
value
,
Double
defaultValue
)
{
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
value
instanceof
Double
)
{
return
(
Double
)
value
;
}
if
(
value
instanceof
Number
)
{
return
((
Number
)
value
).
doubleValue
();
}
final
String
valueStr
=
toStr
(
value
,
null
);
if
(
StringUtils
.
isEmpty
(
valueStr
))
{
return
defaultValue
;
}
try
{
// 支持科学计数法
return
new
BigDecimal
(
valueStr
.
trim
()).
doubleValue
();
}
catch
(
Exception
e
)
{
return
defaultValue
;
}
}
/**
* 转换为double<br>
* 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
Double
toDouble
(
Object
value
)
{
return
toDouble
(
value
,
null
);
}
/**
* 转换为Float<br>
* 如果给定的值为空,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
Float
toFloat
(
Object
value
,
Float
defaultValue
)
{
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
value
instanceof
Float
)
{
return
(
Float
)
value
;
}
if
(
value
instanceof
Number
)
{
return
((
Number
)
value
).
floatValue
();
}
final
String
valueStr
=
toStr
(
value
,
null
);
if
(
StringUtils
.
isEmpty
(
valueStr
))
{
return
defaultValue
;
}
try
{
return
Float
.
parseFloat
(
valueStr
.
trim
());
}
catch
(
Exception
e
)
{
return
defaultValue
;
}
}
/**
* 转换为Float<br>
* 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
Float
toFloat
(
Object
value
)
{
return
toFloat
(
value
,
null
);
}
/**
* 转换为boolean<br>
* String支持的值为:true、false、yes、ok、no,1,0 如果给定的值为空,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
Boolean
toBool
(
Object
value
,
Boolean
defaultValue
)
{
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
value
instanceof
Boolean
)
{
return
(
Boolean
)
value
;
}
String
valueStr
=
toStr
(
value
,
null
);
if
(
StringUtils
.
isEmpty
(
valueStr
))
{
return
defaultValue
;
}
valueStr
=
valueStr
.
trim
().
toLowerCase
();
switch
(
valueStr
)
{
case
"true"
:
return
true
;
case
"false"
:
return
false
;
case
"yes"
:
return
true
;
case
"ok"
:
return
true
;
case
"no"
:
return
false
;
case
"1"
:
return
true
;
case
"0"
:
return
false
;
default
:
return
defaultValue
;
}
}
/**
* 转换为boolean<br>
* 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
Boolean
toBool
(
Object
value
)
{
return
toBool
(
value
,
null
);
}
/**
* 转换为Enum对象<br>
* 如果给定的值为空,或者转换失败,返回默认值<br>
*
* @param clazz Enum的Class
* @param value 值
* @param defaultValue 默认值
* @return Enum
*/
public
static
<
E
extends
Enum
<
E
>>
E
toEnum
(
Class
<
E
>
clazz
,
Object
value
,
E
defaultValue
)
{
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
clazz
.
isAssignableFrom
(
value
.
getClass
()))
{
@SuppressWarnings
(
"unchecked"
)
E
myE
=
(
E
)
value
;
return
myE
;
}
final
String
valueStr
=
toStr
(
value
,
null
);
if
(
StringUtils
.
isEmpty
(
valueStr
))
{
return
defaultValue
;
}
try
{
return
Enum
.
valueOf
(
clazz
,
valueStr
);
}
catch
(
Exception
e
)
{
return
defaultValue
;
}
}
/**
* 转换为Enum对象<br>
* 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
*
* @param clazz Enum的Class
* @param value 值
* @return Enum
*/
public
static
<
E
extends
Enum
<
E
>>
E
toEnum
(
Class
<
E
>
clazz
,
Object
value
)
{
return
toEnum
(
clazz
,
value
,
null
);
}
/**
* 转换为BigInteger<br>
* 如果给定的值为空,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
BigInteger
toBigInteger
(
Object
value
,
BigInteger
defaultValue
)
{
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
value
instanceof
BigInteger
)
{
return
(
BigInteger
)
value
;
}
if
(
value
instanceof
Long
)
{
return
BigInteger
.
valueOf
((
Long
)
value
);
}
final
String
valueStr
=
toStr
(
value
,
null
);
if
(
StringUtils
.
isEmpty
(
valueStr
))
{
return
defaultValue
;
}
try
{
return
new
BigInteger
(
valueStr
);
}
catch
(
Exception
e
)
{
return
defaultValue
;
}
}
/**
* 转换为BigInteger<br>
* 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
BigInteger
toBigInteger
(
Object
value
)
{
return
toBigInteger
(
value
,
null
);
}
/**
* 转换为BigDecimal<br>
* 如果给定的值为空,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
public
static
BigDecimal
toBigDecimal
(
Object
value
,
BigDecimal
defaultValue
)
{
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
value
instanceof
BigDecimal
)
{
return
(
BigDecimal
)
value
;
}
if
(
value
instanceof
Long
)
{
return
new
BigDecimal
((
Long
)
value
);
}
if
(
value
instanceof
Double
)
{
return
new
BigDecimal
((
Double
)
value
);
}
if
(
value
instanceof
Integer
)
{
return
new
BigDecimal
((
Integer
)
value
);
}
final
String
valueStr
=
toStr
(
value
,
null
);
if
(
StringUtils
.
isEmpty
(
valueStr
))
{
return
defaultValue
;
}
try
{
return
new
BigDecimal
(
valueStr
);
}
catch
(
Exception
e
)
{
return
defaultValue
;
}
}
/**
* 转换为BigDecimal<br>
* 如果给定的值为空,或者转换失败,返回默认值<br>
* 转换失败不会报错
*
* @param value 被转换的值
* @return 结果
*/
public
static
BigDecimal
toBigDecimal
(
Object
value
)
{
return
toBigDecimal
(
value
,
null
);
}
/**
* 将对象转为字符串<br>
* 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
*
* @param obj 对象
* @return 字符串
*/
public
static
String
utf8Str
(
Object
obj
)
{
return
str
(
obj
,
CharsetKit
.
CHARSET_UTF_8
);
}
/**
* 将对象转为字符串<br>
* 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
*
* @param obj 对象
* @param charsetName 字符集
* @return 字符串
*/
public
static
String
str
(
Object
obj
,
String
charsetName
)
{
return
str
(
obj
,
Charset
.
forName
(
charsetName
));
}
/**
* 将对象转为字符串<br>
* 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
*
* @param obj 对象
* @param charset 字符集
* @return 字符串
*/
public
static
String
str
(
Object
obj
,
Charset
charset
)
{
if
(
null
==
obj
)
{
return
null
;
}
if
(
obj
instanceof
String
)
{
return
(
String
)
obj
;
}
else
if
(
obj
instanceof
byte
[]
||
obj
instanceof
Byte
[])
{
return
str
((
Byte
[])
obj
,
charset
);
}
else
if
(
obj
instanceof
ByteBuffer
)
{
return
str
((
ByteBuffer
)
obj
,
charset
);
}
return
obj
.
toString
();
}
/**
* 将byte数组转为字符串
*
* @param bytes byte数组
* @param charset 字符集
* @return 字符串
*/
public
static
String
str
(
byte
[]
bytes
,
String
charset
)
{
return
str
(
bytes
,
StringUtils
.
isEmpty
(
charset
)
?
Charset
.
defaultCharset
()
:
Charset
.
forName
(
charset
));
}
/**
* 解码字节码
*
* @param data 字符串
* @param charset 字符集,如果此字段为空,则解码的结果取决于平台
* @return 解码后的字符串
*/
public
static
String
str
(
byte
[]
data
,
Charset
charset
)
{
if
(
data
==
null
)
{
return
null
;
}
if
(
null
==
charset
)
{
return
new
String
(
data
);
}
return
new
String
(
data
,
charset
);
}
/**
* 将编码的byteBuffer数据转换为字符串
*
* @param data 数据
* @param charset 字符集,如果为空使用当前系统字符集
* @return 字符串
*/
public
static
String
str
(
ByteBuffer
data
,
String
charset
)
{
if
(
data
==
null
)
{
return
null
;
}
return
str
(
data
,
Charset
.
forName
(
charset
));
}
/**
* 将编码的byteBuffer数据转换为字符串
*
* @param data 数据
* @param charset 字符集,如果为空使用当前系统字符集
* @return 字符串
*/
public
static
String
str
(
ByteBuffer
data
,
Charset
charset
)
{
if
(
null
==
charset
)
{
charset
=
Charset
.
defaultCharset
();
}
return
charset
.
decode
(
data
).
toString
();
}
// ----------------------------------------------------------------------- 全角半角转换
/**
* 半角转全角
*
* @param input String.
* @return 全角字符串.
*/
public
static
String
toSBC
(
String
input
)
{
return
toSBC
(
input
,
null
);
}
/**
* 半角转全角
*
* @param input String
* @param notConvertSet 不替换的字符集合
* @return 全角字符串.
*/
public
static
String
toSBC
(
String
input
,
Set
<
Character
>
notConvertSet
)
{
char
[]
c
=
input
.
toCharArray
();
for
(
int
i
=
0
;
i
<
c
.
length
;
i
++)
{
if
(
null
!=
notConvertSet
&&
notConvertSet
.
contains
(
c
[
i
]))
{
// 跳过不替换的字符
continue
;
}
if
(
c
[
i
]
==
' '
)
{
c
[
i
]
=
'\u3000'
;
}
else
if
(
c
[
i
]
<
'\
177
'
)
{
c
[
i
]
=
(
char
)
(
c
[
i
]
+
65248
);
}
}
return
new
String
(
c
);
}
/**
* 全角转半角
*
* @param input String.
* @return 半角字符串
*/
public
static
String
toDBC
(
String
input
)
{
return
toDBC
(
input
,
null
);
}
/**
* 替换全角为半角
*
* @param text 文本
* @param notConvertSet 不替换的字符集合
* @return 替换后的字符
*/
public
static
String
toDBC
(
String
text
,
Set
<
Character
>
notConvertSet
)
{
char
[]
c
=
text
.
toCharArray
();
for
(
int
i
=
0
;
i
<
c
.
length
;
i
++)
{
if
(
null
!=
notConvertSet
&&
notConvertSet
.
contains
(
c
[
i
]))
{
// 跳过不替换的字符
continue
;
}
if
(
c
[
i
]
==
'\u3000'
)
{
c
[
i
]
=
' '
;
}
else
if
(
c
[
i
]
>
'\
uFF00
'
&&
c
[
i
]
<
'\
uFF5F
'
)
{
c
[
i
]
=
(
char
)
(
c
[
i
]
-
65248
);
}
}
String
returnString
=
new
String
(
c
);
return
returnString
;
}
/**
* 数字金额大写转换 先写个完整的然后将如零拾替换成零
*
* @param n 数字
* @return 中文大写数字
*/
public
static
String
digitUppercase
(
double
n
)
{
String
[]
fraction
=
{
"角"
,
"分"
};
String
[]
digit
=
{
"零"
,
"壹"
,
"贰"
,
"叁"
,
"肆"
,
"伍"
,
"陆"
,
"柒"
,
"捌"
,
"玖"
};
String
[][]
unit
=
{
{
"元"
,
"万"
,
"亿"
},
{
""
,
"拾"
,
"佰"
,
"仟"
}
};
String
head
=
n
<
0
?
"负"
:
""
;
n
=
Math
.
abs
(
n
);
String
s
=
""
;
for
(
int
i
=
0
;
i
<
fraction
.
length
;
i
++)
{
s
+=
(
digit
[(
int
)
(
Math
.
floor
(
n
*
10
*
Math
.
pow
(
10
,
i
))
%
10
)]
+
fraction
[
i
]).
replaceAll
(
"(零.)+"
,
""
);
}
if
(
s
.
length
()
<
1
)
{
s
=
"整"
;
}
int
integerPart
=
(
int
)
Math
.
floor
(
n
);
for
(
int
i
=
0
;
i
<
unit
[
0
].
length
&&
integerPart
>
0
;
i
++)
{
String
p
=
""
;
for
(
int
j
=
0
;
j
<
unit
[
1
].
length
&&
n
>
0
;
j
++)
{
p
=
digit
[
integerPart
%
10
]
+
unit
[
1
][
j
]
+
p
;
integerPart
=
integerPart
/
10
;
}
s
=
p
.
replaceAll
(
"(零.)*零$"
,
""
).
replaceAll
(
"^$"
,
"零"
)
+
unit
[
0
][
i
]
+
s
;
}
return
head
+
s
.
replaceAll
(
"(零.)*零元"
,
"元"
).
replaceFirst
(
"(零.)+"
,
""
).
replaceAll
(
"(零.)+"
,
"零"
).
replaceAll
(
"^整$"
,
"零元整"
);
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/utils/CookieUtils.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.utils
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLDecoder
;
import
java.net.URLEncoder
;
import
javax.servlet.http.Cookie
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
/**
* Cookie工具类
* @author 黄炳桂 516821420@qq.com
* @version 2013-01-15
*/
public
class
CookieUtils
{
/**
* 设置 Cookie(生成时间为1天)
* @param name 名称
* @param value 值
*/
public
static
void
setCookie
(
HttpServletResponse
response
,
String
name
,
String
value
)
{
setCookie
(
response
,
name
,
value
,
60
*
60
*
24
);
}
/**
* 设置 Cookie
* @param name 名称
* @param value 值
* @param maxAge 生存时间(单位秒)
* @param uri 路径
*/
public
static
void
setCookie
(
HttpServletResponse
response
,
String
name
,
String
value
,
String
path
)
{
setCookie
(
response
,
name
,
value
,
path
,
60
*
60
*
24
);
}
/**
* 设置 Cookie
* @param name 名称
* @param value 值
* @param maxAge 生存时间(单位秒)
* @param uri 路径
*/
public
static
void
setCookie
(
HttpServletResponse
response
,
String
name
,
String
value
,
int
maxAge
)
{
setCookie
(
response
,
name
,
value
,
"/"
,
maxAge
);
}
/**
* 设置 Cookie
* @param name 名称
* @param value 值
* @param maxAge 生存时间(单位秒)
* @param uri 路径
*/
public
static
void
setCookie
(
HttpServletResponse
response
,
String
name
,
String
value
,
String
path
,
int
maxAge
)
{
Cookie
cookie
=
new
Cookie
(
name
,
null
);
cookie
.
setPath
(
path
);
cookie
.
setMaxAge
(
maxAge
);
try
{
cookie
.
setValue
(
URLEncoder
.
encode
(
value
,
"utf-8"
));
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
response
.
addCookie
(
cookie
);
}
/**
* 获得指定Cookie的值
* @param name 名称
* @return 值
*/
public
static
String
getCookie
(
HttpServletRequest
request
,
String
name
)
{
return
getCookie
(
request
,
null
,
name
,
false
);
}
/**
* 获得指定Cookie的值,并删除。
* @param name 名称
* @return 值
*/
public
static
String
getCookie
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
name
)
{
return
getCookie
(
request
,
response
,
name
,
true
);
}
/**
* 获得指定Cookie的值
* @param request 请求对象
* @param response 响应对象
* @param name 名字
* @param isRemove 是否移除
* @return 值
*/
public
static
String
getCookie
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
name
,
boolean
isRemove
)
{
String
value
=
null
;
Cookie
[]
cookies
=
request
.
getCookies
();
if
(
cookies
!=
null
)
{
for
(
Cookie
cookie
:
cookies
)
{
if
(
cookie
.
getName
().
equals
(
name
))
{
try
{
value
=
URLDecoder
.
decode
(
cookie
.
getValue
(),
"utf-8"
);
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
if
(
isRemove
)
{
cookie
.
setMaxAge
(
0
);
response
.
addCookie
(
cookie
);
}
}
}
}
return
value
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/common/utils/DateUtils.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://github.com/HuangBingGui/jeespring">jeespring</a> All rights reserved.
*/
package
com.jeespring.common.utils
;
import
java.text.ParseException
;
import
java.util.Date
;
import
org.apache.commons.lang3.time.DateFormatUtils
;
/**
* 日期工具类, 继承org.apache.commons.lang.time.DateUtils类
* @author 黄炳桂 516821420@qq.com
* @version 2014-4-15
*/
public
class
DateUtils
extends
org
.
apache
.
commons
.
lang3
.
time
.
DateUtils
{
private
static
String
[]
parsePatterns
=
{
"yyyy-MM-dd"
,
"yyyy-MM-dd HH:mm:ss"
,
"yyyy-MM-dd HH:mm"
,
"yyyy-MM"
,
"yyyy/MM/dd"
,
"yyyy/MM/dd HH:mm:ss"
,
"yyyy/MM/dd HH:mm"
,
"yyyy/MM"
,
"yyyy.MM.dd"
,
"yyyy.MM.dd HH:mm:ss"
,
"yyyy.MM.dd HH:mm"
,
"yyyy.MM"
};
/**
* 得到当前日期字符串 格式(yyyy-MM-dd)
*/
public
static
String
getDate
()
{
return
getDate
(
"yyyy-MM-dd"
);
}
/**
* 得到当前日期字符串 格式(yyyy-MM-dd) pattern可以为:"yyyy-MM-dd" "HH:mm:ss" "E"
*/
public
static
String
getDate
(
String
pattern
)
{
return
DateFormatUtils
.
format
(
new
Date
(),
pattern
);
}
/**
* 得到日期字符串 默认格式(yyyy-MM-dd) pattern可以为:"yyyy-MM-dd" "HH:mm:ss" "E"
*/
public
static
String
formatDate
(
Date
date
,
Object
...
pattern
)
{
String
formatDate
=
null
;
if
(
pattern
!=
null
&&
pattern
.
length
>
0
)
{
formatDate
=
DateFormatUtils
.
format
(
date
,
pattern
[
0
].
toString
());
}
else
{
formatDate
=
DateFormatUtils
.
format
(
date
,
"yyyy-MM-dd"
);
}
return
formatDate
;
}
/**
* 得到日期时间字符串,转换格式(yyyy-MM-dd HH:mm:ss)
*/
public
static
String
formatDateTime
(
Date
date
)
{
return
formatDate
(
date
,
"yyyy-MM-dd HH:mm:ss"
);
}
/**
* 得到当前时间字符串 格式(HH:mm:ss)
*/
public
static
String
getTime
()
{
return
formatDate
(
new
Date
(),
"HH:mm:ss"
);
}
/**
* 得到当前日期和时间字符串 格式(yyyy-MM-dd HH:mm:ss)
*/
public
static
String
getDateTime
()
{
return
formatDate
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
);
}
/**
* 得到当前年份字符串 格式(yyyy)
*/
public
static
String
getYear
()
{
return
formatDate
(
new
Date
(),
"yyyy"
);
}
/**
* 得到当前月份字符串 格式(MM)
*/
public
static
String
getMonth
()
{
return
formatDate
(
new
Date
(),
"MM"
);
}
/**
* 得到当天字符串 格式(dd)
*/
public
static
String
getDay
()
{
return
formatDate
(
new
Date
(),
"dd"
);
}
/**
* 得到当前星期字符串 格式(E)星期几
*/
public
static
String
getWeek
()
{
return
formatDate
(
new
Date
(),
"E"
);
}
/**
* 日期型字符串转化为日期 格式
* { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm",
* "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm",
* "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm" }
*/
public
static
Date
parseDate
(
Object
str
)
{
if
(
str
==
null
){
return
null
;
}
try
{
return
parseDate
(
str
.
toString
(),
parsePatterns
);
}
catch
(
ParseException
e
)
{
return
null
;
}
}
/**
* 获取过去的天数
* @param date
* @return
*/
public
static
long
pastDays
(
Date
date
)
{
long
t
=
new
Date
().
getTime
()-
date
.
getTime
();
return
t
/(
24
*
60
*
60
*
1000
);
}
/**
* 获取过去的小时
* @param date
* @return
*/
public
static
long
pastHour
(
Date
date
)
{
long
t
=
new
Date
().
getTime
()-
date
.
getTime
();
return
t
/(
60
*
60
*
1000
);
}
/**
* 获取过去的分钟
* @param date
* @return
*/
public
static
long
pastMinutes
(
Date
date
)
{
long
t
=
new
Date
().
getTime
()-
date
.
getTime
();
return
t
/(
60
*
1000
);
}
/**
* 转换为时间(天,时:分:秒.毫秒)
* @param timeMillis
* @return
*/
public
static
String
formatDateTime
(
long
timeMillis
){
long
day
=
timeMillis
/(
24
*
60
*
60
*
1000
);
long
hour
=
(
timeMillis
/(
60
*
60
*
1000
)-
day
*
24
);
long
min
=
((
timeMillis
/(
60
*
1000
))-
day
*
24
*
60
-
hour
*
60
);
long
s
=
(
timeMillis
/
1000
-
day
*
24
*
60
*
60
-
hour
*
60
*
60
-
min
*
60
);
long
sss
=
(
timeMillis
-
day
*
24
*
60
*
60
*
1000
-
hour
*
60
*
60
*
1000
-
min
*
60
*
1000
-
s
*
1000
);
return
(
day
>
0
?
day
+
","
:
""
)+
hour
+
":"
+
min
+
":"
+
s
+
"."
+
sss
;
}
/**
* 获取两个日期之间的天数
*
* @param before
* @param after
* @return
*/
public
static
double
getDistanceOfTwoDate
(
Date
before
,
Date
after
)
{
long
beforeTime
=
before
.
getTime
();
long
afterTime
=
after
.
getTime
();
return
(
afterTime
-
beforeTime
)
/
(
1000
*
60
*
60
*
24
);
}
/**
* @param args
* @throws ParseException
*/
// public static void main(String[] args) throws ParseException {
// System.out.println(formatDate(parseDate("2010/3/6")));
// System.out.println(getDate("yyyy年MM月dd日 E"));
// long time = new Date().getTime()-parseDate("2012-11-19").getTime();
// System.out.println(time/(24*60*60*1000));
// }
}
Prev
1
2
3
4
5
6
7
8
9
…
19
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment