後端&前端零碎知識點和注意問題

後端

1. Spring自帶的MD5加密工具類html

import org.springframework.util.DigestUtils;

String md5Password = DigestUtils.md5DigestAsHex(password.getBytes());

2. 數據庫的字段名不要含有 is前端

好比數據庫有個字段爲is_valid,那麼到代碼裏這個變量爲isValid。若是剛好這個變量是Boolean類型的,那麼若是返回數據到前端,那麼json串爲{"valid":true},能夠看見is被無形去掉了。java

看自動生成的get方法,沒有get前綴,都是由於Boolean類型的get方法都是以is開頭的,而這樣會覆蓋掉你名字裏的is前綴,因此若是你的變量爲Boolean類型命名要避免以is開頭。web

3. invalid comparison: org.springframework.web.bind.annotation.RequestMethod and java.lang.Stringspring

別人留下的坑:sql

mybatis裏面的sql語句,org.springframework.web.bind.annotation.RequestMethod是個枚舉類數據庫

<if test="requestMethod!=null and requestMethod!='' ">
    REQUEST_METHOD=#{requestMethod , jdbcType=VARCHAR, typeHandler=org.apache.ibatis.type.EnumTypeHandler},
</if>

這裏的判斷:requestMethod != '' 致使報錯,由於你一個枚舉類怎麼能跟字符串做比較呢?apache

4. 修改html頁面,IDEA不自動部署的問題json

首先禁用掉當前模板引擎的緩存,好比:spring.thymeleaf.cache=false,頁面修改以後按Ctrl+F9從新Build Project後端

5. org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter 已廢棄

自5.0版本開始,MVC相關配置可直接實現 org.springframework.web.servlet.config.annotation.WebMvcConfigurer

import com.example.demo.interceptor.CommonInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MyWebConfig implements WebMvcConfigurer {

    @Autowired
    private CommonInterceptor commonInterceptor;

    /**
     * 配置攔截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(commonInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
    }
}

6. 查看SpringBoot默認的配置類

在application.properties裏面配置debug=true,在啓動的時候就會打印開啓的默認配置類。

 

 

前端

1. string轉number

<script>
$(document).ready(function(){
      var p = +$('p').text();
    $('div').text(p+1);
});
</script>
</head>
<body>
    <div></div>
    <p>1</p>
</body>
</html>

輸出2而不是11

2. JQuery警告,低效的選擇器用法

好比:

$('#resultData :checked');

會警告

Inefficient jQuery usage less... (Ctrl+F1)
Checks that jQuery selectors are used in an efficient way. It suggests to split descendant selectors which are prefaced with ID selector and warns about duplicated selectors which could be cached

應改爲:

$('#resultData').find(':checked');

3. Comparison $.trim($(t[9]).val()) == "" may cause unexpected type coercion less...

好比:判斷表單內容去除空格後是否爲空

$.trim($(t[0]).val()) == ""

會警告

應改成:

$.trim($(t[0]).val()) === ""

4. new Boolean(value) 和 Boolean(value)的區別

前者是做爲構造函數構造一個Boolean實例,獲得的是一個對象;後者是做爲普通函數調用,獲得的是函數返回值false/true

5. Ajax請求,傳遞的數組參數名稱多了一個[]

利用JQuery的$.param(params,true)來解決

var myObject = {
  a: {
    one: 1, 
    two: 2, 
    three: 3
  }, 
  b: [1,2,3]
};
var recursiveEncoded = $.param(myObject);
var recursiveDecoded = decodeURIComponent($.param(myObject));

console.log(recursiveEncoded);
console.log(recursiveDecoded);

var shallowEncoded = $.param(myObject, true);
var shallowDecoded = decodeURIComponent(shallowEncoded);

console.log(shallowEncoded);
console.log(shallowDecoded);

6. Input 文件域重複上傳,不觸發change事件

<input type="file" id="upload">

  $("#upload").change(function(){
      // 上傳或者其它操做
      // ....
      // 最後將value置爲空
      $(this).val('');
  });

 

也能夠用一個新的input替代當前的input。

相關文章
相關標籤/搜索