開發過程常見問題整理

時間處理相關知識點整理

JAVA獲取時間方法

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd     HH:mm:ss");  
 String dateNowStr = sdf.format(d);  
 System.out.println("格式化後的日期:" + dateNowStr);  
JAVABEAN相關注解配置 (基於SSM開發下)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date time;
/**
*在mybatis 字段直接引用   time = #{time} 即可
*/

前端JS獲取當前時間函數

function getNowFormatDate() {
        var date = new Date();
        var seperator1 = "-";
        var seperator2 = ":";
        var month = date.getMonth() + 1;
        var strDate = date.getDate();
        if (month >= 1 && month <= 9) {
            month = "0" + month;
        }
        if (strDate >= 0 && strDate <= 9) {
            strDate = "0" + strDate;
        }
        var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
                + " " + date.getHours() + seperator2 + date.getMinutes()
                + seperator2 + date.getSeconds();
        return currentdate;
    }

Ajax、Json相關常見問題

JAVA中處理ajax傳來的參數以及json

@RequestMapping(value = "/recorderUpInfo.json", method = RequestMethod.POST)
@ResponseBody
public void getAjaxParam(String jsonStr){
  //jsonStr爲json字符串 實際爲一個實例對象
  //將json字符串轉爲對象 
  /**  
  *var jsonStr= {
            RID : "01fa9ee44f4f4e98aae09303e36ddeae",
            isRecord : 1,
            recordDate: recordTime,
            recorder : "demoMan"
    }
  */
  //基於jar: 
  //import com.alibaba.fastjson.JSON;
  //import com.alibaba.fastjson.JSONArray;
  //import com.alibaba.fastjson.JSONObject;
  Object object =  JSON.parseObject(jsonStr,Object.class);
  //一個JsonObject文本數據
  String s = "{\"name\":\"liuzhao\"}";
  //將JsonObject數據轉換爲Json
  JSONObject object = JSON.parseObject(s);
  //利用鍵值對的方式獲取到值
  System.out.println(object.get("name"));
}
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

//下面是FastJson的簡介:常用的方法!
//  Fastjson API入口類是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON類上的靜態方法直接完成。
//  public static final Object parse(String text); // 把JSON文本parse爲JSONObject或者JSONArray 
//  public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
//  public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse爲JavaBean 
//  public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
//  public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
//  public static final String toJSONString(Object object); // 將JavaBean序列化爲JSON文本 
//  public static final String toJSONString(Object object, boolean prettyFormat); // 將JavaBean序列化爲帶格式的JSON文本 
//  public static final Object toJSON(Object javaObject); 將JavaBean轉換爲JSONObject或者JSONArray(和上面方法的區別是返回值是不一樣的)

/**
 * 這是關於FastJson的一個使用Demo,在Java環境下驗證的;
 * 使用的時候可以參照這個例子進行回憶!
 * 備註:下面寫的Json格式的數據"前面的\,意思是告訴編譯器忽略掉它後面的"。
 * 後面定義有三個類:User、Group、Weibo
 * @author liuzhao
 */
public class JsonDemo {

    public static void main(String[] args) {

        json2JsonObjectM1();//將Json文本數據信息轉換爲JsonObject對象,然後利用鍵值對的方式獲取信息
        json2BeanM2();//將Json文本數據轉換爲JavaBean數據!
        json2JSONArrayM3();//將json數據轉化爲JSONArray: 
        json2JavaBeanM4();//將JSON文本轉換爲JavaBean的集合;轉換爲單純的1個Object:parseObject(String text, Class<T> clazz); 
        bean2JsonM5();//將JavaBean轉換爲Json格式的數據/Json文本 用戶數據的傳遞:例如上傳服務器
        bean2JSONObjectM6();//將JavaBean轉換爲JSON對象
        complexExampleM7();//一個相對複雜的例子:
        complex2JsonM8();//一個複雜的Object到Json的Demo
        complexMap2JsonM9();//將Map數據轉換爲JsonString的Demo;這個對RedBoy服務端不就直接破了嘛!
    }

