整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          JSP 和 Servlet 有哪些相同點和不同點

          JSP 和 Servlet 有哪些相同點和不同點

          SP是Servlet 技術(shù)的擴展,所有的jsp文件都會被翻譯為一個繼承HttpServlet的類,也就是說jsp最終也是一個Servlet ,這個Servlet對外提供服務(wù)。

          Servlet 和jsp最主要的不同點在于jsp側(cè)重于視圖,Servlet 主要用于控制邏輯。

          Servlet 的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開來,Servlet如果要實現(xiàn)HTML的功能,必須使用Writer輸出對應(yīng)的HTML,比較麻煩。而jsp的情況是Java和HTML可以組合成一個擴展名為 .jsp 的文件,做界面展示比較方便而嵌入邏輯比較復雜。

          SP:Java Server Pages。JSP是一種網(wǎng)頁的編碼格式,不同于HTML的是JSP中是由 HTML中的標簽指令 和 Java邏輯代碼 拼湊而成, 其中的Java代碼類似于JavaScript中的邏輯代碼, 但相對比來說JSP中的Java代碼更方便閱讀和書寫.

          一:JSP的運行原理

          當JSP頁面被運行時,WEB容器會把請求交給JSP引擎處理,會將JSP翻譯成一個_jspServlet,然后按照Servlet的調(diào)用方式來進行調(diào)用,

          瀏覽器向服務(wù)器發(fā)請求,不管訪問的是什么資源,其實都是在訪問Servlet,所以當訪問一個jsp頁面時,其實也是在訪問一個Servlet,服務(wù)器在執(zhí)行jsp的時候,首先把jsp翻譯成一個Servlet,所以我們訪問jsp時,其實不是在訪問jsp,而是在訪問jsp翻譯過后的那個Servlet,

          二:Tomcat

          Tomcat在Web中的作用:

          Tomcat是Web中的容器,

          當客戶在Web服務(wù)器中輸入請求的時候, 如果請求的動態(tài)頁面, 那么Web服務(wù)器會創(chuàng)建一個Servlet來處理, Servlet就是Java代碼, 只是在服務(wù)器端的Java代碼, Servlet通過配置文件來攔截客戶所發(fā)出的請求, 并進行相應(yīng)的處理, 最后反饋到客戶端.

          在這一系列的請求中,Web服務(wù)器是如何創(chuàng)建出Servlet來對請求進行處理? 而Tomcat的作用就是幫助Web服務(wù)器來創(chuàng)建Servlet的

          Tomcat是應(yīng)用(java)服務(wù)器,它只是一個Servlet容器,是Apache的擴展,處理動態(tài)頁面的部分

          Tomcat各個文件夾的含義

          • bin:二進制執(zhí)行文件。里面最常用的文件是startup.bat
          • conf:配置目錄。里面最核心的文件是server.xml。可以在里面改端口號等。默認端口號是8080,也就是說,此端口號不能被其他應(yīng)用程序占用。
          • lib:庫文件。tomcat運行時需要的jar包所在的目錄
          • logs:日志
          • temp:臨時產(chǎn)生的文件,即緩存
          • webapps:web的應(yīng)用程序。web應(yīng)用放置到此目錄下瀏覽器可以直接訪問
          • work:編譯以后的class文件。

          當我們通過瀏覽器訪問index.jsp時,服務(wù)器首先將index.jsp翻譯成一個index_jsp.class,在Tomcat服務(wù)的work\Catalina\localhost\項目名\org\apache\jsp 目錄下可以看到index_jsp.class的源代碼文件index_jsp.java

          index_jsp這個類是繼承 org.apache.jasper.runtime.HttpJspBase這個類的,通過查看Tomcat服務(wù)器的源代碼,可以知道在apache-tomcat-6.0.20-src\java\org\apache\jasper\runtime目錄下存HttpJspBase這個類的源代碼文件

          HttpJspBase 類是繼承 HttpServlet 的,所以 HttpJspBase 類是一個 Servlet ,而 index_jsp 又是繼承 HttpJspBase類的,所以index_jsp類也是一個Servlet,所以當瀏覽器訪問服務(wù)器上的index.jsp頁面時,其實就是在訪問index_jsp這個Servlet,index_jsp這個Servlet使用_jspService這個方法處理請求。

          三:Jsp中的HTML代碼和Java代碼如何發(fā)送到客戶端

          1:jsp中的代碼是由 Java代碼 和 HTML 代碼組成的 但是兩種不同的代碼是如何實現(xiàn)他們的作用的?

          在客戶端發(fā)出請求時(請求的是動態(tài)代碼) 但是客戶端卻只能看到HTML代碼, Java代碼是客戶端看不到的

          原因是: 請求的JSP頁面中,所有的代碼是通過了Web服務(wù)器(在Tomcat下)編譯后的Servlet代碼, 在jsp中編寫的java代碼和html代碼都會被翻譯到_jspService方法中去,在jsp中編寫的java代碼會原封不動地翻譯成java代碼,如<%out.print("HelloJsp");%>直接翻譯成out.print("Hello Jsp");,而HTML代碼則會翻譯成使用out.write("<html標簽>\r\n");的形式輸出到瀏覽器。在jsp頁面中編寫的html排版標簽都是以out.write("<html標簽>\r\n");的形式輸出到瀏覽器,瀏覽器拿到html代碼后才能夠解析執(zhí)行html代碼。

          當執(zhí)行_jspService方法處理請求時,就會執(zhí)行在jsp編寫的java代碼了,所以Jsp頁面中的java代碼服務(wù)器是通過調(diào)用_jspService方法處理請求時執(zhí)行的。(_jspService中的Java代碼是實現(xiàn)動態(tài)頁面的邏輯基礎(chǔ))


          主站蜘蛛池模板: 一区二区三区四区在线播放 | 精品香蕉一区二区三区| 精品视频一区二区三区四区五区| 日韩精品人妻av一区二区三区| 亚洲国产精品一区二区九九| 国产在线精品一区二区在线观看 | 高清一区二区三区免费视频| 国产精华液一区二区区别大吗 | 在线一区二区三区| 日本强伦姧人妻一区二区| 一区二区精品视频| 一区二区三区视频在线| 国产情侣一区二区| 无人码一区二区三区视频| 亚洲国产一区在线观看| 国产精品一区二区三区高清在线 | 亚洲AV无码片一区二区三区| 日本中文一区二区三区亚洲| 91久久精品一区二区| 内射一区二区精品视频在线观看| 亚洲日韩精品一区二区三区无码| 亚洲Av无码一区二区二三区| 精品3d动漫视频一区在线观看| 国产成人精品一区二区秒拍| 精品国产一区二区二三区在线观看 | 中文字幕一区在线播放| 亚洲一区二区三区乱码在线欧洲| 一区二区高清在线观看| 国产精品一区视频| 夜夜嗨AV一区二区三区| 色屁屁一区二区三区视频国产| 清纯唯美经典一区二区| 国产伦精品一区二区三区无广告| 亚洲老妈激情一区二区三区| 国产精品电影一区二区三区| 亚洲视频一区在线观看| 91一区二区三区| 国产福利一区二区| 国产香蕉一区二区在线网站| 久久精品国产一区二区三区日韩| 国产精品va一区二区三区|