扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇文章为大家展示了怎么在java中对方法参数进行核对,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
成都创新互联公司是一家成都做网站、成都网站制作,提供网页设计,网站设计,网站制作,建网站,按需网站开发,网站开发公司,从2013年成立是互联行业建设者,服务者。以提升客户品牌价值为核心业务,全程参与项目的网站策划设计制作,前端开发,后台程序制作以及后期项目运营并提出专业建议和思路。
Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。
1.声明自定义注解类
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface RequestRequire { /** * 请求当前接口所需要的参数,多个以小写的逗号隔开 * @return */ public String require() default ""; /** *传递参数的对象类型 */ public Class> parameter() default Object.class; }
2.对需要做非空判断的方法做注解配置(一般用在controller)
@RequestMapping(value = "/register", method = RequestMethod.POST) @RequestRequire(require="mobile,sessionToken",parameter=AccountRequestParameter.class) public void register(HttpServletRequest request, HttpServletResponse response,HttpRequestParameter parameter)throws Exception{ //核心代码 }
AccountRequestParameter类是一个参数类,里面包含了账号模块的所有参数。
3.编写切面类
@Aspect @Component public class RequestRequireAspect { Logger log=LoggerFactory.getLogger(RequestRequireAspect.class); public RequestRequireAspect() { log.info("初始化接口参数非空判断切面类..."); } @Pointcut("@annotation(com.xxxx.RequestRequire)") public void controllerInteceptor() { } @Around("controllerInteceptor()") public Object around(ProceedingJoinPoint pjp) throws Throwable { //获取注解的方法参数列表 Object[] args = pjp.getArgs(); //获取被注解的方法 MethodInvocationProceedingJoinPoint mjp = (MethodInvocationProceedingJoinPoint) pjp; MethodSignature signature = (MethodSignature) mjp.getSignature(); Method method = signature.getMethod(); //获取方法上的注解 RequestRequire require = method.getAnnotation(RequestRequire.class); //以防万一,将中文的逗号替换成英文的逗号 String fieldNames=require.require().replace(",", ","); //从参数列表中获取参数对象 Object parameter=null; for(Object pa:args){ //class相等表示是同一个对象 if (pa.getClass()==require.parameter() ) { parameter=pa; } } //通过反射去和指定的属性值判断是否非空 Class cl=parameter.getClass(); for(String fieldName:fieldNames.split(",")){ //根据属性名获取属性对象 Field f=cl.getField(fieldName); //设置可读写权限 f.setAccessible(true); //获取参数值,因为我的参数都是String型所以直接强转 String value=(String)f.get(parameter); //非空判断 if(!StringUtils.isNotBlank(value)){ throw RuntimeException("参数:"+fieldName+"不允许为空"); } } //如果没有报错,放行 return pjp.proceed(); } }
4.在springmvc里面配置
上述内容就是怎么在java中对方法参数进行核对,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流