http://www.cnblogs.com/oh3o/p/3224562.htmlphp
JSP: 全名爲java server page,其根本是一個簡化的Servlet。html
Servlet:Servlet是一種服務器端的Java應用程序,能夠生成動態的Web頁面。前端
JavaEE: JavaEE是J2EE新的名稱。更名目的是讓你們清楚J2EE只是Java企業應用。java
什麼叫Jsp什麼叫Java我真的很是讓你們搞清楚!拜託別一上來就來一句:「前幾天我搞了一個jsp的服務器,可難吭了。」。nginx
請你們分清楚什麼是jsp什麼是JavaEE! Java平臺結構圖:web
能夠看到Java平臺很是的龐大,而開發者的分化爲:數據庫
列舉這兩個圖的緣由就是讓你知道你看到的JSP不過是冰山一角,Jsp技術不過是Java初級開發人員必備的技術而已。apache
我今天要講的就是Java樹的最下面的兩層了,也是初級工程師須要掌握的東西。編程
Web請求與相應簡要的流程:後端
這是一個典型的就是客戶端發送一個HTTP請求到服務器端,服務器端接收到請求並處理、響應的一個過程。
若是請求的是JSP,tomcat會把咱們的JSP編譯成Servlet也就是一個普通的Java類。
其實JSP是Servlet的一種特殊形式,每一個JSP頁面就是一個Servlet實例。Servlet又是一個普通的Java類它編譯後就是一個普通的class文件。
這是一個普通的jsp腳本頁面,由於我只用JSP來做爲展現層僅僅作了簡單的後端數據的頁面展現:
上圖能夠很是清晰的看到一般的Jsp在項目中的地位並不如咱們大多數人所想的那麼重要,甚至是無關緊要!由於咱們徹底能夠用其餘的東西來代替JSP做爲前端展現層。 咱們來看一下這個頁面編譯成class後是什麼樣子:
你會發現你根本就看不懂這個class文件,由於這是字節碼文件咱們根本就無法看。經過咱們的TOMCAT編譯後他編程了一個Java類文件保存在Tomcat的work目錄下。
文件目錄:C:apache-tomcat-7.0.34workCatalinalocalhost你的項目名orgapachejsp
咱們只要打開index_jsp.java或者用jd-gui(Java反編譯工具)打開就好了:
有人說這是Servlet嗎?固然了。
繼承HttpJspBase類,該類實際上是個HttpServlet的子類(jasper是tomcat的jsp engine)。
Jsp有着比Servlet更加優越的展示,不少初學PHP的人恐怕很難把視圖和邏輯分開吧。好比以前在寫PHPSQL注入測試的DEMO:
這代碼看起來彷佛沒有什麼大的問題,也能正確的跑起來啊會有什麼問題呢?緣由很簡單這屬於典型的展示和業務邏輯沒有分開!這和寫得爛的Servlet差很少!
說了這麼多,不少人會以爲Servlet很抽象。咱們仍是連建立一個Servlet吧:
建立成功後會自動的往web.xml裏面寫入:
其實就是一個映射的URL和一個處理映射的類的路徑。而咱們自動生成的Java類精簡後大體是這個樣子:
請求響應輸出內容:
熟悉PHP的大神們這裏就不作解釋了哦。瞭解了Jsp、Servlet咱們再來很是簡單的看一下JavaWeb應用是怎樣跑起來的。
加載web.xml的配置而後從配置裏面獲取各類信息爲WEB應用啓動準備。
快速定位數據庫鏈接信息:
你們可能都很是關心數據庫鏈接通常都配置在什麼地方呢?
答案廣泛是:C:apache-tomcat-7.0.34/webapps/wordpress/WEB-INF
下的***.xml
大多數的Spring框架都是配置在applicationContext裏面的:
若是用到Hibernate框架那麼:WebRootWEB-INFhibernate.cfg.xml
還有一種變態的配置方式就是直接卸載源代碼裏面:
Tomcat的數據源(其餘的服務器大同小異):
目錄:C:apache-tomcat-7.0.34confcontext.xml、server.xml
Resin數據源:
路徑:D:installDev
esin-pro-4.0.28conf
esin.conf(resin 3.x是resin.xml)
其餘的配置方式諸如讀取如JEECMS讀取的就是.properties配置文件,這種方式很是的常見:
0x01 Tomcat 基礎
沒錯,這就是 TOM 貓。樓主跟這隻貓打交道已經有好幾年了,在 Java 應用當中 TOMCAT 運用的很是的普遍。
TOM 貓是一個 Web 應用服務器,也是 Servlet 容器。
Apache+Tomcat 作負載均衡:
如何快速的找到tomcat的安裝路徑:
一、不論是誰都應該明白的是無論apache仍是tomcat安裝的路徑都是隨意的,因此找不到路徑也是很是正常的。
二、在你的/etc/httpd/conf/httpd.conf裏面會有一個LoadModule jk_module配置用於集成tomcat而後找到JkWorkersFile也就是tomcat的配置,找到.properties的路徑。httpd裏面也有可能會配置路徑若是沒有找到那就去apache2confextrahttpd-vhosts看下有沒有配置域名綁定。
三、在第二步的時候找到了properties配置文件並讀取,找到workers.tomcat_home也就是tomcat的配置路徑了。
四、獲得tomcat的路徑你尚未成功,域名的具體配置是在conf下的server.xml。
五、讀取server.xml不出意外你就能夠找到網站的目錄了。
六、若是第五步沒有找到那麼去webapps目錄下ROOT瞧瞧默認不配置的話網站是部署在ROOT下的。
七、這一點是附加的科普知識愛聽則聽:數據庫若是啓用的tomcat有可能會採用tomcat的數據源配置未見爲conf下的context.xml、server.xml。若是網站有域名綁定那麼你能夠試下ping域名而後帶上端口訪問。有可能會出現tomcat的登陸界面。tomcat默認是沒有配置用戶登陸的,因此當tomcat-users.xml下沒有相關的用戶配置就別在這裏浪費時間了。
八、若是配置未找到那麼到網站目錄下的WEB-INF目錄和其下的classes目錄下找下對應的properties、xml(通常都是properties)。
九、若是你夠蛋疼能夠讀取WEB.XML下的classess內的源碼。
十、祝你好運。
普通的域名綁定:
直接添加到confhttpd.conf、confextrahttpd-vhosts.conf
在resin的conf下的resin.conf(resin3.x)和resin.xml(resin4.x)
Resin apache 負載均衡配置(從我之前的文章中節選的)
APACHE RESIN 作負載均衡,Resin 用來作 JAVAWEB 的支持,APACHE 用於處理靜態
和 PHP 請求,RESIN 的速度飛快,RESIN 和 apache 的配合應該是很是完美的吧。
域名解析:
apache 的 httpd.conf:
須要修改:Include conf/extra/httpd-vhosts.conf(必定要把前面的#除掉,不然配置不起做用)
普通的域名綁定:
直接添加到 httpd.conf
<VirtualHost *:80> ServerAdmin admin@bjcyw.cn DocumentRoot E:/XXXX/XXX ServerName beijingcanyinwang.com ErrorLog E:/XXXX/XXX/bssn-error_log CustomLog E:/XXXX/XXX/bssn_log common </VirtualHost>
二級域名綁定,須要修改:
E:installapache2confextrahttpd-vhosts.conf
如:
<VirtualHost *:80> DocumentRoot E:/XXXXXXX/XXX ServerName bbs.beijingcanyinwang.com DirectoryIndex index.html index.php index.htm </VirtualHost>
Resin 的
請求處理:
<LocationMatch (.*?).jsp> SetHandler caucho-request </LocationMatch> <LocationMatch (.*?).action> SetHandler caucho-request </LocationMatch> <LocationMatch union-resin-stat-davic> SetHandler caucho-request </LocationMatch> <LocationMatch stat> SetHandler caucho-request </LocationMatch> <LocationMatch load> SetHandler caucho-request </LocationMatch> <LocationMatch vote> SetHandler caucho-request </LocationMatch>
APACHE 添加對 Resin 的支持:
LoadModule caucho_module "E:/install/resin-pro-3.1.12/win32/apache-2.2/mod_caucho. dll"
而後在末尾加上:
<IfModule mod_caucho.c> ResinConfigServer localhost 6800 CauchoStatus yes </IfModule>
只有就能讓 apache 找到 resin 了。
PHP 支持問題:
resin 默認是支持 PHP 的測試 4.0.29 的時候就算你把 PHP 解析的 servlet 配置刪了同樣解析 PHP,無奈換成了 resin 3.1 在註釋掉 PHP 的 servlet 配置就無壓力了。
整合成功後:
做者:園長