2、为什么JSP技术也是一种动态web资源的开发技术?
答:因为JSP技术允许在页面中嵌套java代码,以产生动态数据,并且web服务器在执行jsp时,web服务器会传递web开发相关的对象给jsp,jsp通过这些对象,可以与浏览器进行交互,所以jsp当然也是一种动态web资源开发技术。
3、强调一个概念:对现在的用户而言,认为通过浏览器看到的东西都是网页。但我们程序员心里要清楚,开一个浏览器访问网页,这些网页有可能是一个html页面(即静态web资源),也有可能是一个动态web资源(即servlet或jsp程序输出的)。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.Date"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% Date date = new Date(); %> <%= date %> </body> </html>
package org.apache.jsp.jsp; import java.io.IOException; import java.util.Date; import java.util.Map; import javax.el.ExpressionFactory; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.jsp.JspApplicationContext; import javax.servlet.jsp.JspFactory; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.SkipPageException; import org.apache.jasper.runtime.HttpJspBase; import org.apache.jasper.runtime.InstanceManagerFactory; import org.apache.jasper.runtime.JspSourceDependent; import org.apache.tomcat.InstanceManager; public final class NewFile_jsp extends HttpJspBase implements JspSourceDependent { private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory(); private static Map<String, Long> _jspx_dependants; private ExpressionFactory _el_expressionfactory; private InstanceManager _jsp_instancemanager; public Map<String, Long> getDependants() { return _jspx_dependants; } public void _jspInit() { this._el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); this._jsp_instancemanager = InstanceManagerFactory.getInstanceManager(getServletConfig()); } public void _jspDestroy() { } public void _jspService(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { JspWriter out = null; JspWriter _jspx_out = null; PageContext _jspx_page_context = null; try { response.setContentType("text/html; charset=UTF-8"); PageContext pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; pageContext.getServletContext(); pageContext.getServletConfig(); pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.write("\r\n"); out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n"); out.write("<html>\r\n"); out.write("<head>\r\n"); out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n"); out.write("<title>Insert title here</title>\r\n"); out.write("</head>\r\n"); out.write("<body>\r\n"); out.write("\t"); Date date = new Date(); out.write(13); out.write(10); out.write(9); out.print(date); out.write("\r\n"); out.write("</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 (IOException localIOException) { } if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); else throw new ServletException(t); } } finally { _jspxFactory.releasePageContext(_jspx_page_context); } } }
1、JSP模版元素
语法:<%= 变量或表达式 %> 举例:当前时间:<%= new java.util.Date() %>
<%
多行java代码
%>
<% int x = 10; out.println(x); %> <p>这是JSP页面文本</p> <% int y = 20; out.println(y); %>
多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情况。如:out.println(x);
3>单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句,例:
<%
for (int i=1; i<5; i++) {
%>
<H1>www.it315.org</H1>
<%
}
%>
4、JSP声明,一般很少使用
<%!
java代码
%>
<%@ 指令 属性名="值" %> 举例:<%@ page contentType="text/html;charset=gb2312"%>
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.util.Date"%> 或 <%@ page contentType="text/html;charset=gb2312" import="java.util.Date"%>
Page指令
<%@ page [ language="java" ] //页面嵌套的语言 [ extends="package.class" ] //jsp servlet继承的包,一般不要修改 [ import="{package.class | package.*}, ..." ] //jsp Servlet引入的包 [ session="true | false" ] //是否引入session,ture的话,jsp引擎会传给jsp Session 对象 [ buffer="none | 8kb | sizekb" ] //关于缓存 [ autoFlush="true | false" ] //关于缓存 [ isThreadSafe="true | false" ] //ture的话JSP servlet 会继承SingleThreadModel [ info="text" ] [ errorPage="relative_url" ] //JSP出错的错误页面(必须采用相对路径),web.xml也可设置 [ isErrorPage="true | false" ] //true的话,JSP引擎会传给jsp错误的Excepiotn 对象 [ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=utf-8" ]//页面类型 [ pageEncoding="characterSet | ISO-8859-1" ] //页面采用的编码,只写这句就可解决JSP乱码问题 [ isELIgnored="true | false" ] //是否支持使用el表达式 %>
原文:http://www.cnblogs.com/wangweiNB/p/4955941.html