「java业务校验代码」java校验器
本篇文章给大家谈谈java业务校验代码,以及java校验器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
JAVA怎么做CRC校验的程序
实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同时也是效率最低的。
应用例子:龙珠cpu在线调试工具bbug.exe。它和龙珠cpu间通讯时,bbug发送一个字节cpu返回收到的字节,bbug确认是刚才发送字节后才继续发送下一个字节的。 实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。
应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。
bcc异或校验法(block check character)
实现方法:很多基于串口的通讯都用这种既简单又相当准确的方法。它就是把所有数据都和一个指定的初始值(通常是0)异或一次,最后的结果就是校验值,通常把它附在通讯数据的最后一起发送出去。接收方收到数据后自己也计算一次异或和校验值,如果和收到的校验值一致就说明收到的数据是完整的。
校验值计算的代码类似于:
unsigned uCRC=0;//校验初始值
for(int i=0;iDataLenth;i++) uCRC^=Data[i];
适用范围:适用于大多数要求不高的数据通讯。
应用例子:ic卡接口通讯、很多单片机系统的串口通讯都使用。 (Cyclic Redundancy Check)
实现方法:这是利用除法及余数的原理来进行错误检测的
如何使用java validation api进行参数校验
JAVA中通过Hibernate-Validation进行参数验证
在开发JAVA服务器端代码时,我们会遇到对外部传来的参数合法性进行验证,而hibernate-validator提供了一些常用的参数校验注解,我们可以拿来使用。
1.maven中引入hibernate-validator对应的jar:
dependency
groupIdorg.hibernate/groupId
artifactIdhibernate-validator/artifactId
version4.3.1.Final/version
/dependency
2.在Model中定义要校验的字段(即该字段不能为空,并且最大长度为14):
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
public class PayRequestDto {
/**
* 支付完成时间
**/
@NotEmpty(message="支付完成时间不能空")
@Size(max=14,message="支付完成时间长度不能超过{max}位")
private String payTime;
public String getPayTime() {
return payTime;
}
public void setPayTime(String payTime) {
this.payTime = payTime;
}
}
3.定义Validation工具类:
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import org.hibernate.validator.HibernateValidator;
import com.atai.framework.lang.AppException;
public class ValidationUtils {
/**
* 使用hibernate的注解来进行验证
*
*/
private static Validator validator = Validation
.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
/**
* 功能描述: br
* 〈注解验证参数〉
*
* @param obj
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static T void validate(T obj) {
SetConstraintViolationT constraintViolations = validator.validate(obj);
// 抛出检验异常
if (constraintViolations.size() 0) {
throw new AppException("0001", String.format("参数校验失败:%s", constraintViolations.iterator().next().getMessage()));
}
}
}
4.在代码中调用工具类进行参数校验:
ValidationUtils.validate(requestDto);
以下是对hibernate-validator中部分注解进行描述:
@AssertTrue 用于boolean字段,该字段只能为true
@AssertFalse 该字段的值只能为false
@CreditCardNumber 对信用卡号进行一个大致的验证
@DecimalMax 只能小于或等于该值
@DecimalMin 只能大于或等于该值
@Digits(integer=,fraction=) 检查是否是一种数字的整数、分数,小数位数的数字
@Email 检查是否是一个有效的email地址
@Future 检查该字段的日期是否是属于将来的日期
@Length(min=,max=) 检查所属的字段的长度是否在min和max之间,只能用于字符串
@Max 该字段的值只能小于或等于该值
@Min 该字段的值只能大于或等于该值
@NotNull 不能为null
@NotBlank 不能为空,检查时会将空格忽略
@NotEmpty 不能为空,这里的空是指空字符串
@Null 检查该字段为空
@Past 检查该字段的日期是在过去
@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
@Range(min=,max=,message=) 被注释的元素必须在合适的范围内
@Size(min=, max=) 检查该字段的size是否在min和max之间,可以是字符串、数组、集合、Map等
@URL(protocol=,host,port) 检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供的条件
@Valid 该注解主要用于字段为一个包含其他对象的集合或map或数组的字段,或该字段直接为一个其他对象的引用,这样在检查当前对象的同时也会检查该字段所引用的对象
校验FTP是否能正常连接的Java类
先写一个异常类,如果FTP的用户名或者密码不正确就通过这个异常类抛出异常,代码如下:
FTPException.java
public class FTPException extends Exception {
private int replyCode = -1;
public FTPException(String msg) {
super(msg);
}
public FTPException(String msg, String replyCode) {
super(msg);
try {
this.replyCode = Integer.parseInt(replyCode);
}
catch (NumberFormatException ex) {
this.replyCode = -1;
}
}
public int getReplyCode() {
return replyCode;
}
}
FtpUtil.java校验类代码如下:
import java.io.*;
import java.net.Socket;
public class FtpUtils {
static Logger logger = Logger.getLogger(FtpUtils.class);
public static boolean debugResponsesUtil = false;
public static PrintWriter printlog = null;
public static boolean getFtpLogin(String ip, String port, String username, String password){
boolean flag = false; //默认FTP未连接
printlog = new PrintWriter(System.out);
debugResponsesUtil = true;
try {
Socket controlSock = new Socket(ip, Integer.parseInt(port));
if (controlSock == null) {
try{
throw new IllegalStateException("Failed to set timeout - no control socket");
} catch (IllegalStateException e) {
logger.error(e.getMessage());
e.printStackTrace();
return flag;
}
}
controlSock.setSoTimeout(0);
InputStream is = controlSock.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
// output stream
OutputStream os = controlSock.getOutputStream();
Writer writer = new OutputStreamWriter(os);
String replyStr1 = curReadReply(reader); //第一次调用curReadReply函数
String replyCodeStr1 = replyStr1.substring(0, 3);
String replyText1 = replyStr1.substring(4);
if (replyCodeStr1.equals("220")) {
debugResponsesUtil = false;
} else {
// if unexpected reply, throw an exception
try {
throw new FTPException(replyText1, replyCodeStr1);
} catch (FTPException e) {
logger.error(e.getMessage());
e.printStackTrace();
return flag;
}
}
if (debugResponsesUtil) {
printlog.println("--- " + "USER " + username);
}
//send it
writer.write("USER " + username + "\r\n");
writer.flush();
String replyStr2 = curReadReply(reader); //第二次调用curReadReply函数
String replyCodeStr2 = replyStr2.substring(0, 3);
String replyText2 = replyStr2.substring(4);
if (replyCodeStr2.equals("331")) {
debugResponsesUtil = false;
} else {
//if unexpected reply, throw an exception
try {
throw new FTPException(replyText2, replyCodeStr2);
} catch (FTPException e) {
logger.error(e.getMessage());
e.printStackTrace();
return flag;
}
}
if (debugResponsesUtil) {
printlog.println("--- " + "PASS " + password);
}
//send it
writer.write("PASS " + password + "\r\n");
writer.flush();
String replyStr3 = curReadReply(reader); //第三次调用curReadReply函数
String replyCodeStr3 = replyStr3.substring(0, 3);
String replyText3 = replyStr3.substring(4);
if (replyCodeStr3.equals("230")) {
debugResponsesUtil = false;
} else {
//if unexpected reply, throw an exception
try {
throw new FTPException(replyText3, replyCodeStr3);
} catch (FTPException e) {
logger.error(e.getMessage());
e.printStackTrace();
return flag;
}
}
controlSock.setSoTimeout(1000);
flag = true; //FTP连接成功
controlSock.setSoTimeout(10000);
} catch (IOException e) {
logger.error(e.getMessage());
e.printStackTrace();
}
return flag;
}
private static String curReadReply(BufferedReader reader){
String firstLine = null;
try {
firstLine = reader.readLine();
} catch (IOException e) {
logger.error(e.getMessage());
e.printStackTrace();
}
if (firstLine == null || firstLine.length() == 0) {
try{
throw new IOException("Unexpected null reply received");
} catch (IOException e) {
logger.error(e.getMessage());
e.printStackTrace();
}
}
StringBuffer reply = new StringBuffer(firstLine);
if (debugResponsesUtil) {
printlog.println(reply.toString());
}
String replyCode = reply.toString().substring(0, 3);
//check for multiline response and build up
//the reply
if (reply.charAt(3) == '-') {
boolean complete = false;
while (!complete) {
String line = null;
try {
line = reader.readLine();
} catch (IOException e) {
logger.error(e.getMessage());
e.printStackTrace();
}
if (line == null) {
try{
throw new IOException("Unexpected null reply received");
} catch (IOException e) {
logger.error(e.getMessage());
e.printStackTrace();
}
}
if (debugResponsesUtil) {
printlog.println(line);
}
if (line.length() 3 line.substring(0, 3).equals(replyCode) line.charAt(3) == ' ') {
reply.append(line.substring(3));
complete = true;
} else { //not the last line
reply.append(" ");
reply.append(line);
}
} //end while
} //end if
return reply.toString();
}
}
摘自:iteye博客地址如下:
关于java业务校验代码和java校验器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。