    /**
     * 將Json文本數據信息轉換爲JsonObject對象,然後利用鍵值對的方式獲取信息
     */
    private static void json2JsonObjectM1() {
        //一個JsonObject文本數據
        String s = "{\"name\":\"liuzhao\"}";
        //將JsonObject數據轉換爲Json
        JSONObject object = JSON.parseObject(s);
        //利用鍵值對的方式獲取到值
        System.out.println(object.get("name"));
        /**
         * 打印:
         * liuzhao
         */
    }

    /**
     * 將Json文本數據轉換爲JavaBean數據!
     * 需要注意的是:這時候的Json文本信息中的鍵的名稱必須和JavaBean中的字段名稱一樣!鍵中沒有的在這個JavaBean中就顯示爲null!
     */
    private static void json2BeanM2() {
        String s = "{\"id\":\"0375\",\"city\":\"平頂山\"}";
        //一個簡單方便 的方法將Json文本信息轉換爲JsonObject對象的同時轉換爲JavaBean對象!
        Weibo weibo = JSON.parseObject(s, Weibo.class);//Weibo類在下邊定義
        System.out.println(weibo.getId());
        System.out.println(weibo.getCity());
        //打印的結果     0375
        //              平頂山
    }


    /**
     * 將Map類型的數據轉換爲JsonString
     */
    private static void complexMap2JsonM9() {
        Group group = new Group();
        group.setId(1);
        group.setName("group");

        User user1 = new User();
        user1.setId(2);
        user1.setName("user1");

        User user2 = new User();
        user2.setId(3);
        user2.setName("user2");
        group.getList().add(user1);
        group.getList().add(user2);

        Map<Integer, Object> map = new HashMap<Integer,Object>();
        map.put(1, "No.1");
        map.put(2, "No.2");
        map.put(3, group.getList());

        String jsonString = JSON.toJSONString(map);
        System.out.println(jsonString);
        /**
         *  輸出:{1:"No.1",2:"No.2",3:[{"id":2,"name":"user1"},{"id":3,"name":"user2"}]}
         */
    }

    /**
     * 由一個複雜的Object到Json的Demo
     */
    private static void complex2JsonM8() {
        Group group = new Group();
        group.setId(1);
        group.setName("group");

        User user1 = new User();
        user1.setId(2);
        user1.setName("user1");

        User user2 = new User();
        user2.setId(3);
        user2.setName("user2");
        group.getList().add(user1);
        group.getList().add(user2);
        String jsonString = JSON.toJSONString(group);
        System.out.println(jsonString);
        /**
         *  輸出:{"id":1,"list":[{"id":2,"name":"user1"},{"id":3,"name":"user2"}],"name":"group"}
         */
    }

    /**
     * 一個相對複雜的例子:
     * JSON文本數據:
     *      首先是JSONObject,轉換爲JSONArray;
     *      然後將JSONArray轉換爲JavaBean
     */
    private static void complexExampleM7() {
        String s = "{js:[{id:\"110000\",\"city\":\"北#001京市\"},{id:\"110000\",\"city\":\"北#002京市\"}"
                + ",{id:\"110000\",\"city\":\"北#002京市\"},{id:\"110000\",\"city\":\"北#002京市\"},"
                + "{id:\"110000\",\"city\":\"#006北#005京市\"},"
                + "{id:\"110000\",\"city\":\"北#002京市\"},"
                + "{id:\"110000\",\"city\":\"北#002京市\"},{id:\"120000\",\"city\":\"天#009津市\"}]}";

        JSONObject object = JSON.parseObject(s);
        Object jsonArray = object.get("js");
        System.out.println(jsonArray);
        List<Weibo> list = JSON.parseArray(jsonArray+"", Weibo.class);
        for (Weibo weibo : list) {
            System.out.println(weibo.getCity());
        }
    }

    /**
     * 將JavaBean轉換爲JSON對象
     */
    private static void bean2JSONObjectM6() {
        Weibo weibo = new Weibo("0373", "洛陽");
        JSONObject json = (JSONObject) JSON.toJSON(weibo);
        System.out.println(json.get("id"));
        /**
         * 打印:
         * 0373
         */
    }

