spring 事務支持,需要事務支持。
xxAction繼承BaseAction,BaseAction注入了一個CommonManager,BaseAction.commonSave()方法調用了commonManager。
本來想xxAction調用父類的commonSave方法將會導致commonManager為null的錯誤,因為jvm去初始化BaseAction時并不會去注入CommonManger。
其實解決這個問題只需要在子類xxAction bean配置文件中加上commonManager這個property,然后把父類BaseAction的commonManager 改為protected就 Ok了。這樣初始化子類的時候會注入commonManager,調用commonSave方法也就不會拋出npe了。
配置文件中把xxAction 加上parent的配置也是可以的,這樣會把父類的所有property都注入
增加CMS static page 預讀功能
用戶密碼使用動態密鑰SHA-512位加密
系統會給出step by step 的配置表單
配置比如 密碼密鑰 等 關鍵數據
配置比如 密碼密鑰 等 關鍵數據
增加系統配置文件
在 StartupListener 內
每次重啟讀取
在 StartupListener 內
每次重啟讀取
支持動態讀取系統配置的url列表,標記為 static , 權限可配置
放在 StartupListener 內。
做到每次系統重啟都自動更新,有校驗匹配的功能。
javax.servlet.http.Cookie
JSESSIONID = 當前session 號碼
org/apache/coyote/Request.java
基本封裝類,包括基本request 信息
其源代碼在此可以查看 http://www.docjar.com/html/api/org/apache/coyote/Request.java.html
public Request() {
72
73 parameters.setQuery(queryMB);
74 parameters.setURLDecoder(urlDecoder);
75 parameters.setHeaders(headers);
76
77 methodMB.setString("GET");
78 uriMB.setString("/");
79 queryMB.setString("");
80 protoMB.setString("HTTP/1.0");
81
82 }
83
開始初始化
回收
// -------------------- Recycling --------------------
459
460
461 public void recycle() {
462 bytesRead=0;
463
464 contentLength = -1;
465 contentTypeMB = null;
466 charEncoding = null;
467 headers.recycle();
468 serverNameMB.recycle();
469 serverPort=-1;
470 localPort = -1;
471 remotePort = -1;
472
473 cookies.recycle();
474 parameters.recycle();
475
476 unparsedURIMB.recycle();
477 uriMB.recycle();
478 decodedUriMB.recycle();
479 queryMB.recycle();
480 methodMB.recycle();
481 protoMB.recycle();
482 //remoteAddrMB.recycle();
483 //remoteHostMB.recycle();
484
485 // XXX Do we need such defaults ?
486 schemeMB.recycle();
487 methodMB.setString("GET");
488 uriMB.setString("/");
489 queryMB.setString("");
490 protoMB.setString("HTTP/1.0");
491 //remoteAddrMB.setString("127.0.0.1");
492 //remoteHostMB.setString("localhost");
493
494 instanceId.recycle();
495 remoteUser.recycle();
496 authType.recycle();
497 attributes.clear();
498 }
偉大的method() 方法
public MessageBytes method() {
184 return methodMB;
185 }
186
getMethod() 方法就是從這里搞來的。
還有 org.apache.tomcat.util.http.MimeHeader 存放了所有的Header 信息
=== MimeHeaders ===
accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
referer = http://localhost/user/userRegister.html
accept-language = zh-CN,en-US;q=0.5
content-type = application/x-www-form-urlencoded
ua-cpu = x86
accept-encoding = gzip, deflate
user-agent = Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; MAXTHON 2.0)
host = localhost
content-length = 70
connection = Keep-Alive
cache-control = no-cache
cookie = JSESSIONID=06820B9CA579BF64CC89C5E041864459
JSESSIONID = 當前session 號碼
org/apache/coyote/Request.java
基本封裝類,包括基本request 信息
其源代碼在此可以查看 http://www.docjar.com/html/api/org/apache/coyote/Request.java.html
public Request() {
72
73 parameters.setQuery(queryMB);
74 parameters.setURLDecoder(urlDecoder);
75 parameters.setHeaders(headers);
76
77 methodMB.setString("GET");
78 uriMB.setString("/");
79 queryMB.setString("");
80 protoMB.setString("HTTP/1.0");
81
82 }
83
開始初始化
回收
// -------------------- Recycling --------------------
459
460
461 public void recycle() {
462 bytesRead=0;
463
464 contentLength = -1;
465 contentTypeMB = null;
466 charEncoding = null;
467 headers.recycle();
468 serverNameMB.recycle();
469 serverPort=-1;
470 localPort = -1;
471 remotePort = -1;
472
473 cookies.recycle();
474 parameters.recycle();
475
476 unparsedURIMB.recycle();
477 uriMB.recycle();
478 decodedUriMB.recycle();
479 queryMB.recycle();
480 methodMB.recycle();
481 protoMB.recycle();
482 //remoteAddrMB.recycle();
483 //remoteHostMB.recycle();
484
485 // XXX Do we need such defaults ?
486 schemeMB.recycle();
487 methodMB.setString("GET");
488 uriMB.setString("/");
489 queryMB.setString("");
490 protoMB.setString("HTTP/1.0");
491 //remoteAddrMB.setString("127.0.0.1");
492 //remoteHostMB.setString("localhost");
493
494 instanceId.recycle();
495 remoteUser.recycle();
496 authType.recycle();
497 attributes.clear();
498 }
偉大的method() 方法
public MessageBytes method() {
184 return methodMB;
185 }
186
getMethod() 方法就是從這里搞來的。
還有 org.apache.tomcat.util.http.MimeHeader 存放了所有的Header 信息
=== MimeHeaders ===
accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
referer = http://localhost/user/userRegister.html
accept-language = zh-CN,en-US;q=0.5
content-type = application/x-www-form-urlencoded
ua-cpu = x86
accept-encoding = gzip, deflate
user-agent = Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; MAXTHON 2.0)
host = localhost
content-length = 70
connection = Keep-Alive
cache-control = no-cache
cookie = JSESSIONID=06820B9CA579BF64CC89C5E041864459
完成了靈活表單開發。
加緊開發用戶權限,修正用戶列表,用戶編輯,用戶添加,數據庫支持。
開發好以后就可以全面開發CMS系統了。
加緊開發用戶權限,修正用戶列表,用戶編輯,用戶添加,數據庫支持。
開發好以后就可以全面開發CMS系統了。