jsp与java的关系_jsp教程中:jsp与servlet的区别和关系
jsp教程上:我們一定學了servlet,也學習了jsp,那么jsp與servlet的區別是什么呢,jsp與servlet又有什么關系呢?下面我們先創建一個demo.jsp的頁面,然后tomcat運行,看看jsp編譯之后是怎么樣的呢?
String?path?=?request.getContextPath();
String?basePath?=?request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">
">
jsp演示代碼SimpleDateFormat?sf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
out.write("輸出當前時間:"+sf.format(new?Date()));
%>
demo.jsp代碼運行的結果是:輸出當前時間:2017-02-08?22:09:10
上面的代碼已經運行之后,我們再到tomcat服務器的work\Catalina文件夾里面去查看編譯后生成的demo_jsp.java這個文件,看看demo.jsp文件被編譯之后變成java文件之后是什么樣子的。package?org.apache.jsp;
import?javax.servlet.*;
import?javax.servlet.http.*;
import?javax.servlet.jsp.*;
import?java.text.SimpleDateFormat;
import?java.util.*;
public?final?class?demo_jsp?extends?org.apache.jasper.runtime.HttpJspBase
implements?org.apache.jasper.runtime.JspSourceDependent?{
//刪除了部分代碼
public?void?_jspService(final?javax.servlet.http.HttpServletRequest?request,?final?javax.servlet.http.HttpServletResponse?response)
throws?java.io.IOException,?javax.servlet.ServletException?{
final?javax.servlet.jsp.PageContext?pageContext;
javax.servlet.http.HttpSession?session?=?null;
final?javax.servlet.ServletContext?application;
final?javax.servlet.ServletConfig?config;
javax.servlet.jsp.JspWriter?out?=?null;
final?java.lang.Object?page?=?this;
javax.servlet.jsp.JspWriter?_jspx_out?=?null;
javax.servlet.jsp.PageContext?_jspx_page_context?=?null;
try?{
response.setContentType("text/html;charset=utf-8");
pageContext?=?_jspxFactory.getPageContext(this,?request,?response,
null,?true,?8192,?true);
_jspx_page_context?=?pageContext;
application?=?pageContext.getServletContext();
config?=?pageContext.getServletConfig();
session?=?pageContext.getSession();
out?=?pageContext.getOut();
_jspx_out?=?out;
out.write("\r\n");
out.write("\r\n");
String?path?=?request.getContextPath();
String?basePath?=?request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
out.write("\r\n");
out.write("HTML?PUBLIC?\"-//W3C//DTD?HTML?4.01?Transitional//EN\">\r\n");
out.write("\r\n");
out.write("??
\r\n");out.write("????
out.print(basePath);
out.write("\">\r\n");
out.write("????\r\n");
out.write("????
jsp演示代碼\r\n");out.write("??\r\n");
out.write("??
\r\n");out.write("????");
SimpleDateFormat?sf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
out.write("輸出當前時間:"+sf.format(new?Date()));
out.write("\r\n");
out.write("??\r\n");
out.write("\r\n");
}?catch?(java.lang.Throwable?t)?{
if?(!(t?instanceof?javax.servlet.jsp.SkipPageException)){
out?=?_jspx_out;
if?(out?!=?null?&&?out.getBufferSize()?!=?0)
try?{
if?(response.isCommitted())?{
out.flush();
}?else?{
out.clearBuffer();
}
}?catch?(java.io.IOException?e)?{}
if?(_jspx_page_context?!=?null)?_jspx_page_context.handlePageException(t);
else?throw?new?ServletException(t);
}
}?finally?{
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}
你會發現上面的demo.jsp文件被編譯成了servlet的代碼,其實jsp和servlet的區別就是表現形式不一樣,本質卻是一樣的,servlet是完全可以替代這個demo.jsp來輸出這個頁面,但是為什么又需要jsp呢?
這是因為在實際項目中,jsp有網頁標簽,適合做網頁界面的設計,如果所有的js和css都通過servlet來write輸出的話,代碼會變得非常繁瑣,所以實際項目中servlet主要負責網站后臺邏輯的實現,jsp主要負責的是頁面的布局和后臺數據的獲取。
jsp和servlet的關系實際上就是一種互補的關系,只是職責不一樣,完整學習jsp教程,請看下一篇:10分鐘學會使用jsp內置對象域對象及el表達式
來源網站:太平洋學習網,轉載請注明出處:http://www.tpyyes.com/a/javaweb/63.html
總結
以上是生活随笔為你收集整理的jsp与java的关系_jsp教程中:jsp与servlet的区别和关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一部外国老电影《德黑兰30年》剧情
- 下一篇: 上海欢乐谷两次入园票是什么意思