學習了一段時間的servlet(兩個星期左右),獲得一個結論,早期的java web程序員真苦逼。只有servlet真是很麻煩的事情,還好有jsp。php
《jsp & servlet學習筆記》中寫着 servlet和jsp是一件事情的兩面。jsp說到底就是servlet,tomcat或其餘的服務器會將jsp翻譯成servlet。這玩意在php裏不就是facebook的hiphop嘛。看來不少東西都是同樣的。有時候咱們不得不去作一些看似費力不討好的工做。好比咱們已經有servlet,爲何還要jsp。咱們已經有c++了,爲何還要php。有了jsp和php咱們還要翻譯成servlet和c++。作這些工做無非是爲了在開發效率和性能之間找個平衡。去請一批c++工程師作web,老闆確定要哭死。讓程序員只能用servlet開發網站,他也得煩死。但是php這樣的膠水語言性能又很差,逼格又低,因此會有hiphop。同理,因此會有servlet和jsp這樣的雙胞胎。html
如今開始學習jsp,@紅薯說已經多年不寫jsp了,都是用velocity,搞得我都沒什麼動力學了,可沒辦法,誰叫我是新手呢,,,,java
有了以前的servlet的學習,學習jsp能夠當成玩你們來找茬。找的第一個東西就是jsp裏的內置對象:c++
out對應PrintWriter;程序員
request對應HttpServletRequest;web
response對應HttpServletResponse;tomcat
config對應ServletConfig;服務器
application對應ServletContext;session
session對應HttpSession;app
pageContext對應PageContext;
execption對應一個異常,用於jsp錯誤頁面;
page對應this;
從上面這些玩意,咱們能夠得出個經驗,那就是咱們能夠把一個jsp就當成一個servlet,也就說一個java文件。也就是說換一種相似於網頁的方式寫java而已,那麼找的第二個茬就是java和jsp的對應關係:
在java,須要導入包的時候,咱們用import。在jsp裏,咱們用< %@page import=「xxx.xxx」 %>
在java,咱們把須要輸出在網頁的東西用out.println()輸出,在jsp裏,咱們一樣能夠用out.println,但須要加上<%%>,好處是在servlet裏,咱們必須寫在doget/post裏,在jsp,想寫哪就寫哪,這樣就完成了網頁和代碼混合(有種別學我大php)。jsp還提供了一種簡潔的方式<%=xxxx%>,用=代替了out.println()
在java裏,咱們能夠再servlet添加一些自定義的函數和變量,在jsp裏咱們能夠再<%! %>這樣的標識符裏寫變量和函數。
在tomcat裏有個work\Catalina的目錄,裏面放了咱們寫的jsp編譯後的java文件,咱們能夠看到咱們的jsp翻譯以後的servlet,這就是性能爲開發效率讓步的例子,因此咱們第一次訪問jsp會比較慢,這是由於它在編譯。
在上面這些東西里,咱們以前的servlet經驗均可以搬到jsp裏,注意一些細節就ok了。
可是若是jsp這是完成了代碼和html混合的話,那麼效率也就提升了一些,jsp還提升了一些servlet沒有的技術支持(既然都已經向開發效率低頭,那還扭捏什麼,還不低個痛快)更好的提升開發效率,接下來就好好學學新的一些技術:
javabean:想讓from表單直接映射到對象裏嗎
el 這是否是也算個模板引擎
jstl 不太清楚是什麼東西