• java String Map List 转换


    java  String Map List 转换

    String completeByParam = dispatchFeign.getCompleteByParam("用车", startTime, endTime, page, limit);
    
    
    System.out.println("completeByParam = " + completeByParam);
    Map json = JSONObject.parseObject(completeByParam, Map.class);
    System.out.println("json = " + json);
    String data = json.get("data").toString();
    System.out.println("data = " + data);
    Map map = JSONObject.parseObject(data, Map.class);
    System.out.println("map = " + map);
    String list = map.get("list").toString();
    System.out.println("list = " + list);
    
    List<Map<String, Object>> list1 = Lists.newArrayList();
    if (StringUtils.isNotEmpty(list)) {
        list1 = JSONArray.parseObject(list, List.class);
    }
    System.out.println("list1 = " + list1);
    for (Map<String, Object> l : list1) {
        System.out.println("l = " + l);
    }

    如何防止xss攻击

    XSS攻击通常指的是利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页的程序。
    这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。
    攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。 如何防范XSS:
    1. 自己写 filter 拦截来实现。这个filter不但可以拦截xss攻击,也可以拦截sql注入攻击。
      但要注意的时,在WEB.XML 中配置 filter 的时候,最好将这个 filter 放在第一位。   我们知道filter谁的写在上面,谁先被过滤。
      比如我们有一个是否登录的过滤器如果放在上面,结果因为有漏洞,通过sql注入可以实现免登陆,
      而黑客利用,导致了直接登录就麻烦了。所以要先过滤一些特殊字符,再放行去做其他业务。   这个过滤器里面可以匹配一些sql注入的关键字和一些xss攻击的关键字,xss攻击的关键字包括:     script,alert,img,src、eval 、javascript等关键字,   拦截到后处理方法也有很多。     a、可以全部替换成空字符串,简单粗暴,但是可能造成错误显示。     b、可以转换成全角字符     c、可以使用html实体编码,url编码等
    "<" "<"   这要根据具体实际的情况来判断该怎么使用了。   filter过滤器使用相对麻烦,要建立一套完备的匹配库,否则有可能xss漏洞过滤不到,或则过滤的太多影响程序功能。但是filter可以根据自己程序实际情况随心定制。 2、ESAPI框架实现。 ESAPI是一套API级别的web应用解决方案。简单的说,ESAPI就是为了编写出更加安全的代码而设计出来的一些API,方便使用者调用,从而方便的编写安全的代码。   a、引入Jar     org.owasp.esapi esapi 2.1.0.1   b、加入配置文件     在工程的资源文件目录下增加配置文件ESAPI.properties及validation.properties,文件内容可为空。如果为空则都取默认值。也可以手动配置。   c、校验参数使用   ESAPI提供了很多常见的校验,可以方便针对不同的需要做校验。   ESAPI提供了很多常见的校验,可以方便针对不同的需要做校验 if(!ESAPI.validator().isValidInput("",input,"Email",11,false)){ System.out.println("出错了"); }   这种方式:结构清晰,易于扩展。如果想省事,可以使用默认配置,也可以自己定制。   ESAPI参考:https://blog.csdn.net/frog4/article/details/81876462 3、spring实现。   首先添加一个jar包:commons-lang-2.5.jar ,然后在后台调用这些函数   StringEscapeUtils.escapeHtml(string);
      //转移html脚本StringEscapeUtils.escapeJavaScript(string);
      //转移JavaScript脚本StringEscapeUtils.escapeSql(string);
      
    //转移sql脚本   或则结合springMVC的InitBinder使用   @InitBinder只在@Controller中注解方法来为这个控制器注册一个绑定器初始化方法,方法只对本控制器有效。   /** * 防止XSS攻击 */
      
    binder.registerCustomEditor(String.class, new StringEscapeEditor());
      //告诉spring String 类型的参数StringEscapeEditor来管了,它来处理   使用简单方便,但是不能定制过滤方式。

      参考地址:https://www.toutiao.com/i6792402396845703693/

    spring ioc aop 反射 动态代理之间的原理和关系

    1、类加载器加载class文件
    2、加载到jvm 中,obtainFreshBeanFactory()里的refreshBeanFactory()来为每个bean生成 一个BeanDefinition ,
          注意此时不是我们想要的对象,只是bean的信息,依赖关系等,后续后面spring解析器去解析一个BeanDefinition。
    3、BeanDefinition信息注册,
          将抽象好的BeanDefinition统一注册到IoC容器中,IoC容器是通过hashMap来维护BeanDefinition信息的,key为beanName,value为BeanDefinition。
    4、createBeanInstance()根据beanDefinition的信息创建bean的实例 
            怎么创建呢?主要有两种方法,一种是通过beanUtil反射,另一种 CGLIB来实例化对象,如果Bean定义中有方法覆盖,则就需要CGLIB父
    。。。
    7、至于aop特性是实例化好了之后,后置处理来处理
            如果我们spring配置了AOP的话,这个时候就要考虑是cglib还是jdk 动态代理去实现这个功能    
    1、在默认情况下,如果spring bean有接口就使用jdk的动态代理。Proxy.newProxyInstance。如果没有接口就调用cglib通过操作字节码去生成目标类的子类来完成代理。
    2、可以手动配置,强制都使用cglib,如果xml中配置 proxy-target-class=true 或则在注解上配置
    @EnableAspectJAutoProxy(proxyTargetClass=true)  这个时候就全部使用cglib来完成动态代理
     记得aop特性是初始化的时候完成的
    4、如果需要类,spring  可以通过注解  或则代码去 map中 获取bean 。

    Java 0和1代表的含义

    在Java中:
    
    1、整数型的0和1: 代表数字0和1
    
    2、boolean类型的0和1:
    
    0代表:false(也就是说整数型的0转为布尔类型时输出false)
    1代表:true(整数1转换为布尔类型输出true)
    其实在整数转布尔类型时:0为false,非0为true,当然1也是true;
    
    3、在二进制最高位:
    
    0代表:正数
    1代表:负数













  • 相关阅读:
    IaaS、PaaS、SaaS
    hyper-V 配置
    解决linux下创建用户时出现Creating mailbox file: File exists
    iframe层级关系调用
    js,jq新增元素 ,on绑定事件无效
    js中!和!!的区别与用法
    form表单禁止button 提交
    Thinkphp5终端创建控制器和模型
    TP5的目录常量和路径
    sublime安装package controlller
  • 原文地址:https://www.cnblogs.com/Seven-cjy/p/12049666.html
Copyright © 2020-2023  润新知