A. spring mvc java config怎麼配置session-timeout
spring mvc java config怎麼配置session-timeout 具體設定很簡單,方法有三種:
(1)在主頁面或者公共頁面中加入:session.setMaxInactiveInterval(600);引數600單位是秒,即在沒有10分鍾活動後,session將失效。
這里要注意這個session設定的時間是根據伺服器來計算的,而不是客戶端。所以如果是在除錯程式,應該是修改伺服器端時間來測試,而不是客戶端。
(2)也是比較通用的設定session失效時間的方法,就是在專案的web.xml中設定
<!-- 設定session失效,單位分 -->
<session-config>
<session-timeout>1</session-timeout>
</session-config>
設定為0,-1 表示永不超時
(3)直接在應用伺服器中設定,如果是tomcat,可以在tomcat目錄下conf/web.xml中找到元素,tomcat預設設定是30分鍾,只要修改這個值就可以了。
<!-- ==================== Default Session Configuration ================= -->
<!-- You can set the default session timeout (in minutes) for all newly -->
<!-- created sessions by modifying the value below. -->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
需要注意的是如果上述三個地方如果都設定了,有個優先順序的問題,從高到低:(1)>(2)>(3)
session 的timeout不在spring的配置檔案里配置,它的配置實在web.xml檔案裡面
例如像這樣
<session-config> <session-timeout>20</session-timeout></session-config>
如何使用純java config來配置spring mvc
這個不是一定的,隨你自己的意思,你可以放在WEB-INF里,也可以放在classpath下。只需在配置web.xml時指定位置即可。
<listener>
<listener-class>
.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:beans.xml
</param-value>
</context-param>
上面就是web.xml中對spring容器的初始化配置,<context-param>中<param-value>中的classpath:beans.xml 即是spring配置檔案beans.xml的位置(classpath下,在myeclipse的工程中是src目錄下)
這個不是一定的,隨你自己的意思,你可以放在WEB-INF里,也可以放在classpath下。只需在配置web.xml時指定位置即可。
.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:beans.xml
上面就是web.xml中對spring容器的初始化配置,中中的classpath:beans.xml 即是spring配置檔案beans.xml的位置(classpath下,在myeclipse的工程中是src目錄下)
spring mvc應用基於Java config配置是怎麼啟動的
<!-- 包掃描 -->
<context:ponent-scan base-package=".eask.chp.controller"></context:ponent-scan>
<context:annotation-config>
<!--檢視解析器 -->
<bean
class=".springframework.web.servlet.view.InternalResourceViewResolver">
<property name=prefix value="/view/"></property>
<property name=suffix value=".jsp"></property>
</bean>
<mvc:annotation-driven></mvc:annotation-driven>
B. javaweb開發許可權管理,怎麼實現管理員修改用戶許可權後立即生效
這個有兩種做法
session的信息不要使用原生session, 信息存放在redis中, 每次修改之前觸發修改redis的內容
因為要做許可權控制, 所以你肯定是要有一個filter的, 那麼就可以在filter中, 每次pre之前, 現根據session中的userid, 動態的去資料庫中查詢一遍許可權, 然後塞入session中
C. 在java中,JSP重定向,轉發,Cookie,session
首先要明白這些對象的作用以及聯系,(第一、第二種情況解釋):先要知道這些對象是存在哪裡的.其次是了解這些對象的作用范圍,先說第一種情況吧.用重定向就是重新發送一個請求..你可以用firefox的firebug工具(或者chrome自帶的開發者工具看一下)重定向是向伺服器重新發一個請求.第一cookie是存在於瀏覽器中的,也就是如果你把cookie寫入了你的硬碟,那麼每次當你用該瀏覽器不管訪問那個頁面都會看到你寫到硬碟中的cookie.而重定向就是再一次發起請求.就是這個請求以外的請求了.因為你的上一個請求的處理把cookie放入到了瀏覽器中.所以再進行一次請求當然能夠獲取到cookie的值了.
還有第二種情況是請求轉發.這種情況是不會再一次請求伺服器的.請求轉發的一次是把你本次的請求交給另一個處理程序處理.當然,請求的參數還是剛開始你提交的那些參數(並不包括你後來寫到瀏覽器中的cookie的值了)。要理解第一、第二中情況,就要理解cookie是存在於瀏覽器中的,只要瀏覽器不清除cookie的信息,只要你訪問任何網頁都會有cookie的值噢..2、就是要理解重定向跟請求轉發的區別,重定向是在本次請求響應之後又向伺服器發送了與上次請求毫不相乾的請求.而此時cookie已經在瀏覽器中了.所以就會看到cookie的值了.而請求轉發雖然在轉發的時候也把cookie的值寫到了瀏覽器中.但是這次轉發的請求還是上一次的請求..參數也全部一樣.所以這次的請求中並不包括cookie的值
(第三、第四種情況解釋)如果進行了重定向或者請求轉發,那麼就相當於該請求或者又發起的請求已經進入了另一個程序中處理.所以這兩個語句後面的語句都將不會執行了.所以根本沒有寫入cookie
至於第五第六中情況的話,那隻能說我第三第四種情況理解有點錯誤.不過按說這兩個語句後面的應該都不會執行的.
第七第八種情況是因為session是一次會話中設置的值.只要每個瀏覽器對session的處理不一樣,有些瀏覽器就是如果該瀏覽器不關閉,那麼session永遠存在(除非session設置了過期的最長不活動時間)那麼session有可能失效,所以一般如果你把session寫入伺服器,那麼什麼時候訪問都會有值的..
D. JAVA中Session失效的問題!
第一方法:直接不用session了,改成用cookie實現,這個方法缺點就是如果客戶端禁用了cookie則程序的部分功能不能實現,不過能禁用cookie的一般都是開發人員。。。
第二方法:寫一個類似「seesion中央處理器」的公共處理部分,獨立於兩個系統之外,一般單獨放到一個伺服器裡面。。原理:A系統產生session之後,存放到了「seesion中央處理器」這個容器裡面,B系統可以到這個容器裡面取A系統之前創建好的那個session。。。