項目中的積累,及常見小問題

一、瀏覽器清空緩存的時候若是選擇清空cookie,其實就是清空session(google瀏覽器,ie11沒有這個問題)
二、本地環境最好用ip地址127.0.0.1而非localhost,重定向要加request.getcontentpath()上下文javascript

三、當控制session超時的時候,點擊tab按鈕,會有iframe嵌套問題,能夠在session超時設置的返回jsp代碼中,頂部加上以下判斷例:如login.jsphtml

<script type=text/javascript>
if (window != top) 
    top.location.href = location.href; 
</script>

<html>java

四、在web.xml。這裏注意點是瀏覽器不請求保持在20分鐘後,session過時web

<!-- 配置sessio過時時間單位:分鐘 -->spring

<session-config>
       <session-timeout>20</session-timeout>
 </session-config>

五、項目中使用aop控制日誌和事務shell

注意點:spring配置文件是必須加的json

<!-- 配置使Spring採用CGLIB代理 -->
    <aop:aspectj-autoproxy proxy-target-class="true"/>

當你的aop想切springmvc的controller類,必定也在springmvc配置文件上加入上面的配置centos

用aop從session中取出user信息的方法,部分代碼以下:瀏覽器

public void doBefore(JoinPoint jp) {
 
   	 Object[] args = jp.getArgs();  
     HttpServletRequest request = null;  
     StringBuilder str = new StringBuilder();
     //經過分析aop監聽參數分析出request等信息  
     for (Object obj : args) {  
         if (obj instanceof HttpServletRequest) {  
             request = (HttpServletRequest) obj;  
         } else if (obj instanceof HttpServletResponse) {
        	 
         } else {
        	 str.append(obj);
         }
         
     } 
     UserVO user = null;
     if (request != null) {  
    	 user = (UserVO) request.getSession().getAttribute("currentUser");
    	 if (user != null) {
    		 logger.info("用戶名:{}", user.getUserName());  
    	 }
     }

其中發現個問題,spring和springmvc掃描註解包,最好要徹底分離,springmvc監控controller,spring加載其他控制權,讓springMVC的配置xml和spring容器的配置xml分開,在各自的xml中配置本身該作的事情,不要讓springMVC去掃描不應本身管理的註解。不然到後面總是出一些奇怪的問題。例如:spring中的事務回滾和aop配置緩存

六、在作aop日誌管理的時候遇到獲取session問題。解決方案以下:

HttpSession session = (HttpSession) RequestContextHolder.getRequestAttributes().getSessionMutex();

spring 版本不一樣方式,最好的方法.getSessionMutex();可能不一樣

簡單的是使用註解

    @Autowired
    HttpServletRequest request;  respose 同理。。。

七、獲取最新記錄問題,例如獲取gps數據表中,每輛車的最新gps數據

/* 
數據以下: 
name val memo 
a    2   a2(a的第二個值) 
a    1   a1--a的第一個值 
a    3   a3:a的第三個值 
b    1   b1--b的第一個值 
b    3   b3:b的第三個值 
b    2   b2b2b2b2 
b    4   b4b4 
b    5   b5b5b5b5b5 
*/ 

--1、按name分組取val最大的值所在行的數據。 
--方法1: 
select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name 

八、centos 6.5 本地copy文件到服務器

shell命令  rz

九、jackson pojo轉換json時間問題,它默認的是時間很長的數字

ObjectMapper objmapper = new ObjectMapper();

objmapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

十、eclipse設置項目管理

第一次方式

第2種方式

十一、獲取tomcat webapp真實目錄,例如app文件放在 webapp的 app文件夾下

request.getSession().getServletContext().getRealPath("/app");

十二、maven + jetty啓動項目問題,在用eclipse的jetty啓動項目的時候,下載文件總是出內存溢出,後來改爲在pom.xml,加jetty配置控制,在 maven的 web包的pom.xml中

  </dependencies> 以後加,

<build>         <plugins>             <plugin>                 <groupId>org.mortbay.jetty</groupId>                 <artifactId>jetty-maven-plugin</artifactId>                 <version>8.1.16.v20140903</version>                 <configuration>                     <webApp>                         <contextPath>/</contextPath>                     </webApp>                     <connectors>                         <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">                             <port>8080</port>                             <maxIdleTime>60000</maxIdleTime>                         </connector>                     </connectors>                     <scanIntervalSeconds>0</scanIntervalSeconds>                     <scanTargetPatterns>                         <scanTargetPattern>                             <directory>src/main/webapp</directory>                             <includes>                                 <include>**/*.xml</include>                                 <include>**/*.properties</include>                             </includes>                         </scanTargetPattern>                     </scanTargetPatterns>                     <stopKey/>                     <stopPort/>                 </configuration>             </plugin>         </pl

相關文章
相關標籤/搜索