1. 修改jsp頁面,將jboss部署下的相應文件替換過了,並且刪除了jboss緩存。重啟後,頁面未改變。怎麼回事
改配置文件必定要需要重啟app;
改類和jsp不需要;
你用的是myeclipse嗎?
它的部署機制有時候會有問題,比如「不能修改類的框架」之類。
elcipse出j2ee版本了,建議用那個吧,去eclipse官網下個,別用myeclipse了。
2. 如何使用ant工具調用was編譯器將jsp編譯成jar包
你們的這種做法比較罕見的。
猜測是不是CV層的分割沒有做清楚,很多Business Logic放在JSP里了,但是business classes又需要訪問這些business logic,所以把JSP做成JAR放到lib下。
除此之外,很難理解這么做的原因。按照J2EE的思想,JSP只是View層的東西,為什麼要打包成JAR呢?如果為了避免compile-at-first-hit,WAS提供了選項在的deploy的時候,可以把JSP預編譯的。
另外,WAS的Ant好像是修改過的,你要用WAS帶的ant命令而不是Apache的ant
3. 修改jsp需要重啟tomcat嗎
一般來講都不需要重啟
尤其是JSP,因為JSP是更新之後重新編譯的
java Bean一般也不需要
主要是配置文件(例如XML)改變的時候,需要重新啟動。
不過有些時候JSP改變,界面不會立刻改變,這是由於IE的網頁緩存造成的。讀取相同資源的時候,會優先讀取本地的文件。
如果遇到這種情況,多刷新幾次就好了
最好是重新部署,大傻貓有時候會偷懶
4. MyEclipse中為什麼每次在JSP裡面做了更改只有重新啟動Tomcat之後才能使更改有效
一般來說jsp裡面的更改並不需要重啟tomcat,重啟tomcat通常是加入了新方法、定義了新的bean,修改了web.xml才需要,你這種情況我總結大概有兩種:
1.你需要清除下緩存,指的是tomcat的緩存
2.不要直接將部署到tomcat里的文件修改或者覆蓋
5. jsp修改以後為什麼不需要重啟伺服器
servlet和jsp本質都是servlet,運行時都是運行.class文件。但是它們的部署方式不一樣。
servlet是先編譯後部署,修改完以後,MyEclipse進行編譯,然後部署.class文件到servlet容器中。如果web伺服器已啟動,則之前class已被servlet容器載入,可能修改後的class文件不會被servlet容器執行。
而jsp是web伺服器進行編譯。載入時當場編譯的,而不是預先編譯好,tomcat可以設置為監視jsp文件的改動,改動之後則重新編譯、執行。所以jsp是改動時,不需要重啟伺服器。
6. 為什麼不改動jsp中的java代碼,就不用重新構建
其實編譯有兩個部分,一個是你源代碼的地方,一個是Tomcat下面的,在初始編譯的時候會將所有的jsp分成兩部分,一部分為web的app文件下。一個是java的work文件下。當你改變jsp裡面的web部分的時候,並不會重新編譯,因為work文件並不需要改變。而java文件改變則需要。
7. 我知道jsp第一次被編譯為servlet比較慢,那麼只有jsp被修改了一點點是不是就要全部重新編譯啊
是的...jsp 會被編譯(解析...字元串替換?)為servlet在進行編譯為位元組碼文件.
8. 為什麼修改jsp不需要重啟伺服器
就一句話
啟動時載入後不變和啟動後修改可以重新解析!!
下面是說明:
javaBean和Servlet需要事先編譯好 因為web伺服器只負責使用classes而不編譯classes,然後在伺服器啟動的時候就載入,也就是說在伺服器沒有重啟以前這些載入好了的classes是不會發生變化的,要讓這些classes的改變生效的話只有重啟伺服器重新載入,其實也就是classes的更新了.
以上理解為要用新的就要重新載入!!
而jsp頁面是由web伺服器負責解析的,你每次改了jsp頁面以後是要保存後刷新的,而刷新的作用就是告訴web伺服器重新解析,只有在web伺服器啟動的時候才可以解析!!,但與是否重啟伺服器無關,因為就算你重啟伺服器,它解析jsp的方式也是那樣,是實現好了的,不會改變!你只要用他解析jsp也就好了.
以上理解為要用新的只要重新解析!!
最好的理解方式是什麼呢??
你可以把jsp頁面的"保存"對等與Servlet的載入,因為保存後在你不修改以前不發生變化
而載入後在你不重啟伺服器以前不發生變化
但是我的在我的印象中是不管使用什麼伺服器都是這個原理,也就是與伺服器無關!!!