ruoyiåå°ç®¡çç³»ç»æ¡æ¶ï¼

Â
æ¥ä¸æ¥æä»¬ï¼è¾¹ç代ç è¾¹åæä»£ç ï¼
ä¸ãcommonå
----constantå
constant.java---------éç¨å¸¸éä¿¡æ¯
package com.ruoyi.common.constant;
/**
* éç¨å¸¸éä¿¡æ¯
*
* @author ruoyi
*/
public class Constants
{
/**
* UTF-8 å符é
*/
public static final String UTF8 = "UTF-8";
/**
* éç¨æåæ è¯
*/
public static final String SUCCESS = "0";
/**
* éç¨å¤±è´¥æ è¯
*/
public static final String FAIL = "1";
/**
* ç»å½æå
*/
public static final String LOGIN_SUCCESS = "Success";
/**
* 注é
*/
public static final String LOGOUT = "Logout";
/**
* ç»å½å¤±è´¥
*/
public static final String LOGIN_FAIL = "Error";
/**
* èªå¨å»é¤è¡¨åç¼
*/
public static String AUTO_REOMVE_PRE = "true";
/**
* å½åè®°å½èµ·å§ç´¢å¼
*/
public static String PAGE_NUM = "pageNum";
/**
* æ¯é¡µæ¾ç¤ºè®°å½æ°
*/
public static String PAGE_SIZE = "pageSize";
/**
* æåºå
*/
public static String ORDER_BY_COLUMN = "orderByColumn";
/**
* æåºçæ¹å "desc" æè
"asc".
*/
public static String IS_ASC = "isAsc";
}
View Code
Â
PermissionConstants.java-----------æééç¨å¸¸é
1 package com.ruoyi.common.constant;
2
3 /**
4 * æééç¨å¸¸é
5 *
6 * @author ruoyi
7 */
8 public class PermissionConstants
9 {
10 /** æ°å¢æé */
11 public static final String ADD_PERMISSION = "add";
12
13 /** ä¿®æ¹æé */
14 public static final String EDIT_PERMISSION = "edit";
15
16 /** å 餿é */
17 public static final String REMOVE_PERMISSION = "remove";
18
19 /** å¯¼åºæé */
20 public static final String EXPORT_PERMISSION = "export";
21
22 /** æ¾ç¤ºæé */
23 public static final String VIEW_PERMISSION = "view";
24
25 /** æ¥è¯¢æé */
26 public static final String LIST_PERMISSION = "list";
27 }
View Code
ScheduleConstants.java------------------ä»»å¡è°åº¦éç¨å¸¸é
1 package com.ruoyi.common.constant;
2
3 /**
4 * ä»»å¡è°åº¦éç¨å¸¸é
5 *
6 * @author ruoyi
7 */
8 public interface ScheduleConstants
9 {
10 public static final String TASK_CLASS_NAME = "__TASK_CLASS_NAME__";
11
12 public static final String TASK_PROPERTIES = "__TASK_PROPERTIES__";
13
14 /** é»è®¤ */
15 public static final String MISFIRE_DEFAULT = "0";
16
17 /** ç«å³è§¦åæ§è¡ */
18 public static final String MISFIRE_IGNORE_MISFIRES = "1";
19
20 /** 触å䏿¬¡æ§è¡ */
21 public static final String MISFIRE_FIRE_AND_PROCEED = "2";
22
23 /** ä¸è§¦åç«å³æ§è¡ */
24 public static final String MISFIRE_DO_NOTHING = "3";
25
26 public enum Status
27 {
28 /**
29 * æ£å¸¸
30 */
31 NORMAL("0"),
32 /**
33 * æå
34 */
35 PAUSE("1");
36
37 private String value;
38
39 private Status(String value)
40 {
41 this.value = value;
42 }
43
44 public String getValue()
45 {
46 return value;
47 }
48 }
49 }
View Code
ShiroConstants.java-----------shiroéç¨å¸¸é
1 package com.ruoyi.common.constant;
2
3 /**
4 * Shiroéç¨å¸¸é
5 *
6 * @author ruoyi
7 */
8 public interface ShiroConstants
9 {
10 /**
11 * å½åç»å½çç¨æ·
12 */
13 public static final String CURRENT_USER = "currentUser";
14
15 /**
16 * ç¨æ·å
17 */
18 public static final String CURRENT_USERNAME = "username";
19
20 /**
21 * æ¶æ¯key
22 */
23 public static String MESSAGE = "message";
24
25 /**
26 * é误key
27 */
28 public static String ERROR = "errorMsg";
29
30 /**
31 * ç¼ç æ ¼å¼
32 */
33 public static String ENCODING = "UTF-8";
34
35 /**
36 * å½åå¨çº¿ä¼è¯
37 */
38 public String ONLINE_SESSION = "online_session";
39
40 /**
41 * éªè¯ç key
42 */
43 public static final String CURRENT_CAPTCHA = "captcha";
44
45 /**
46 * éªè¯ç å¼å
³
47 */
48 public static final String CURRENT_ENABLED = "captchaEnabled";
49
50 /**
51 * éªè¯ç å¼å
³
52 */
53 public static final String CURRENT_TYPE = "captchaType";
54
55 /**
56 * éªè¯ç
57 */
58 public static final String CURRENT_VALIDATECODE = "validateCode";
59
60 /**
61 * éªè¯ç é误
62 */
63 public static final String CAPTCHA_ERROR = "captchaError";
64 }
View Code
UserConstants.java--------------ç¨æ·å¸¸éä¿¡æ¯
package com.ruoyi.common.constant;
/**
* ç¨æ·å¸¸éä¿¡æ¯
*
* @author ruoyi
*/
public class UserConstants
{
/** æ£å¸¸ç¶æ */
public static final String NORMAL = "0";
/** å¼å¸¸ç¶æ */
public static final String EXCEPTION = "1";
/** ç¨æ·å°ç¦ç¶æ */
public static final String USER_BLOCKED = "1";
/** è§è²å°ç¦ç¶æ */
public static final String ROLE_BLOCKED = "1";
/** é¨é¨æ£å¸¸ç¶æ */
public static final String DEPT_NORMAL = "0";
/**
* ç¨æ·åé¿åº¦éå¶
*/
public static final int USERNAME_MIN_LENGTH = 2;
public static final int USERNAME_MAX_LENGTH = 20;
/** ç»å½åç§°æ¯å¦å¯ä¸çè¿åç»æç */
public final static String USER_NAME_UNIQUE = "0";
public final static String USER_NAME_NOT_UNIQUE = "1";
/** ææºå·ç æ¯å¦å¯ä¸çè¿åç»æ */
public final static String USER_PHONE_UNIQUE = "0";
public final static String USER_PHONE_NOT_UNIQUE = "1";
/** e-mail æ¯å¦å¯ä¸çè¿åç»æ */
public final static String USER_EMAIL_UNIQUE = "0";
public final static String USER_EMAIL_NOT_UNIQUE = "1";
/** é¨é¨åç§°æ¯å¦å¯ä¸çè¿åç»æç */
public final static String DEPT_NAME_UNIQUE = "0";
public final static String DEPT_NAME_NOT_UNIQUE = "1";
/** è§è²åç§°æ¯å¦å¯ä¸çè¿åç»æç */
public final static String ROLE_NAME_UNIQUE = "0";
public final static String ROLE_NAME_NOT_UNIQUE = "1";
/** å²ä½åç§°æ¯å¦å¯ä¸çè¿åç»æç */
public final static String POST_NAME_UNIQUE = "0";
public final static String POST_NAME_NOT_UNIQUE = "1";
/** è§è²æéæ¯å¦å¯ä¸çè¿åç»æç */
public final static String ROLE_KEY_UNIQUE = "0";
public final static String ROLE_KEY_NOT_UNIQUE = "1";
/** å²ä½ç¼ç æ¯å¦å¯ä¸çè¿åç»æç */
public final static String POST_CODE_UNIQUE = "0";
public final static String POST_CODE_NOT_UNIQUE = "1";
/** èååç§°æ¯å¦å¯ä¸çè¿åç»æç */
public final static String MENU_NAME_UNIQUE = "0";
public final static String MENU_NAME_NOT_UNIQUE = "1";
/** åå
¸ç±»åæ¯å¦å¯ä¸çè¿åç»æç */
public final static String DICT_TYPE_UNIQUE = "0";
public final static String DICT_TYPE_NOT_UNIQUE = "1";
/** åæ°é®åæ¯å¦å¯ä¸çè¿åç»æç */
public final static String CONFIG_KEY_UNIQUE = "0";
public final static String CONFIG_KEY_NOT_UNIQUE = "1";
/**
* å¯ç é¿åº¦éå¶
*/
public static final int PASSWORD_MIN_LENGTH = 5;
public static final int PASSWORD_MAX_LENGTH = 20;
/**
* ææºå·ç æ ¼å¼éå¶
*/
public static final String MOBILE_PHONE_NUMBER_PATTERN = "^0{0,1}(13[0-9]|15[0-9]|14[0-9]|18[0-9])[0-9]{8}$";
/**
* é®ç®±æ ¼å¼éå¶
*/
public static final String EMAIL_PATTERN = "^((([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?";
}
View Code
Â
--exceptionå
-----fileå ----æä»¶å¼å¸¸å¤çç±»
FileNameLengthLimitExceededException.java---------æä»¶é¿åº¦è¿é¿å¼å¸¸
package com.ruoyi.common.exception.file;
import org.apache.commons.fileupload.FileUploadException;
/**
* æä»¶åè¶
é¿ è¯¯å¼å¸¸ç±»
*
* @author ruoyi
*/
public class FileNameLengthLimitExceededException extends FileUploadException
{
private static final long serialVersionUID = 1L;
private int length;
private int maxLength;
private String filename;
public FileNameLengthLimitExceededException(String filename, int length, int maxLength)
{
super("file name : [" + filename + "], length : [" + length + "], max length : [" + maxLength + "]");
this.length = length;
this.maxLength = maxLength;
this.filename = filename;
}
public String getFilename()
{
return filename;
}
public int getLength()
{
return length;
}
public int getMaxLength()
{
return maxLength;
}
}
View Code
InvalidExtensionException.java-------------æä»¶ä¸ä¼ å¼å¸¸
package com.ruoyi.common.exception.file;
import java.util.Arrays;
import org.apache.commons.fileupload.FileUploadException;
/**
* æä»¶ä¸ä¼ 误å¼å¸¸ç±»
*
* @author ruoyi
*/
public class InvalidExtensionException extends FileUploadException
{
private static final long serialVersionUID = 1L;
private String[] allowedExtension;
private String extension;
private String filename;
public InvalidExtensionException(String[] allowedExtension, String extension, String filename)
{
super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]");
this.allowedExtension = allowedExtension;
this.extension = extension;
this.filename = filename;
}
public String[] getAllowedExtension()
{
return allowedExtension;
}
public String getExtension()
{
return extension;
}
public String getFilename()
{
return filename;
}
public static class InvalidImageExtensionException extends InvalidExtensionException
{
private static final long serialVersionUID = 1L;
public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename)
{
super(allowedExtension, extension, filename);
}
}
public static class InvalidFlashExtensionException extends InvalidExtensionException
{
private static final long serialVersionUID = 1L;
public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename)
{
super(allowedExtension, extension, filename);
}
}
public static class InvalidMediaExtensionException extends InvalidExtensionException
{
private static final long serialVersionUID = 1L;
public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename)
{
super(allowedExtension, extension, filename);
}
}
}
View Code
------jobå
TaskException.java-------计åçç¥å¼å¸¸ç±»
1 package com.ruoyi.common.exception.job;
2
3 /**
4 * 计åçç¥å¼å¸¸
5 *
6 * @author ruoyi
7 */
8 public class TaskException extends Exception
9 {
10 private static final long serialVersionUID = 1L;
11
12 private Code code;
13
14 public TaskException(String msg, Code code)
15 {
16 this(msg, code, null);
17 }
18
19 public TaskException(String msg, Code code, Exception nestedEx)
20 {
21 super(msg, nestedEx);
22 this.code = code;
23 }
24
25 public Code getCode()
26 {
27 return code;
28 }
29
30 public enum Code
31 {
32 TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE
33 }
34 }
View Code
-----------------------------
DemoModeException.java-------æ¼ç¤ºæ¨¡å¼å¼å¸¸
package com.ruoyi.common.exception;
/**
* æ¼ç¤ºæ¨¡å¼å¼å¸¸
*
* @author ruoyi
*/
public class DemoModeException extends RuntimeException
{
private static final long serialVersionUID = 1L;
public DemoModeException()
{
}
}
View Code
RRException.java--------èªå®ä¹å¼å¸¸
package com.ruoyi.common.exception;
/**
* èªå®ä¹å¼å¸¸
*
*/
public class RRException extends RuntimeException {
private static final long serialVersionUID = 1L;
private String msg;
private int code = 500;
public RRException(String msg) {
super(msg);
this.msg = msg;
}
public RRException(String msg, Throwable e) {
super(msg, e);
this.msg = msg;
}
public RRException(String msg, int code) {
super(msg);
this.msg = msg;
this.code = code;
}
public RRException(String msg, int code, Throwable e) {
super(msg, e);
this.msg = msg;
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
View Code
Â
------supportå
CharsetKit.java-------å符éå·¥å
·ç±»
package com.ruoyi.common.support;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import com.ruoyi.common.utils.StringUtils;
/**
* å符éå·¥å
·ç±»
*
* @author ruoyi
*/
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();
}
}
View Code
Convert.java-----------ç±»å转æ¢å¨
package com.ruoyi.common.support;
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;
import com.ruoyi.common.utils.StringUtils;
/**
* ç±»å转æ¢å¨
*
* @author ruoyi
*/
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("^æ´$", "é¶å
æ´");
}
}
View Code
StrFormatter.java---------åç¬¦ä¸²æ ¼å¼å
package com.ruoyi.common.support;
import com.ruoyi.common.utils.StringUtils;
/**
* åç¬¦ä¸²æ ¼å¼å
*
* @author ruoyi
*/
public class StrFormatter
{
public static final String EMPTY_JSON = "{}";
public static final char C_BACKSLASH = \'\\\';
public static final char C_DELIM_START = \'{\';
public static final char C_DELIM_END = \'}\';
/**
* æ ¼å¼åå符串<br>
* æ¤æ¹æ³åªæ¯ç®åå°å ä½ç¬¦ {} æç
§é¡ºåºæ¿æ¢ä¸ºåæ°<br>
* 妿æ³è¾åº {} ä½¿ç¨ \\è½¬ä¹ { å³å¯ï¼å¦ææ³è¾åº {} ä¹åç \ 使ç¨å转ä¹ç¬¦ \\\\ å³å¯<br>
* ä¾ï¼<br>
* é常使ç¨ï¼format("this is {} for {}", "a", "b") -> this is a for b<br>
* 转ä¹{}ï¼ format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
* 转ä¹\ï¼ format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
*
* @param strPattern å符串模æ¿
* @param argArray åæ°å表
* @return ç»æ
*/
public static String format(final String strPattern, final Object... argArray)
{
if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray))
{
return strPattern;
}
final int strPatternLength = strPattern.length();
// åå§åå®ä¹å¥½çé¿åº¦ä»¥è·å¾æ´å¥½çæ§è½
StringBuilder sbuf = new StringBuilder(strPatternLength + 50);
int handledPosition = 0;
int delimIndex;// å ä½ç¬¦æå¨ä½ç½®
for (int argIndex = 0; argIndex < argArray.length; argIndex++)
{
delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition);
if (delimIndex == -1)
{
if (handledPosition == 0)
{
return strPattern;
}
else
{ // å符串模æ¿å©ä½é¨åä¸åå
å«å ä½ç¬¦ï¼å å
¥å©ä½é¨ååè¿åç»æ
sbuf.append(strPattern, handledPosition, strPatternLength);
return sbuf.toString();
}
}
else
{
if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH)
{
if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH)
{
// 转ä¹ç¬¦ä¹åè¿æä¸ä¸ªè½¬ä¹ç¬¦ï¼å ä½ç¬¦ä¾æ§ææ
sbuf.append(strPattern, handledPosition, delimIndex - 1);
sbuf.append(Convert.utf8Str(argArray[argIndex]));
handledPosition = delimIndex + 2;
}
else
{
// å ä½ç¬¦è¢«è½¬ä¹
argIndex--;
sbuf.append(strPattern, handledPosition, delimIndex - 1);
sbuf.append(C_DELIM_START);
handledPosition = delimIndex + 1;
}
}
else
{
// æ£å¸¸å ä½ç¬¦
sbuf.append(strPattern, handledPosition, delimIndex);
sbuf.append(Convert.utf8Str(argArray[argIndex]));
handledPosition = delimIndex + 2;
}
}
}
// å å
¥æåä¸ä¸ªå ä½ç¬¦åææçå符
sbuf.append(strPattern, handledPosition, strPattern.length());
return sbuf.toString();
}
}
View Code
Â
-utilså
------beanå
BeanUtils.java-------Beanå·¥å
·ç±»
package com.ruoyi.common.utils.bean;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Bean å·¥å
·ç±»
*
* @author ruoyi
*/
public class BeanUtils
{
/** Beanæ¹æ³åä¸å±æ§åå¼å§ç䏿 */
private static final int BEAN_METHOD_PROP_INDEX = 3;
/** * å¹é
getteræ¹æ³çæ£åè¡¨è¾¾å¼ */
private static final Pattern GET_PATTERN = Pattern.compile("get(\\p{javaUpperCase}\\w*)");
/** * å¹é
setteræ¹æ³çæ£åè¡¨è¾¾å¼ */
private static final Pattern SET_PATTERN = Pattern.compile("set(\\p{javaUpperCase}\\w*)");
/**
* Bean屿§å¤å¶å·¥å
·æ¹æ³ã
*
* @param dest ç®æ 对象
* @param src æºå¯¹è±¡
*/
public static void copyBeanProp(Object dest, Object src)
{
List<Method> destSetters = getSetterMethods(dest);
List<Method> srcGetters = getGetterMethods(src);
try
{
for (Method setter : destSetters)
{
for (Method getter : srcGetters)
{
if (isMethodPropEquals(setter.getName(), getter.getName())
&& setter.getParameterTypes()[0].equals(getter.getReturnType()))
{
setter.invoke(dest, getter.invoke(src));
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* è·å对象çsetteræ¹æ³ã
*
* @param obj 对象
* @return 对象çsetteræ¹æ³å表
*/
public static List<Method> getSetterMethods(Object obj)
{
// setteræ¹æ³å表
List<Method> setterMethods = new ArrayList<Method>();
// è·åæææ¹æ³
Method[] methods = obj.getClass().getMethods();
// æ¥æ¾setteræ¹æ³
for (Method method : methods)
{
Matcher m = SET_PATTERN.matcher(method.getName());
if (m.matches() && (method.getParameterTypes().length == 1))
{
setterMethods.add(method);
}
}
// è¿åsetteræ¹æ³å表
return setterMethods;
}
/**
* è·å对象çgetteræ¹æ³ã
*
* @param obj 对象
* @return 对象çgetteræ¹æ³å表
*/
public static List<Method> getGetterMethods(Object obj)
{
// getteræ¹æ³å表
List<Method> getterMethods = new ArrayList<Method>();
// è·åæææ¹æ³
Method[] methods = obj.getClass().getMethods();
// æ¥æ¾getteræ¹æ³
for (Method method : methods)
{
Matcher m = GET_PATTERN.matcher(method.getName());
if (m.matches() && (method.getParameterTypes().length == 0))
{
getterMethods.add(method);
}
}
// è¿ågetteræ¹æ³å表
return getterMethods;
}
/**
* æ£æ¥Beanæ¹æ³åä¸ç屿§åæ¯å¦ç¸çã<br>
* å¦getName()åsetName()屿§å䏿 ·ï¼getName()åsetAge()屿§åä¸ä¸æ ·ã
*
* @param m1 æ¹æ³å1
* @param m2 æ¹æ³å2
* @return 屿§å䏿 ·è¿åtrueï¼å¦åè¿åfalse
*/
public static boolean isMethodPropEquals(String m1, String m2)
{
return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX));
}
}
View Code
-------fileå
FileUtils.java-----------æä»¶å¤çå·¥å
·ç±»
package com.ruoyi.common.utils.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
/**
* æä»¶å¤çå·¥å
·ç±»
*
* @author ruoyi
*/
public class FileUtils
{
/**
* è¾åºæå®æä»¶çbyteæ°ç»
*
* @param filename æä»¶
* @return
*/
public static void writeBytes(String filePath, OutputStream os) throws IOException
{
FileInputStream fis = null;
try
{
File file = new File(filePath);
if (!file.exists())
{
throw new FileNotFoundException(filePath);
}
fis = new FileInputStream(file);
byte[] b = new byte[1024];
int length;
while ((length = fis.read(b)) > 0)
{
os.write(b, 0, length);
}
}
catch (IOException e)
{
throw e;
}
finally
{
if (os != null)
{
try
{
os.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
if (fis != null)
{
try
{
fis.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
}
}
/**
* å 餿件
*
* @param filePath æä»¶
* @return
*/
public static boolean deleteFile(String filePath)
{
boolean flag = false;
File file = new File(filePath);
// è·¯å¾ä¸ºæä»¶ä¸ä¸ä¸ºç©ºåè¿è¡å é¤
if (file.isFile() && file.exists())
{
file.delete();
flag = true;
}
return flag;
}
}
View Code
HttpUtils.java-----------éç¨httpåéæ¹æ³
package com.ruoyi.common.utils.http;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* éç¨httpåéæ¹æ³
*
* @author ruoyi
*/
public class HttpUtils
{
private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
/**
* åæå® URL åéGETæ¹æ³ç请æ±
*
* @param url åé请æ±ç URL
* @param param 请æ±åæ°ï¼è¯·æ±åæ°åºè¯¥æ¯ name1=value1&name2=value2 çå½¢å¼ã
* @return æä»£è¡¨è¿ç¨èµæºçååºç»æ
*/
public static String sendGet(String url, String param)
{
StringBuilder result = new StringBuilder();
BufferedReader in = null;
try
{
String urlNameString = url + "?" + param;
log.info("sendGet - {}", urlNameString);
URL realUrl = new URL(urlNameString);
URLConnection connection = realUrl.openConnection();
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.connect();
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = in.readLine()) != null)
{
result.append(line);
}
log.info("recv - {}", result);
}
catch (ConnectException e)
{
log.error("è°ç¨HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
}
catch (SocketTimeoutException e)
{
log.error("è°ç¨HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
}
catch (IOException e)
{
log.error("è°ç¨HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
}
catch (Exception e)
{
log.error("è°ç¨HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
}
finally
{
try
{
if (in != null)
{
in.close();
}
}
catch (Exception ex)
{
log.error("è°ç¨in.close Exception, url=" + url + ",param=" + param, ex);
}
}
return result.toString();
}
/**
* åæå® URL åéPOSTæ¹æ³ç请æ±
*
* @param url åé请æ±ç URL
* @param param 请æ±åæ°ï¼è¯·æ±åæ°åºè¯¥æ¯ name1=value1&name2=value2 çå½¢å¼ã
* @return æä»£è¡¨è¿ç¨èµæºçååºç»æ
*/
public static String sendPost(String url, String param)
{
PrintWriter out = null;
BufferedReader in = null;
StringBuilder result = new StringBuilder();
try
{
String urlNameString = url + "?" + param;
log.info("sendPost - {}", urlNameString);
URL realUrl = new URL(urlNameString);
URLConnection conn = realUrl.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("contentType", "utf-8");
conn.setDoOutput(true);
conn.setDoInput(true);
out = new PrintWriter(conn.getOutputStream());
out.print(param);
out.flush();
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
String line;
while ((line = in.readLine()) != null)
{
result.append(line);
}
log.info("recv - {}", result);
}
catch (ConnectException e)
{
log.error("è°ç¨HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
}
catch (SocketTimeoutException e)
{
log.error("è°ç¨HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
}
catch (IOException e)
{
log.error("è°ç¨HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
}
catch (Exception e)
{
log.error("è°ç¨HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
}
finally
{
try
{
if (out != null)
{
out.close();
}
if (in != null)
{
in.close();
}
}
catch (IOException ex)
{
log.error("è°ç¨in.close Exception, url=" + url + ",param=" + param, ex);
}
}
return result.toString();
}
public static String sendSSLPost(String url, String param)
{
StringBuilder result = new StringBuilder();
String urlNameString = url + "?" + param;
try
{
log.info("sendSSLPost - {}", urlNameString);
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
URL console = new URL(urlNameString);
HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("contentType", "utf-8");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setSSLSocketFactory(sc.getSocketFactory());
conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
conn.connect();
InputStream is = conn.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String ret = "";
while ((ret = br.readLine()) != null)
{
if (ret != null && !ret.trim().equals(""))
{
result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8"));
}
}
log.info("recv - {}", result);
conn.disconnect();
br.close();
}
catch (ConnectException e)
{
log.error("è°ç¨HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);
}
catch (SocketTimeoutException e)
{
log.error("è°ç¨HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);
}
catch (IOException e)
{
log.error("è°ç¨HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);
}
catch (Exception e)
{
log.error("è°ç¨HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);
}
return result.toString();
}
private static class TrustAnyTrustManager implements X509TrustManager
{
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
{
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
{
}
@Override
public X509Certificate[] getAcceptedIssuers()
{
return new X509Certificate[] {};
}
}
private static class TrustAnyHostnameVerifier implements HostnameVerifier
{
@Override
public boolean verify(String hostname, SSLSession session)
{
return true;
}
}
}
View Code
--------------------------------
AddressUtils.java-----------è·åå°åç±»
package com.ruoyi.common.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.common.config.Global;
import com.ruoyi.common.json.JSON;
import com.ruoyi.common.json.JSONObject;
import com.ruoyi.common.utils.http.HttpUtils;
/**
* è·åå°åç±»
*
* @author ruoyi
*/
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";
public static String getRealAddressByIP(String ip)
{
String address = "XX XX";
String localIp = "127.0.0.1";
if (localIp.equals(ip)){
address = "XX å
ç½IP";
return address;
}
if (Global.isAddressEnabled())
{
String rspStr = HttpUtils.sendPost(IP_URL, "ip=" + ip);
if (StringUtils.isEmpty(rspStr))
{
log.error("è·åå°çä½ç½®å¼å¸¸ {}", ip);
return address;
}
JSONObject obj;
try
{
obj = JSON.unmarshal(rspStr, JSONObject.class);
JSONObject data = obj.getObj("data");
String region = data.getStr("region");
String city = data.getStr("city");
address = region + " " + city;
}
catch (Exception e)
{
log.error("è·åå°çä½ç½®å¼å¸¸ {}", ip);
}
}
return address;
}
}
View Code
DateUtils.java------------æ¶é´å·¥å
·ç±»
package com.ruoyi.common.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.lang3.time.DateFormatUtils;
/**
* æ¶é´å·¥å
·ç±»
*
* @author ruoyi
*/
public class DateUtils
{
public static String YYYY = "yyyy";
public static String YYYY_MM = "yyyy-MM";
public static String YYYY_MM_DD = "yyyy-MM-dd";
public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
/**
* è·åå½åDate忥æ
*
* @return Date() å½åæ¥æ
*/
public static Date getNowDate()
{
return new Date();
}
/**
* è·åå½åæ¥æ, é»è®¤æ ¼å¼ä¸ºyyyy-MM-dd
*
* @return String
*/
public static String getDate()
{
return dateTimeNow(YYYY_MM_DD);
}
public static final String getTime()
{
return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
}
public static final String dateTimeNow()
{
return dateTimeNow(YYYYMMDDHHMMSS);
}
public static final String dateTimeNow(final String format)
{
return parseDateToStr(format, new Date());
}
public static final String dateTime(final Date date)
{
return parseDateToStr(YYYY_MM_DD, date);
}
public static final String parseDateToStr(final String format, final Date date)
{
return new SimpleDateFormat(format).format(date);
}
public static final Date dateTime(final String format, final String ts)
{
try
{
return new SimpleDateFormat(format).parse(ts);
}
catch (ParseException e)
{
throw new RuntimeException(e);
}
}
/**
* æ¥æè·¯å¾ å³å¹´/æ/æ¥ å¦2018/08/08
*/
public static final String datePath()
{
Date now = new Date();
return DateFormatUtils.format(now, "yyyy/MM/dd");
}
/**
* æ¥æè·¯å¾ å³å¹´/æ/æ¥ å¦20180808
*/
public static final String dateTime()
{
Date now = new Date();
return DateFormatUtils.format(now, "yyyyMMdd");
}
}
View Code
ExcelUtil.java---------Excelç¸å
³å¤çç±»
package com.ruoyi.common.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.apache.poi.hssf.usermodel.DVConstraint;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataValidation;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.config.Global;
import com.ruoyi.common.utils.StringUtils;
/**
* Excelç¸å
³å¤ç
*
* @author ruoyi
*/
public class ExcelUtil<T>
{
private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class);
public Class<T> clazz;
public ExcelUtil(Class<T> clazz)
{
this.clazz = clazz;
}
/**
* 对excel表åé»è®¤ç¬¬ä¸ä¸ªç´¢å¼åè½¬æ¢ælist
*
* @param input è¾å
¥æµ
* @return 转æ¢åéå
*/
public List<T> importExcel(InputStream input) throws Exception
{
return importExcel(StringUtils.EMPTY, input);
}
/**
* 对excel表åæå®è¡¨æ ¼ç´¢å¼åè½¬æ¢ælist
*
* @param sheetName è¡¨æ ¼ç´¢å¼å
* @param input è¾å
¥æµ
* @return 转æ¢åéå
*/
public List<T> importExcel(String sheetName, InputStream input) throws Exception
{
List<T> list = new ArrayList<T>();
Workbook workbook = WorkbookFactory.create(input);
Sheet sheet = null;
if (StringUtils.isNotEmpty(sheetName))
{
// 妿æå®sheetå,ååæå®sheetä¸çå
容.
sheet = workbook.getSheet(sheetName);
}
else
{
// å¦æä¼ å
¥çsheetåä¸åå¨åé»è®¤æå第1个sheet.
sheet = workbook.getSheetAt(0);
}
if (sheet == null)
{
throw new IOException("æä»¶sheetä¸åå¨");
}
int rows = sheet.getPhysicalNumberOfRows();
if (rows > 0)
{
// é»è®¤åºå·
int serialNum = 0;
// ææ°æ®æ¶æå¤ç å¾å°ç±»çææfield.
Field[] allFields = clazz.getDeclaredFields();
// å®ä¹ä¸ä¸ªmapç¨äºåæ¾åçåºå·åfield.
Map<Integer, Field> fieldsMap = new HashMap<Integer, Field>();
for (int col = 0; col < allFields.length; col++)
{
Field field = allFields[col];
// å°ææ³¨è§£çfieldåæ¾å°mapä¸.
if (field.isAnnotationPresent(Excel.class))
{
// 设置类çç§æåæ®µå±æ§å¯è®¿é®.
field.setAccessible(true);
fieldsMap.put(++serialNum, field);
}
}
for (int i = 1; i < rows; i++)
{
// ä»ç¬¬2è¡å¼å§åæ°æ®,é»è®¤ç¬¬ä¸è¡æ¯è¡¨å¤´.
Row row = sheet.getRow(i);
int cellNum = serialNum;
T entity = null;
for (int j = 0; j < cellNum; j++)
{
Cell cell = row.getCell(j);
if (cell == null)
{
continue;
}
else
{
// å
设置Cellçç±»åï¼ç¶åå°±å¯ä»¥æçº¯æ°åä½ä¸ºStringç±»åè¯»è¿æ¥äº
row.getCell(j).setCellType(CellType.STRING);
cell = row.getCell(j);
}
String c = cell.getStringCellValue();
if (StringUtils.isEmpty(c))
{
continue;
}
// 妿ä¸åå¨å®ä¾åæ°å»º.
entity = (entity == null ? clazz.newInstance() : entity);
// ä»mapä¸å¾å°å¯¹åºåçfield.
Field field = fieldsMap.get(j + 1);
// åå¾ç±»å,å¹¶æ ¹æ®å¯¹è±¡ç±»å设置å¼.
Class<?> fieldType = field.getType();
if (String.class == fieldType)
{
field.set(entity, String.valueOf(c));
}
else if ((Integer.TYPE == fieldType) || (Integer.class == fieldType))
{
field.set(entity, Integer.parseInt(c));
}
else if ((Long.TYPE == fieldType) || (Long.class == fieldType))
{
field.set(entity, Long.valueOf(c));
}
else if ((Float.TYPE == fieldType) || (Float.class == fieldType))
{
field.set(entity, Float.valueOf(c));
}
else if ((Short.TYPE == fieldType) || (Short.class == fieldType))
{
field.set(entity, Short.valueOf(c));
}
else if ((Double.TYPE == fieldType) || (Double.class == fieldType))
{
field.set(entity, Double.valueOf(c));
}
else if (Character.TYPE == fieldType)
{
if ((c != null) && (c.length() > 0))
{
field.set(entity, Character.valueOf(c.charAt(0)));
}
}
else if (java.util.Date.class == fieldType)
{
if (cell.getCellTypeEnum() == CellType.NUMERIC)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
cell.setCellValue(sdf.format(cell.getNumericCellValue()));
c = sdf.format(cell.getNumericCellValue());
}
else
{
c = cell.getStringCellValue();
}
}
else if (java.math.BigDecimal.class == fieldType)
{
c = cell.getStringCellValue();
}
}
if (entity != null)
{
list.add(entity);
}
}
}
return list;
}
/**
* 对listæ°æ®æºå°å
¶éé¢çæ°æ®å¯¼å
¥å°excel表å
*
* @param list å¯¼åºæ°æ®éå
* @param sheetName å·¥ä½è¡¨çåç§°
* @return ç»æ
*/
public AjaxResult exportExcel(List<T> list, String sheetName)
{
OutputStream out = null;
HSSFWorkbook workbook = null;
try
{
// å¾å°ææå®ä¹å段
Field[] allFields = clazz.getDeclaredFields();
List<Field> fields = new ArrayList<Field>();
// å¾å°ææfieldå¹¶åæ¾å°ä¸ä¸ªlistä¸.
for (Field field : allFields)
{
if (field.isAnnotationPresent(Excel.class))
{
fields.add(field);
}
}
// 产çå·¥ä½è对象
workbook = new HSSFWorkbook();
// excel2003䏿¯ä¸ªsheet䏿夿65536è¡
int sheetSize = 65536;
// ååºä¸å
±æå¤å°ä¸ªsheet.
double sheetNo = Math.ceil(list.size() / sheetSize);
for (int index = 0; index <= sheetNo; index++)
{
// 产çå·¥ä½è¡¨å¯¹è±¡
HSSFSheet sheet = workbook.createSheet();
if (sheetNo == 0)
{
workbook.setSheetName(index, sheetName);
}
else
{
// 设置工ä½è¡¨çåç§°.
workbook.setSheetName(index, sheetName + index);
}
HSSFRow row;
HSSFCell cell; // 产çåå
æ ¼
// 产çä¸è¡
row = sheet.createRow(0);
// åå
¥åä¸ªåæ®µçå头åç§°
for (int i = 0; i < fields.size(); i++)
{
Field field = fields.get(i);
Excel attr = field.getAnnotation(Excel.class);
// å建å
cell = row.createCell(i);
// 设置åä¸åå
¥å
容为Stringç±»å
cell.setCellType(CellType.STRING);
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
if (attr.name().indexOf("注ï¼") >= 0)
{
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
cellStyle.setFont(font);
cellStyle.setFillForegroundColor(HSSFColorPredefined.YELLOW.getIndex());
sheet.setColumnWidth(i, 6000);
}
else
{
HSSFFont font = workbook.createFont();
// ç²ä½æ¾ç¤º
font.setBold(true);
// éæ©éè¦ç¨å°çå使 ¼å¼
cellStyle.setFont(font);
cellStyle.setFillForegroundColor(HSSFColorPredefined.LIGHT_YELLOW.getIndex());
// 设置å宽
sheet.setColumnWidth(i, 3766);
}
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cellStyle.setWrapText(true);
cell.setCellStyle(cellStyle);
// åå
¥åå
cell.setCellValue(attr.name());
// å¦æè®¾ç½®äºæç¤ºä¿¡æ¯åé¼ æ æ¾ä¸å»æç¤º.
if (StringUtils.isNotEmpty(attr.prompt()))
{
// è¿éé»è®¤è®¾äº2-101åæç¤º.
setHSSFPrompt(sheet, "", attr.prompt(), 1, 100, i, i);
}
// å¦æè®¾ç½®äºcombo屿§åæ¬ååªè½éæ©ä¸è½è¾å
¥
if (attr.combo().length > 0)
{
// è¿éé»è®¤è®¾äº2-101ååªè½éæ©ä¸è½è¾å
¥.
setHSSFValidation(sheet, attr.combo(), 1, 100, i, i);
}
}
int startNo = index * sheetSize;
int endNo = Math.min(startNo + sheetSize, list.size());
// åå
¥åæ¡è®°å½,æ¯æ¡è®°å½å¯¹åºexcel表ä¸çä¸è¡
HSSFCellStyle cs = workbook.createCellStyle();
cs.setAlignment(HorizontalAlignment.CENTER);
cs.setVerticalAlignment(VerticalAlignment.CENTER);
for (int i = startNo; i < endNo; i++)
{
row = sheet.createRow(i + 1 - startNo);
// å¾å°å¯¼åºå¯¹è±¡.
T vo = (T) list.get(i);
for (int j = 0; j < fields.size(); j++)
{
// è·å¾field.
Field field = fields.get(j);
// 设置å®ä½ç±»ç§æå±æ§å¯è®¿é®
field.setAccessible(true);
Excel attr = field.getAnnotation(Excel.class);
try
{
// æ ¹æ®Excelä¸è®¾ç½®æ
åµå³å®æ¯å¦å¯¼åº,æäºæ
åµéè¦ä¿æä¸ºç©º,å¸æç¨æ·å¡«åè¿ä¸å.
if (attr.isExport())
{
// å建cell
cell = row.createCell(j);
cell.setCellStyle(cs);
try
{
if (String.valueOf(field.get(vo)).length() > 10)
{
throw new Exception("é¿åº¦è¶
è¿10ä½å°±ä¸ç¨è½¬æ°åäº");
}
// 妿å¯ä»¥è½¬ææ°åå导åºä¸ºæ°åç±»å
BigDecimal bc = new BigDecimal(String.valueOf(field.get(vo)));
cell.setCellType(CellType.NUMERIC);
cell.setCellValue(bc.doubleValue());
}
catch (Exception e)
{
cell.setCellType(CellType.STRING);
if (vo == null)
{
// å¦ææ°æ®åå¨å°±å¡«å
¥,ä¸åå¨å¡«å
¥ç©ºæ ¼.
cell.setCellValue("");
}
else
{
// å¦ææ°æ®åå¨å°±å¡«å
¥,ä¸åå¨å¡«å
¥ç©ºæ ¼.
cell.setCellValue(field.get(vo) == null ? "" : String.valueOf(field.get(vo)));
}
}
}
}
catch (Exception e)
{
log.error("导åºExcel失败{}", e.getMessage());
}
}
}
}
String filename = encodingFilename(sheetName);
out = new FileOutputStream(getAbsoluteFile(filename));
workbook.write(out);
return AjaxResult.success(filename);
}
catch (Exception e)
{
log.error("导åºExcelå¼å¸¸{}", e.getMessage());
return AjaxResult.error("导åºExcel失败ï¼è¯·èç³»ç½ç«ç®¡çåï¼");
}
finally
{
if (workbook != null)
{
try
{
workbook.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
if (out != null)
{
try
{
out.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
}
}
/**
* 设置åå
æ ¼ä¸æç¤º
*
* @param sheet è¦è®¾ç½®çsheet.
* @param promptTitle æ é¢
* @param promptContent å
容
* @param firstRow å¼å§è¡
* @param endRow ç»æè¡
* @param firstCol å¼å§å
* @param endCol ç»æå
* @return 设置好çsheet.
*/
public static HSSFSheet setHSSFPrompt(HSSFSheet sheet, String promptTitle, String promptContent, int firstRow,
int endRow, int firstCol, int endCol)
{
// æé constraint对象
DVConstraint constraint = DVConstraint.createCustomFormulaConstraint("DD1");
// åä¸ªåæ°å嫿¯ï¼èµ·å§è¡ãç»æ¢è¡ãèµ·å§åãç»æ¢å
CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
// æ°æ®æææ§å¯¹è±¡
HSSFDataValidation dataValidationView = new HSSFDataValidation(regions, constraint);
dataValidationView.createPromptBox(promptTitle, promptContent);
sheet.addValidationData(dataValidationView);
return sheet;
}
/**
* 设置æäºåçå¼åªè½è¾å
¥é¢å¶çæ°æ®,æ¾ç¤ºä¸ææ¡.
*
* @param sheet è¦è®¾ç½®çsheet.
* @param textlist ä¸ææ¡æ¾ç¤ºçå
容
* @param firstRow å¼å§è¡
* @param endRow ç»æè¡
* @param firstCol å¼å§å
* @param endCol ç»æå
* @return 设置好çsheet.
*/
public static HSSFSheet setHSSFValidation(HSSFSheet sheet, String[] textlist, int firstRow, int endRow,
int firstCol, int endCol)
{
// å è½½ä¸æå表å
容
DVConstraint constraint = DVConstraint.createExplicitListConstraint(textlist);
// è®¾ç½®æ°æ®æææ§å è½½å¨åªä¸ªåå
æ ¼ä¸,åä¸ªåæ°å嫿¯ï¼èµ·å§è¡ãç»æ¢è¡ãèµ·å§åãç»æ¢å
CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
// æ°æ®æææ§å¯¹è±¡
HSSFDataValidation dataValidationList = new HSSFDataValidation(regions, constraint);
sheet.addValidationData(dataValidationList);
return sheet;
}
/**
* ç¼ç æä»¶å
*/
public String encodingFilename(String filename)
{
filename = UUID.randomUUID().toString() + "_" + filename + ".xls";
return filename;
}
/**
* è·åä¸è½½è·¯å¾
*
* @param filename æä»¶åç§°
*/
public String getAbsoluteFile(String filename)
{
String downloadPath = Global.getDownloadPath() + filename;
File desc = new File(downloadPath);
if (!desc.getParentFile().exists())
{
desc.getParentFile().mkdirs();
}
return downloadPath;
}
}
View Code
IpUtils.java----------è·åipç±»
package com.ruoyi.common.utils;
import javax.servlet.http.HttpServletRequest;
/**
* è·åIPæ¹æ³
*
* @author ruoyi
*/
public class IpUtils
{
public static String getIpAddr(HttpServletRequest request)
{
if (request == null)
{
return "unknown";
}
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{
ip = request.getHeader("X-Forwarded-For");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{
ip = request.getHeader("X-Real-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{
ip = request.getRemoteAddr();
}
return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip;
}
}
View Code
MapDataUtil.java----------mapéç¨å¤çæ¹æ³
package com.ruoyi.common.utils;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
/**
* Mapéç¨å¤çæ¹æ³
*
* @author ruoyi
*/
public class MapDataUtil
{
public static Map<String, Object> convertDataMap(HttpServletRequest request)
{
Map<String, String[]> properties = request.getParameterMap();
Map<String, Object> returnMap = new HashMap<String, Object>();
Iterator<?> entries = properties.entrySet().iterator();
Map.Entry<?, ?> entry;
String name = "";
String value = "";
while (entries.hasNext())
{
entry = (Entry<?, ?>) entries.next();
name = (String) entry.getKey();
Object valueObj = entry.getValue();
if (null == valueObj)
{
value = "";
}
else if (valueObj instanceof String[])
{
String[] values = (String[]) valueObj;
for (int i = 0; i < values.length; i++)
{
value = values[i] + ",";
}
value = value.substring(0, value.length() - 1);
}
else
{
value = valueObj.toString();
}
returnMap.put(name, value);
}
return returnMap;
}
}
View Code
Md5Utils.java-----------MD5å 坿¹æ³
package com.ruoyi.common.utils;
import java.security.MessageDigest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Md5å 坿¹æ³
*
* @author ruoyi
*/
public class Md5Utils
{
private static final Logger log = LoggerFactory.getLogger(Md5Utils.class);
private static byte[] md5(String s)
{
MessageDigest algorithm;
try
{
algorithm = MessageDigest.getInstance("MD5");
algorithm.reset();
algorithm.update(s.getBytes("UTF-8"));
byte[] messageDigest = algorithm.digest();
return messageDigest;
}
catch (Exception e)
{
log.error("MD5 Error...", e);
}
return null;
}
private static final String toHex(byte hash[])
{
if (hash == null)
{
return null;
}
StringBuffer buf = new StringBuffer(hash.length * 2);
int i;
for (i = 0; i < hash.length; i++)
{
if ((hash[i] & 0xff) < 0x10)
{
buf.append("0");
}
buf.append(Long.toString(hash[i] & 0xff, 16));
}
return buf.toString();
}
public static String hash(String s)
{
try
{
return new String(toHex(md5(s)).getBytes("UTF-8"), "UTF-8");
}
catch (Exception e)
{
log.error("not supported charset...{}", e);
return s;
}
}
}
View Code
R.java------------è¿åæ°æ®
package com.ruoyi.common.utils;
import java.util.HashMap;
import java.util.Map;
/**
* è¿åæ°æ®
*
*/
public class R extends HashMap<String, Object> {
private static final long serialVersionUID = 1L;
public R() {
put("code", 0);
put("msg", "success");
}
public static R error() {
return error(500, "æªç¥å¼å¸¸ï¼è¯·è系管çå");
}
public static R error(String msg) {
return error(500, msg);
}
public static R error(int code, String msg) {
R r = new R();
r.put("code", code);
r.put("msg", msg);
return r;
}
public static R ok(String msg) {
R r = new R();
r.put("msg", msg);
return r;
}
public static R ok(Map<String, Object> map) {
R r = new R();
r.putAll(map);
return r;
}
public static R ok() {
return new R();
}
@Override
public R put(String key, Object value) {
super.put(key, value);
return this;
}
}
View Code
StringUtils.java------------å符串工å
·ç±»
package com.ruoyi.common.utils;
import java.util.Collection;
import java.util.Map;
import com.ruoyi.common.support.StrFormatter;
/**
* å符串工å
·ç±»
*
* @author ruoyi
*/
public class StringUtils extends org.apache.commons.lang3.StringUtils
{
/** 空å符串 */
private static final String NULLSTR = "";
/** ä¸å线 */
private static final char SEPARATOR = \'_\';
/**
* è·ååæ°ä¸ä¸ºç©ºå¼
*
* @param value defaultValue è¦å¤æçvalue
* @return value è¿åå¼
*/
public static <T> T nvl(T value, T defaultValue)
{
return value != null ? value : defaultValue;
}
/**
* * 夿ä¸ä¸ªCollectionæ¯å¦ä¸ºç©ºï¼ å
å«Listï¼Setï¼Queue
*
* @param coll è¦å¤æçCollection
* @return trueï¼ä¸ºç©º falseï¼é空
*/
public static boolean isEmpty(Collection<?> coll)
{
return isNull(coll) || coll.isEmpty();
}
/**
* * 夿ä¸ä¸ªCollectionæ¯å¦é空ï¼å
å«Listï¼Setï¼Queue
*
* @param coll è¦å¤æçCollection
* @return trueï¼é空 falseï¼ç©º
*/
public static boolean isNotEmpty(Collection<?> coll)
{
return !isEmpty(coll);
}
/**
* * 夿ä¸ä¸ªå¯¹è±¡æ°ç»æ¯å¦ä¸ºç©º
*
* @param objects è¦å¤æç对象æ°ç»
** @return trueï¼ä¸ºç©º falseï¼é空
*/
public static boolean isEmpty(Object[] objects)
{
return isNull(objects) || (objects.length == 0);
}
/**
* * 夿ä¸ä¸ªå¯¹è±¡æ°ç»æ¯å¦é空
*
* @param objects è¦å¤æç对象æ°ç»
* @return trueï¼é空 falseï¼ç©º
*/
public static boolean isNotEmpty(Object[] objects)
{
return !isEmpty(objects);
}
/**
* * 夿ä¸ä¸ªMapæ¯å¦ä¸ºç©º
*
* @param map è¦å¤æçMap
* @return trueï¼ä¸ºç©º falseï¼é空
*/
public static boolean isEmpty(Map<?, ?> map)
{
return isNull(map) || map.isEmpty();
}
/**
* * 夿ä¸ä¸ªMapæ¯å¦ä¸ºç©º
*
* @param map è¦å¤æçMap
* @return trueï¼é空 falseï¼ç©º
*/
public static boolean isNotEmpty(Map<?, ?> map)
{
return !isEmpty(map);
}
/**
* * 夿ä¸ä¸ªå符串æ¯å¦ä¸ºç©ºä¸²
*
* @param str String
* @return trueï¼ä¸ºç©º falseï¼é空
*/
public static boolean isEmpty(String str)
{
return isNull(str) || NULLSTR.equals(str.trim());
}
/**
* * 夿ä¸ä¸ªå符串æ¯å¦ä¸ºé空串
*
* @param str String
* @return trueï¼é空串 falseï¼ç©ºä¸²
*/
public static boolean isNotEmpty(String str)
{
return !isEmpty(str);
}
/**
* * 夿ä¸ä¸ªå¯¹è±¡æ¯å¦ä¸ºç©º
*
* @param object Object
* @return trueï¼ä¸ºç©º falseï¼é空
*/
public static boolean isNull(Object object)
{
return object == null;
}
/**
* * 夿ä¸ä¸ªå¯¹è±¡æ¯å¦é空
*
* @param object Object
* @return trueï¼é空 falseï¼ç©º
*/
public static boolean isNotNull(Object object)
{
return !isNull(object);
}
/**
* * 夿ä¸ä¸ªå¯¹è±¡æ¯å¦æ¯æ°ç»ç±»åï¼Javaåºæ¬åå«çæ°ç»ï¼
*
* @param object 对象
* @return trueï¼æ¯æ°ç» falseï¼ä¸æ¯æ°ç»
*/
public static boolean isArray(Object object)
{
return isNotNull(object) && object.getClass().isArray();
}
/**
* å»ç©ºæ ¼
*/
public static String trim(String str)
{
return (str == null ? "" : str.trim());
}
/**
* æªåå符串
*
* @param str å符串
* @param start å¼å§
* @return ç»æ
*/
public static String substring(final String str, int start)
{
if (str == null)
{
return NULLSTR;
}
if (start < 0)
{
start = str.length() + start;
}
if (start < 0)
{
start = 0;
}
if (start > str.length())
{
return NULLSTR;
}
return str.substring(start);
}
/**
* æªåå符串
*
* @param str å符串
* @param start å¼å§
* @param end ç»æ
* @return ç»æ
*/
public static String substring(final String str, int start, int end)
{
if (str == null)
{
return NULLSTR;
}
if (end < 0)
{
end = str.length() + end;
}
if (start < 0)
{
start = str.length() + start;
}
if (end > str.length())
{
end = str.length();
}
if (start > end)
{
return NULLSTR;
}
if (start < 0)
{
start = 0;
}
if (end < 0)
{
end = 0;
}
return str.substring(start, end);
}
/**
* æ ¼å¼åææ¬, {} 表示å ä½ç¬¦<br>
* æ¤æ¹æ³åªæ¯ç®åå°å ä½ç¬¦ {} æç
§é¡ºåºæ¿æ¢ä¸ºåæ°<br>
* 妿æ³è¾åº {} ä½¿ç¨ \\è½¬ä¹ { å³å¯ï¼å¦ææ³è¾åº {} ä¹åç \ 使ç¨å转ä¹ç¬¦ \\\\ å³å¯<br>
* ä¾ï¼<br>
* é常使ç¨ï¼format("this is {} for {}", "a", "b") -> this is a for b<br>
* 转ä¹{}ï¼ format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
* 转ä¹\ï¼ format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
*
* @param template ææ¬æ¨¡æ¿ï¼è¢«æ¿æ¢çé¨åç¨ {} 表示
* @param params åæ°å¼
* @return æ ¼å¼ååçææ¬
*/
public static String format(String template, Object... params)
{
if (isEmpty(params) || isEmpty(template))
{
return template;
}
return StrFormatter.format(template, params);
}
/**
* ä¸å线转驼峰å½å
*/
public static String toUnderScoreCase(String s)
{
if (s == null)
{
return null;
}
StringBuilder sb = new StringBuilder();
boolean upperCase = false;
for (int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
boolean nextUpperCase = true;
if (i < (s.length() - 1))
{
nextUpperCase = Character.isUpperCase(s.charAt(i + 1));
}
if ((i > 0) && Character.isUpperCase(c))
{
if (!upperCase || !nextUpperCase)
{
sb.append(SEPARATOR);
}
upperCase = true;
}
else
{
upperCase = false;
}
sb.append(Character.toLowerCase(c));
}
return sb.toString();
}
/**
* æ¯å¦å
å«å符串
*
* @param str éªè¯å符串
* @param strs å符串ç»
* @return å
å«è¿åtrue
*/
public static boolean inStringIgnoreCase(String str, String... strs)
{
if (str != null && strs != null)
{
for (String s : strs)
{
if (str.equalsIgnoreCase(trim(s)))
{
return true;
}
}
}
return false;
}
/**
* å°ä¸åçº¿å¤§åæ¹å¼å½åçå符串转æ¢ä¸ºé©¼å³°å¼ãå¦æè½¬æ¢åçä¸åçº¿å¤§åæ¹å¼å½åçå符串为空ï¼åè¿å空å符串ã ä¾å¦ï¼HELLO_WORLD->HelloWorld
*
* @param name 转æ¢åçä¸åçº¿å¤§åæ¹å¼å½åçå符串
* @return 转æ¢åç驼峰å¼å½åçå符串
*/
public static String convertToCamelCase(String name)
{
StringBuilder result = new StringBuilder();
// å¿«éæ£æ¥
if (name == null || name.isEmpty())
{
// 没å¿
è¦è½¬æ¢
return "";
}
else if (!name.contains("_"))
{
// ä¸å«ä¸å线ï¼ä»
å°é¦åæ¯å¤§å
return name.substring(0, 1).toUpperCase() + name.substring(1);
}
// ç¨ä¸å线å°åå§å符串åå²
String[] camels = name.split("_");
for (String camel : camels)
{
// è·³è¿åå§å符串ä¸å¼å¤´ãç»å°¾ç䏿¢çº¿æåéä¸å线
if (camel.isEmpty())
{
continue;
}
// é¦åæ¯å¤§å
result.append(camel.substring(0, 1).toUpperCase());
result.append(camel.substring(1).toLowerCase());
}
return result.toString();
}
}
View Code
YamlUtil.java----------é
ç½®å¤çå·¥å
·
package com.ruoyi.common.utils;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedHashMap;
import java.util.Map;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
import com.ruoyi.common.utils.StringUtils;
/**
* é
ç½®å¤çå·¥å
·ç±»
*
* @author yml
*/
public class YamlUtil
{
public static Map<?, ?> loadYaml(String fileName) throws FileNotFoundException
{
InputStream in = YamlUtil.class.getClassLoader().getResourceAsStream(fileName);
return StringUtils.isNotEmpty(fileName) ? (LinkedHashMap<?, ?>) new Yaml().load(in) : null;
}
public static void dumpYaml(String fileName, Map<?, ?> map) throws IOException
{
if (StringUtils.isNotEmpty(fileName))
{
FileWriter fileWriter = new FileWriter(YamlUtil.class.getResource(fileName).getFile());
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
Yaml yaml = new Yaml(options);
yaml.dump(map, fileWriter);
}
}
public static Object getProperty(Map<?, ?> map, Object qualifiedKey)
{
if (map != null && !map.isEmpty() && qualifiedKey != null)
{
String input = String.valueOf(qualifiedKey);
if (!input.equals(""))
{
if (input.contains("."))
{
int index = input.indexOf(".");
String left = input.substring(0, index);
String right = input.substring(index + 1, input.length());
return getProperty((Map<?, ?>) map.get(left), right);
}
else if (map.containsKey(input))
{
return map.get(input);
}
else
{
return null;
}
}
}
return null;
}
@SuppressWarnings("unchecked")
public static void setProperty(Map<?, ?> map, Object qualifiedKey, Object value)
{
if (map != null && !map.isEmpty() && qualifiedKey != null)
{
String input = String.valueOf(qualifiedKey);
if (!input.equals(""))
{
if (input.contains("."))
{
int index = input.indexOf(".");
String left = input.substring(0, index);
String right = input.substring(index + 1, input.length());
setProperty((Map<?, ?>) map.get(left), right, value);
}
else
{
((Map<Object, Object>) map).put(qualifiedKey, value);
}
}
}
}
}
View Code
Â
-------xsså
XssFilter.java-------鲿¢XSSæ»å»çè¿æ»¤å¨
package com.ruoyi.common.xss;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.StringUtils;
/**
* 鲿¢XSSæ»å»çè¿æ»¤å¨
*
* @author ruoyi
*/
public class XssFilter implements Filter
{
/**
* æé¤é¾æ¥
*/
public List<String> excludes = new ArrayList<>();
/**
* xssè¿æ»¤å¼å
³
*/
public boolean enabled = false;
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
String tempExcludes = filterConfig.getInitParameter("excludes");
String tempEnabled = filterConfig.getInitParameter("enabled");
if (StringUtils.isNotEmpty(tempExcludes))
{
String[] url = tempExcludes.split(",");
for (int i = 0; url != null && i < url.length; i++)
{
excludes.add(url[i]);
}
}
if (StringUtils.isNotEmpty(tempEnabled))
{
enabled = Boolean.valueOf(tempEnabled);
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
if (handleExcludeURL(req, resp))
{
chain.doFilter(request, response);
return;
}
XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest) request);
chain.doFilter(xssRequest, response);
}
private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response)
{
if (!enabled)
{
return true;
}
if (excludes == null || excludes.isEmpty())
{
return false;
}
String url = request.getServletPath();
for (String pattern : excludes)
{
Pattern p = Pattern.compile("^" + pattern);
Matcher m = p.matcher(url);
if (m.find())
{
return true;
}
}
return false;
}
@Override
public void destroy()
{
}
}
View Code
XssHttpServletRequestWrapper.java-----------XSSè¿æ»¤å¤ç
package com.ruoyi.common.xss;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;
/**
* XSSè¿æ»¤å¤ç
*
* @author ruoyi
*/
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
{
/**
* @param request
*/
public XssHttpServletRequestWrapper(HttpServletRequest request)
{
super(request);
}
@Override
public String[] getParameterValues(String name)
{
String[] values = super.getParameterValues(name);
if (values != null)
{
int length = values.length;
String[] escapseValues = new String[length];
for (int i = 0; i < length; i++)
{
// é²xssæ»å»åè¿æ»¤ååç©ºæ ¼
escapseValues[i] = Jsoup.clean(values[i], Whitelist.relaxed()).trim();
}
return escapseValues;
}
return super.getParameterValues(name);
}
}
View Code
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â