2012-10-22 23 views
0

假設我有一個基於java servlet的web應用程序,並且此應用程序讀取文件系統上的文件。如何修改servlet中的字符串類型?

現在,這些文件是在不斷的變化,所以它是用來引用正確的子文件夾中的VERSION變量:

/app-files/version0001/.... 

如果某些文件被修改,將創建一個新版本的子文件夾並且servlet要在這裏尋找:

/app-files/version0002/.... 

我怎麼可以在我的servlet這個版本變量,使其全局訪問,當我需要修改它,我可以在一個線程安全的方式?

變量將被修改,我的互聯網服務,這將使像一個HTTP請求:

www.example.com/updateVersion?v=0003&secretKey=asdf23908234asdjf234 
+1

創建一個公共靜態變量並使用同步方法來訪問它 – PbxMan

+0

所以你會知道從請求的URL最新版本? – Jayy

+0

@KaipaMSarma你是什麼意思? – loyalflow

回答

0

要通過多種方式解決這個問題,你可以做到這一點。

1從您的selvlet中創建一個aplication變量。

ServletContext context = request.getSession().getServletContext(); 
context.setAttribute("myversionvariable", "version");//to set it 
Object attribute = context.getAttribute("someValue");//to get it 

2創建一個靜態字符串數組來把你的版本號,以及創建和申報公衆get和set方法爲這個變量。只要訪問是公開的,您可以在應用程序的任何位置更改此變量。防爆。從一個JSP

<%@ page import="com.servlets.MyServlet" %> 
<% MyServlet.getMyServletVarible(); %> 

如果您需要使其線程安全,您可以通過一個同步方法訪問和更改此變量。

private static String myvarVersion; 
private static final int SET = 1; 
public static synchronized String Operation (String value, int operation){ 
    if(operation == SET){ 
     myvarVersion = value; 
     return ""; 
    } else{ 
     return myvarVersion; 
    } 
} 

*有可利用原子組成部分,同步不同的方式,等

我希望這可以幫助做這樣我們的方式。

+0

但是,這可以從過濾器內部訪問嗎?或者只有這個單一的servlet? – loyalflow

+0

按照提問回覆評論。 – PbxMan