    /**
     * 將JSON文本轉換爲JavaBean的集合;
     * 內部實現肯定是:首先轉換爲JSONArray,然後再轉換爲List集合
     */
    private static void json2JavaBeanM4() {
        String s = "[{\"id\":\"0375\",\"city\":\"平頂山\"},{\"id\":\"0377\",\"city\":\"南陽\"}]";
        List<Weibo> list = JSON.parseArray(s, Weibo.class);
        for (Weibo weibo : list) {
            System.out.println(weibo.getCity());
        }
        /**
         * 打印:
         * 平頂山
         * 南陽
         */
    }

    /**
     * 將json數據轉化爲JSONArray:
     * 注意:獲取到JSONArray之後(我們這裏只是獲取到JSONArray而不是JavaBean的List集合)
     * 獲取JSONArray中的數據轉換爲String類型需要在外邊加"";
     */
    private static void json2JSONArrayM3() {
        String s = "[{\"id\":\"0375\",\"city\":\"平頂山\"},{\"id\":\"0377\",\"city\":\"南陽\"}]";
        //將JSON文本轉換爲JSONArray
        JSONArray array = JSON.parseArray(s);
        //這行必須寫:必須加上+"";不然會報出類型強轉異常!
        String str = array.get(1)+"";
        System.out.println(array.get(0));
        JSONObject object = JSON.parseObject(str);
        System.out.println(object.get("id"));
        /**
         * {"city":"平頂山","id":"0375"}
            0377
         */
    }


    /**
     * 將JavaBean轉換爲Json格式的數據/Json文本
     * 用戶數據的傳遞:例如上傳服務器
     */
    private static void bean2JsonM5() {
        Weibo weibo = new Weibo("123456", "上海");
        String string = JSON.toJSONString(weibo);
        System.out.println(string);
        /**
         * 打印:
         * {"city":"上海","id":"123456"}
         */
    }

}

JS處理json

//一.Json對象與Json字符串的轉化

//1.jQuery插件支持的轉換方式:

  $.parseJSON( jsonstr ); 
  //jQuery.parseJSON(jsonstr),可以將json字符串轉換成json對象



//2.瀏覽器支持的轉換方式(Firefox,chrome,opera,safari,ie9,ie8)等瀏覽器:

//JSON.stringify(obj)將JSON轉爲字符串。JSON.parse(string)將字符串轉爲JSON格式;

var a={"name":"tom","sex":"男","age":"24"}; 
var b='{"name":"Mike","sex":"女","age":"29"}'; 
var aToStr=JSON.stringify(a); 
var bToObj=JSON.parse(b); 
alert(typeof(aToStr));  //string 
alert(typeof(bToObj));//object



//3.Javascript支持的轉換方式: 
eval('(' + jsonstr + ')'); 
//可以將json字符串轉換成json對象,注意需要在json字符外包裹一對小括號 
//注:ie8(兼容模式),ie7和ie6也可以使用eval()將字符串轉爲JSON對
//象,但不推薦這些方式,這種方式不安全eval會執行json串中的表達式。

/**4.JSON官方的轉換方式: 
http://www.json.org/提供了一個json.js,這樣ie8(兼容模式),ie7和ie6就可以支持JSON對象以及其stringify()和parse()方法; 
可以在https://github.com/douglascrockford/JSON-js上獲取到這個js,一般現在用json2.js。*/

跨域問題

JAVA跨域相關配置

@CrossOrigin 
//Spring MVC 4.2.5以後新增的支持跨域的註解@CrossOrigin,如果
//是老項目的話升級spring庫可能會有些兼容的問題,不知爲什麼這個註解沒
//有升效;
//參考:[Spring MVC 解決跨域問題&以及對@RequestBody的理解]
//(http://blog.csdn.net/wq_static/article/details/51418384)

前端跨域相關設置

 $.ajax({
       url : urlPath1,
       type : "post",
       headers: {'Contenttype':'application/json;charset=UTF-8'},
       data:JSON.stringify(userEvenLog),
       dataType:'json',
       contentType : "application/json; charset=utf-8",
       success : function (data) {
                 //用戶日誌插入成功  true
                   console.info(data)
                  }
  });

//另外有一種方法是用 jsonp
[Ajax跨域方法](http://blog.csdn.net/u012850192/article/details/69666942)

//網上看到說還有可能是瀏覽器的跨域問題 這個目前沒有遇到過
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章