項目維護小計-小知識點匯總

本篇記錄項目維護過程中印象稍微深一些的點,算是一些知識點罩息,有新發(fā)現(xiàn),也有常規(guī)錯誤礁遣,略微記之。

ajax跨域保留session

Controller可使用@CrossOrigin注解允許跨域碗殷。默認情況下劣针,瀏覽器ajax跨域請求不會保留session,即每一次請求都是一個新的session亿扁。保留session的方法如下:

$.ajax(url, {
            type: "POST",
            data: data
            xhrFields: {
                withCredentials: true
            },
            crossDomain: true
        })

這不是一個徹底的解決方案,如果頻繁的按照上述方式進行跨域請求鸟廓,瀏覽器會報錯从祝。本項目中跨域且保留session本身就是為滿足某個奇葩需求而妥協(xié)的解決方案,最好還是避免這種做法引谜。

jstl

vue牍陌、angularJS的表達式某些思想、形式類似于jstl员咽,但是重新拿起jstl還是有很大的痛苦毒涧。

拼接構建字符串

字符串變量是可以多次set的,每一次set與前一個值拼接即可

<c:set var="str" value="''"/>
<c:set var="str" value="${str}'a'"/>
<c:set var="str" value="'${str}'b"/>
<c:set var="str" value="'${str}'c"/>
${str} //str='abc'

遍歷對象屬性

以下示例讀取對象obj的屬性贝室,并且拼接到objStr字符串中:

<c:forEach var="field" items="${obj['class'].declaredFields}" varStatus="stat">
        <c:if test="${not empty obj[field.name]}">
            <c:set var="objStr"
                   value="${stat.first ? '' :objStr}&${field.name}=${obj[field.name]}"/>
        </c:if>
    </c:forEach>

這種方式對處理pojo很有效契讲,復雜的對象還存在隱患。

jsp分頁滑频,輪子造起來

無論字段命名多么別扭吧捡偏,分頁對象這樣了:

public class PageDO implements Serializable {
    private int currentPage = 1;//當前頁碼   默認為1
    private int pageCount = 10;//每頁顯示數據條數    默認為10
    private int totalCount = 0;//總條數
    private int totalPage = 0;//總頁數
    private int startIndex = 0;//開始條數
    private List<Integer> pages;
    ...省略get set
}

分頁的代碼單獨放到一個jsp文件中,作為一個通用組件存在峡迷。分頁基本信息為頁面大小與頁號银伟,其他參數通過 condition 對象傳入,conditionExt可以傳入額外的查詢條件绘搞,具體實現(xiàn)如下:

<div id="pageGro" class="cb">
    <c:forEach var="field" items="${condition['class'].declaredFields}" varStatus="stat">
        <c:if test="${not empty condition[field.name]}">
            <c:set var="conditionStr"
                   value="${stat.first ? '' :conditionStr}&${field.name}=${condition[field.name]}"/>
        </c:if>
    </c:forEach>
    <c:if test="${page.currentPage !=1}">
        <div class="pageUp"><a disabled="true"
                               href="?${conditionExt}${conditionStr}&currentPage=${page.currentPage-1}&pageCount=${page.pageCount}">上一頁</a>
        </div>
    </c:if>
    <div class="pageList">
        <ul>
            <c:forEach items="${page.pages}" var="item">
                <li>
                    <c:if test="${item == page.currentPage}">
                        ${item}
                    </c:if>
                    <c:if test="${item != page.currentPage}">
                        <a href="?${conditionExt}${conditionStr}&currentPage=${item}&pageCount=${page.pageCount}">${item}</a>
                    </c:if>
                </li>
            </c:forEach>
        </ul>
    </div>
    <c:if test="${page.currentPage < page.totalPage}">
        <div class="pageDown">
            <a href="?${conditionExt}${conditionStr}&currentPage=${page.currentPage+1}&pageCount=${page.pageCount}">下一頁 </a>
        </div>
    </c:if>
</div>

tomcat啟動參數

tomcat的啟動參數可在 tomcat-path/bin/catalina.shtomcat-path/bin/satrtup.sh中配置(window配置相應的bat文件)彤避。
在文件第一行加入配置即可,如下示例在windows上配置啟動參數 :

set  "JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=test"

增加啟動內存也可以通過這種方式配置夯辖。

編碼問題

使用UTF-8編碼基本上已經成為開發(fā)共識琉预,但是ide、tomcat卻沒有這樣去默認UTF-8楼雹,這是亂碼問題的根源之一模孩。

url亂碼

tomcat默認沒有開啟url的UTF-8編碼,需在配置tomcat-path/conf/server.xml文件中配置:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               URIEncoding="UTF-8"
               redirectPort="8443" />

日志文件亂碼

日志文件會出現(xiàn)中文亂碼贮缅,需要在tomcat啟動參數加編碼配置:

set  "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=utf-8"

結語

本篇隨筆記錄了幾個維護過程中用到的小“技巧”榨咐,也有些稱不上技巧是因為實在是一些古老而又基礎的東西,在學新技能的時候給忽略乃至遺忘了谴供。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末块茁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌数焊,老刑警劉巖永淌,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異佩耳,居然都是意外死亡遂蛀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門干厚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來李滴,“玉大人,你說我怎么就攤上這事蛮瞄∷鳎” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵挂捅,是天一觀的道長芹助。 經常有香客問我,道長闲先,這世上最難降的妖魔是什么状土? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮伺糠,結果婚禮上声诸,老公的妹妹穿的比我還像新娘。我一直安慰自己退盯,他們只是感情好彼乌,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渊迁,像睡著了一般慰照。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上琉朽,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天毒租,我揣著相機與錄音,去河邊找鬼箱叁。 笑死墅垮,一個胖子當著我的面吹牛,可吹牛的內容都是我干的耕漱。 我是一名探鬼主播算色,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼螟够!你這毒婦竟也來了灾梦?” 一聲冷哼從身側響起峡钓,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎若河,沒想到半個月后能岩,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡萧福,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年拉鹃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲫忍。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡毛俏,死狀恐怖,靈堂內的尸體忽然破棺而出饲窿,到底是詐尸還是另有隱情,我是刑警寧澤焕蹄,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布逾雄,位于F島的核電站,受9級特大地震影響腻脏,放射性物質發(fā)生泄漏鸦泳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一永品、第九天 我趴在偏房一處隱蔽的房頂上張望做鹰。 院中可真熱鬧,春花似錦鼎姐、人聲如沸钾麸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饭尝。三九已至,卻和暖如春献宫,著一層夾襖步出監(jiān)牢的瞬間钥平,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工姊途, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留涉瘾,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓捷兰,卻偏偏與公主長得像立叛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贡茅,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法囚巴,類相關的語法,內部類的語法,繼承相關的語法彤叉,異常的語法庶柿,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,811評論 0 11
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)秽浇,斷路器浮庐,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,810評論 6 342
  • 今天小雪审残,陽歷十一月23號,農歷十月初五斑举,天氣陰搅轿。 也是哥哥你的生日。過完今天你就滿28歲了富玷,虛歲就是29璧坟。這樣的...
    隨心隨新閱讀 221評論 2 1