我下午就感觉怪了,老师忽然不写  <%  改用 <jsp:scriptlet>  当时没去多想 他说为了格式更好一点
  我今晚在家在 myeclipse7.0  怎么打怎么没有 以为是下午他刚讲的  EL表达式  结果不是
  想想会不会是 下午另讲的  JSTL  也不是  但是 页面打不出来  是怎么回事啊
  <jsp:scriptlet> 这个我记得有啊
   希望大家讲解一下 <jsp:scriptlet> 这是什么   我晕死了
   在网上找了好久 好像也没有这种表达方法  但myeclipse中好像也有一些 <jsp:userbean>
   难道这些都是 一样的 不过我很纳闷   <jsp:scriptlet> 为什么没有
 在前面的教程中我们已经在一个scriptlet中使用了“out”变量来产生HTML输出。对于更复杂的HTML,如果我们还是使用“out”变量那就会失去JSP编程的许多优势。其实我们可以很简单地就实现Scriptlets 和 HTML的混合。
  假如你要在HTML产生一个表格。产生表格是一个普通的操作,在实践中你可能想从一个SQL表格或者从文件的行产生一个表格。为了是所举的例子尽量的简单,我们产生一个表格,使这个表格包含从1到N的数字。虽然以下的例子不是很有用,但是你从中可以学到一些技巧的。以下就是JSP的程序片段:
  <TABLE BORDER=2>
  <%
  for ( int i = 0; i < n; i++ ) {
  %>
  <TR>
  <TD>Number</TD>
  <TD><%= i+1 %></TD>
  </TR>
  <%
  }
  %>
  </TABLE>
  在编制代码之前,你应该首先定义一个整型(int)变量“n”,利用这个变量我们要输出“n”行的表格。从上面的代码中我们可以注意到%> 和 <%字符出现在“for”循环中,原来这是为了使你退到HTML然后又回到scriptlet,其实这正是Scriptlets 和 HTML的混合的技巧。
  上面的代码其实很简单:可以退出scriptlet的时候,就编写HTML;然后又回到scriptlet中去。任何的循环控制表达式,比如“while”或者“for”循环以及“if”语句都可以控制HTML。如果HTML处在一个循环中它就会在每一次的循环中执行一次。
JSP简单的说就是HTML+Java代码,文件后缀为.jsp的文件。
JSP和Servlet是JavaEE的重要基础,看起来JSP和Servlet是两个完全不同的东西,但是JSP其实就是Servlet的一种形式,JSP最终需要被编译成Servlet;
JSP页面必须部署到web容器中才能够访问,因为单单的JSP页面时没有用处的;必须要转换成Servlet才能够使用;
JSP是面向对象的,因为最后会变成Servlet,而Servlet是一个类,这个可能不好理解,下面会有讲解.
而用户访问JSP页面看到的输出时Servlet输出流的结果;
JSP可以不处理异常,因为如果产生异常有两种处理方法:
1.在浏览器页面显示;
2.跳转到errorPage;
JSP到Servlet的转换
当第一次访问某个JSP文件时,web服务器会将JSP文件转换成Servlet,再由Servlet提供输出流将HTML输出给客户.因此客户接触的只是HTML而已,而JSP的处理过程都是在服务器完成的;
注意:每个Servlet类的对象在容器中只有一个,因此每个客户访问的同一个JSP页面都是一个Servlet对象;
假设有null.jsp文件,此文件内容为空,如下所示:
[html] view plain copy
- <%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" info="This is a JSP " %>  
 - <html>  
 -     <body>  
 -     </body>  
 - </html>  
 
在tomcat的work目录中会生成null_jsp.java和null_jsp.class,null_jsp.java的代码如下:
[java] view plain copy
- package org.apache.jsp;  
 -   
 - import javax.servlet.*;  
 - import javax.servlet.http.*;  
 - import javax.servlet.jsp.*;  
 -   
 -   
 - //HttpJspBase是Servlet的子类  
 - /* 
 - 此类主要有三个方法组成: 
 - 1.init();   初始化 
 - 2.destroy(): 销毁 
 - 3.service();  接收客户端请求并处理 
 - */  
 -   
 -   
 - public final class null_jsp extends org.apache.jasper.runtime.HttpJspBase  
 -     implements org.apache.jasper.runtime.JspSourceDependent {  
 -   
 -   public String getServletInfo() {  
 -     return "This is a JSP ";  
 -   }  
 -   
 -   private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();  
 -   
 -   private static java.util.List<String> _jspx_dependants;  
 -   
 -   private javax.el.ExpressionFactory _el_expressionfactory;  
 -   private org.apache.tomcat.InstanceManager _jsp_instancemanager;  
 -   
 -   public java.util.List<String> getDependants() {  
 -     return _jspx_dependants;  
 -   }  
 -   
 -   public void _jspInit() {  
 -     _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();  
 -     _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());  
 -   }  
 -   
 -   public void _jspDestroy() {  
 -   }  
 -   
 -   public void _jspService(final HttpServletRequest request, final HttpServletResponse response)  
 -         throws java.io.IOException, ServletException {  
 - //生成JSP内置对象  
 -     final PageContext pageContext;  
 -     HttpSession session = null;  
 -     final ServletContext application;  
 -     final ServletConfig config;  
 -     JspWriter out = null;  
 -     final Object page = this;  
 -     JspWriter _jspx_out = null;  
 -     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;  
 - //输出JSP页面中的显示  
 -       out.write("\r\n");  
 -       out.write("<html>\r\n");  
 -       out.write("\t<body>\r\n");  
 -       out.write("\r\n");  
 -       out.write("\t</body>\r\n");  
 -       out.write("</html>");  
 -     } catch (Throwable t) {  
 -       if (!(t instanceof 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);  
 -       }  
 -     } finally {  
 -       _jspxFactory.releasePageContext(_jspx_page_context);  
 -     }  
 -   }  
 - }  
 
从以上代码就可以很清晰地看出JSP和Servlet的关系了,JSP编写的<%%>  <%=%>  和 html代码都是在Service函数中实现;
而<%!  %>中的代码作为Servlet类的成员变量和成员方法;
JSP内置对象就是在这个文件中被创建的。