servlet類處理傳入的請求對象,將數據存儲到StringBuilder/StringBuffer中,並將數據傳遞到另一個類以寫入文件。我真的應該關心servlet中的線程安全問題操作類
ActionClass
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
String fileName = request.getparameter("fileName");
String body = request.getParameter("innerHTML");
String head = request.getParameter("headContents");
StringBuilder sbr = new StringBuilder();
sbr.append(body); sbr.append(head);
OR
StringBuffer sbf = new StringBuffer();
sbf.append(body); sbf.append(head);
FileWrite fw = new FileWrite(fileName, sbf/sbr); /* write the data into file*/
}
FILEWRITE
class FileWrite{
public FileWrite(String fileName, StringBuilder sbf){
boolean isExist = checkFileName(fileName); /* return true or false */
if(isExist){
String name = reName(fileName); /* rename & return new name */
/* write the file in new file */
}else{ /* write in same file name */ }
}
public String reName(String oldName){
/* rename oldName as newName & checks via isExist(newName) */
}
public boolean isExist(String filename) {
// checks the file in directory, if found already
return true;
else return false;
}
}
,你可以看到在上面的例子,操作類的數據傳送到FileWrite class
其將數據寫入一個新文件。有數百個客戶端可能同時發送請求將數據存儲在新文件中。
所以我的問題是,在servlet類中應該用什麼來存儲數據。是不是String or stringBuffer or StringBuilder
??是線程安全的問題嗎?
我會建議你展示你的代碼是什麼方法,以便我們不必做出假設(根據尼爾關於doGet或doPost的評論) – Nathan
@Nathan:我已修改並編寫了其他類和方法。我不確定'FileWrite類或它的方法'是否需要線程安全,但我希望你現在可以明白我的觀點。再次感謝 – user1010399