JSP JavaBean Servlet工作原理實例講解

<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; /* 336x280, 創建於 07-11-21 */ google_ad_slot = "0989131976"; google_ad_width = 336; google_ad_height = 280; // </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> JSP JavaBean兩層結構的開發應該是比較熟悉的,也比較好理解。 但是有一點必須要清楚就是用戶通過瀏覽器來發送網頁的請求,此請求到達服務器後在服務器端查找對應 的網頁,如果是首次請求(第二次就不用解釋執行了),對於JSP來說要生成Servlet,然後通過Servlet 引擎來執行Servlet,把調用JavaBean的結果嵌入到頁面中返回給用戶的瀏覽器。 JSP JavaBean Servlet三層結構的實質是多了一個Controller:Servlet來分發客戶端瀏覽器的請求。如 果把起控制器作用的Servlet的作用理解爲對客戶端的請求進行預處理對理解Servlet將有很大的幫助。通 過web.xml配置文件可以找到用戶請求和特定的Servlet的對應關係,每個Servlet都有一個特定的Servlet 對象與之對應,所以說處理用戶請求的就是一個繼承自HttpServlet的Servlet對象。 &lt!-- JSPC servlet mappings start --&gt &ltservlet&gt &ltservlet-name&gtms1&lt/servlet-name&gt &ltservlet-class&gtnews.FirstAction&lt/servlet-class&gt &lt/servlet&gt &ltservlet&gt &ltservlet-name&gtms2&lt/servlet-name&gt &ltservlet-class&gtnews.DetailAction&lt/servlet-class&gt &lt/servlet&gt &lt!-- JSPC servlet mappings end --&gt &ltservlet-mapping&gt &ltservlet-name&gtms1&lt/servlet-name&gt &lturl-pattern&gt/newsmain&lt/url-pattern&gt &lt/servlet-mapping&gt &ltservlet-mapping&gt &ltservlet-name&gtms2&lt/servlet-name&gt &lturl-pattern&gt/newsDetail&lt/url-pattern&gt &lt/servlet-mapping&gt 如上面所示的摘自web.xml的一段配置servlet,第一部分主要用來配置Servlet與具體的Servlet對象關聯 ,第二部分主要用來配置請求由哪個Servlet處理,Servlet名字的關聯,處理請求就與具體Servlet處理 對象關聯起來,比如說,客戶端瀏覽器發來/newsmain的請求,它由ms1 servlet進行處理,通過ms1就能 找到相對應的serlet對象news.FirstAction,即/newsmain-&gtms1-&gtnews.FirstAction,這也就是配置 文件的意義所在。到現在懂得了用戶/newsmain請求會被news.FirstAction類的對象進行處理,所以說, 要看懂程序就要看懂FirstAction的作用是什麼就行了。比如說下面是FirstAction的一個實現。 public final class FirstAction extends HttpServlet { protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { DB db = new DB(); HttpSession session = req.getSession(); try { session.setAttribute(Constants.NEWS_LIST_KEY, News .SearchNewsTitle(db)); } catch (Exception e) { e.printStackTrace(); } db.close(); String target = "/P43_News/newsMain.jsp"; resp.sendRedirect(target); } } 通過這個實現可以看到,當服務器收到客戶端請求執行News.SearchNewsTitle(db)的操作,然後把返回值 通過session.setAttribute放到session裏,然後通過resp.sendRedirect(target)間接轉移到 newsMain.jsp,這樣在newsMain.jsp裏通過session.getAttribute函數就可以得到在存儲在session裏的 對應值。 回過頭來就容易看出JSP JavaBean兩層結構和JSP JavaBean Servlet三層結構的不同了,兩層結構必須把 預處理放在JSP中進行,比如說News.SearchNewsTitle(db),三層結構先把預處理在Servlet裏進行了,然 後相當於把這個處理結果通過Session返回給JSP,讓JSP更關注於界面的顯示
發佈了2570 篇原創文章 · 獲贊 2 · 訪問量 116萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章