最近知識點小記

一:mybatis的轉義字符:html

二:mysql中datetime比較大小問題java

str_to_date() 例:STR_TO_DATE(Start_time,'%Y-%m-%d %H:%i:%s')
mysql

between STR_TO_DATE(Start_time,'%Y-%m-%d %H:%i:%s') and STR_TO_DATE(End_time,'%Y-%m-%d %H:%i:%s')web

now() 如今時間 spring

%W 星期名字(Sunday……Saturday)sql

%D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。)json

%Y 年, 數字, 4 位tomcat

%y 年, 數字, 2 位mybatis

%a 縮寫的星期名字(Sun……Sat)mvc

%d 月份中的天數, 數字(00……31)

%e 月份中的天數, 數字(0……31)

%m 月, 數字(01……12)

%c 月, 數字(1……12)

%b 縮寫的月份名字(Jan……Dec)

%j 一年中的天數(001……366)

%H 小時(00……23)

%k 小時(0……23)

%h 小時(01……12)

%I 小時(01……12)

%l 小時(1……12)

%i 分鐘, 數字(00……59)

%r 時間,12 小時(hh:mm:ss [AP]M)

%T 時間,24 小時(hh:mm:ss)

%S 秒(00……59)

%s 秒(00……59)

%p AM或PM

%w 一個星期中的天數(0=Sunday ……6=Saturday )

%U 星期(0……52), 這裏星期天是星期的第一天

%u 星期(0……52), 這裏星期一是星期的第一天

%% 一個文字「%」。

三:java與json的轉化

list-->json  JSONObject json = JSONArray.fromObject(list);

map/實體類-->json   JSONObject json = JSONObject.fromObject(map/object);

若不想把某字段包涵轉化的話能夠:jsonConfig.setExcludes(new String[]{"實體類","屬性"});

JSONObject json = JSONArray.fromObject(list,jsonConfig);

若裏面含有時間字段,會以"1268201641228"形式展現,若想以"yyyy-MM-dd"的形式的話須要實現JsonValueProcessor 接口,從新定義

public class JsonDateValueProcessor implements JsonValueProcessor {
    private String datePattern = "yyyy-MM-dd";
    public JsonDateValueProcessor() {
        super();
    }  
    public JsonDateValueProcessor(String format) {
        super();
        this.datePattern = format;
    }    
    public Object processArrayValue(Object value, JsonConfig jsonConfig) {
        return process(value);
    }   
    public Object processObjectValue(String key, Object value,
            JsonConfig jsonConfig) {
        return process(value);
    }  
    private Object process(Object value) {
        try {
            if (value instanceof Date) {
                SimpleDateFormat sdf = new SimpleDateFormat(datePattern,
                        Locale.UK);
                return sdf.format((Date) value);
            }
            return value == null ? "" : value.toString();
        } catch (Exception e) {
            return "";
        }
    }
    public String getDatePattern() {
        return datePattern;
    }  
    public void setDatePattern(String pDatePattern) {
        datePattern = pDatePattern;
    }
}

下面直接調用就能夠了,例如:

JsonConfig jsonConfig = new JsonConfig();

jsonConfig.registerJsonValueProcessor(Date.class,new JsonDateValueProcessor());

JSONObject jo = JSONObject.fromObject(bean, jsonConfig);

JSON-》java

  1. 實體

  2. String jsonStr = "[{\"name\": \"husband\", \"age\": \"26\", \"born\": \"1984-01-12\"},{\"name\": \"wife\", \"age\": \"20\", \"born\": \"1990-05-01\"}]";
    
    Collection<JsonBean> list = JSONArray.toCollection(JSONArray.fromObject(jsonStr), JsonBean.class);
          //DateUtil.getFormatDate(date,fmtstr)日期轉字符串這裏再也不寫代碼了
    for (JsonBean o : list) {
       System.out.println(DateUtil.getFormatDate(o.getBorn(), "yyyy-MM-dd"));
    }

2.map或者list

String listStr = "[\"apple\",\"orange\"]";
Collection<String> strlist = JSONArray.toCollection(JSONArray.fromObject(listStr));
for (String str : strlist) {
    System.out.println(str);
}

String mapStr = "{\"age\":30,\"name\":\"Michael\",\"baby\":[\"Lucy\",\"Lily\"]}";
Map<String, Object> map = (Map) JSONObject.toBean(JSONObject
                .fromObject(mapStr), Map.class);
for (Entry<String, Object> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

4、Spring MVC 下設置默認訪問頁面的3種方式

1.默認tomcat容器的默認頁面。

<welcome-file-list> 

  <welcome-file>/index.html</welcome-file> 

</welcome-file-list>

這種方式適合訪問靜態的頁面(也包括JSP)或者說是沒有任何參數的頁面。

2.spirng mvc 默認index controller 方式

若是在tomcat容器沒有配置默認頁面,怎spring mvc 會主動去尋找/index的controller,若是有則會調用,沒有則會顯示404頁面。

@RequestMapping(value="/index")

public ModelAndView index(HttpServletRequest request, HttpServletResponse response){

return new ModelAndView("index");

}

3.spirng mvc 配置根節點訪問「/」方式

這種方法比較極端,就是配置一個名爲「/」的controller,就是輸入完網址以後就會調用。這種方法是前面兩種方法都沒有配置的時候。

@RequestMapping(value="/") public ModelAndView index(HttpServletRequest request,         HttpServletResponse response){ return new ModelAndView("index"); }

三種方法的級別高低:1>>3>>2;由於tomcat的容器級別比spring要高,以上3鍾配置都存在的狀況,優先使用tomcat。由於配置了"/"的controller,因此會先匹配到相關的controller,而不會先尋找/index controller.

注意,即便web.xml沒有添加,tomcat也會自動默認去尋找在webroot目錄下面的index文件,若是要使用後面兩種方法,則要保證webroot下面沒有index相關的文件。

5、解決亂碼問題(post、get)

1.post 能夠直接在web.xml裏面配置過濾器就能夠屏蔽post方式提交的亂碼

<filter>
	    <filter-name>encodingFilter</filter-name>
	    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	    <init-param>
	      <param-name>encoding</param-name>
	      <param-value>UTF-8</param-value>
	    </init-param>
	    <init-param>
	      <param-name>forceEncoding</param-name>
	      <param-value>true</param-value>
	    </init-param>
	  </filter>
	  <filter-mapping>
	    <filter-name>encodingFilter</filter-name>
	    <url-pattern>/*</url-pattern>
	  </filter-mapping>

至關於在控制層方法裏面配置了

request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8"
);

2.get提交 上面對get方式提交中文無效,怎麼處理呢?

1、String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");

2、在tomcat的server.xml找到下面的話  Connector 添加 URIEncoding="utf-8"

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8441"/>
<!-- 在上面添加  URIEncoding="utf-8"  -->

3、在傳參數以前先把參數進行轉碼:java.net.URLEncoder.encode(param);
取值時用語句java.net.URLDecoder.decode(param);再轉回中文

相關文章
相關標籤/搜索