JSP有9个内置工具:

- request:封装客户真个要求,个中包含来自GET或POST要求的参数;

- response:封装做事器对客户真个相应;

当多个用过请求同一个jsp来学Java吧JSP中内置对象及感化 Node.js

- pageContext:通过该工具可以获取其他工具;

- session:封装用户会话的工具;

- application:封装做事器运行环境的工具;

- out:输出做事器相应的输出流工具;

- config:Web运用的配置工具;

- page:JSP页面本身(相称于Java程序中的this);

- exception:封装页面抛出非常的工具。

补充:如果用Servlet来天生网页中的动态内容无疑是非常繁琐的事情,另一方面,所有的文本和HTML标签都是硬编码,纵然做出眇小的修正,都须要进行重新编译。
JSP办理了Servlet的这些问题,它是Servlet很好的补充,可以专门用作为用户呈现视图(View),而Servlet作为掌握器(Controller)专门卖力处理用户要求并转发或重定向到某个页面。
基于Java的Web开拓很多都同时利用了Servlet和JSP。
JSP页面实在是一个Servlet,能够运行Servlet的做事器(Servlet容器)常日也是JSP容器,可以供应JSP页面的运行环境,Tomcat便是一个Servlet/JSP容器。
第一次要求一个JSP页面时,Servlet/JSP容器首先将JSP页面转换成一个JSP页面的实现类,这是一个实现了JspPage接口或其子接口HttpJspPage的Java类。
JspPage接口是Servlet的子接口,因此每个JSP页面都是一个Servlet。
转换成功后,容器会编译Servlet类,之后容器加载和实例化Java字节码,并实行它常日对Servlet所做的生命周期操作。
对同一个JSP页面的后续要求,容器会查看这个JSP页面是否被修正过,如果修正过就会重新转换并重新编译并实行。
如果没有则实行内存中已经存在的Servlet实例。
我们可以看一段JSP代码对应的Java程序就知道统统了,而且9个内置工具的神秘面纱也会被揭开。

JSP页面:

\"大众> { font-family:\公众Arial\"大众; }

Hello, World!

Current time is:

对应的Java代码:

/ Generated by the Jasper component of Apache Tomcat Version: Apache Tomcat/7.0.52 Generated at: 2014-10-13 13:28:38 UTC Note: The last modified time of this file was set to the last modified time of the source file after generation to assist with modification tracking. /packageorg.apache.jsp; importjavax.servlet.; importjavax.servlet.http.; importjavax.servlet.jsp.; publicfinalclassindex_jspextendsorg.apache.jasper.runtime.HttpJspBaseimplementsorg.apache.jasper.runtime.JspSourceDependent{privatestaticfinaljavax.servlet.jsp.JspFactory _jspxFactory = javax.servlet.jsp.JspFactory .getDefaultFactory(); privatestaticjava.util.Map _jspx_dependants; privatejavax.el.ExpressionFactory _el_expressionfactory; privateorg.apache.tomcat.InstanceManager _jsp_instancemanager; publicjava.util.Map getDependants() { return_jspx_dependants; } publicvoid_jspInit() { _el_expressionfactory = _jspxFactory.getJspApplicationContext( getServletConfig().getServletContext()).getExpressionFactory(); _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory .getInstanceManager(getServletConfig()); } publicvoid_jspDestroy() { } publicvoid_jspService( finaljavax.servlet.http.HttpServletRequest request, finaljavax.servlet.http.HttpServletResponse response) throwsjava.io.IOException, javax.servlet.ServletException { // 内置工具便是在这里定义的finaljavax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; finaljavax.servlet.ServletContext application; finaljavax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; finaljava.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'); out.write( '\n'); String path = request.getContextPath(); String basePath = request.getScheme() + \"大众://\公众+ request.getServerName() + \公众:\公众+ request.getServerPort() + path + \"大众/\公众; // 以下代码通过输出流将HTML标签输出到浏览器中out.write( \"大众\r\n\"大众); out.write( \公众\r\n\"大众); out.write( \"大众\r\n\"大众); out.write( \"大众\r\n\"大众); out.write( \"大众 \r\n\"大众); out.write( \"大众 \r\n\"大众); out.write( \"大众 \r\n\"大众); out.write( \"大众 \r\n\"大众); out.write( \公众 \r\n\公众); out.write( \"大众 \r\n\"大众); out.write( \"大众 \r\n\"大众); out.write( \"大众

Hello, World!

\r\n\公众); out.write( \"大众

\r\n\"大众); out.write( \"大众

Current time is: \"大众); out.print( newjava.util.Date().toString()); out.write( \"大众

\r\n\"大众); out.write( \"大众 \r\n\"大众); out.write( \"大众\r\n\公众); } catch(java.lang.Throwable t) { if(!(t instanceofjavax.servlet.jsp.SkipPageException)) { out = _jspx_out; if(out != null&& out.getBufferSize() != 0) try{ out.clearBuffer(); } catch(java.io.IOException e) { } if(_jspx_page_context != null) _jspx_page_context.handlePageException(t); elsethrownewServletException(t); } } finally{ _jspxFactory.releasePageContext(_jspx_page_context); } } }