1. 什么是JSP,JSP综述
JSP(Java Server Pages)拥有servlet的特性与优点 其实质就是一个servlet,tomcat给我们把它翻译成了一个servlet,实际上我们 能在C:\apache-tomcat-6.0.14\work\Catalina\localhost\my\org\apache\jsp下面找 到对应的jsp文件所对应的java文件和class文件。要注意其实这个页面不在我 们的工程目录下,而是在work,也就是工作目录下面。 JSP的
工作方式直接在HTML中内嵌JSP代码<%程序代码区%>。 JSP程序由JSP Engine(也是tomcat)先将它(HelloWorld.jsp)转换成Servlet代 码HelloWorld_jsp.java,接着将它编译成类文件HelloWorld_jsp.class载入执行.只 有当客户端第一次请求某个JSP页面时,才需要将其转换、编译。所以第一次访 问的时候,速度会慢,以后就好了。 为什么需要jsp?
servlet虽然逻辑处理方便,但是页面表现麻烦。而JSP页面表现方便,但是逻辑 处理麻烦。所以结合起来使用。MVC
M就是model,就是JavaBean 用来封装数据
V就是viewer,就是JSP 页面清晰
C就是controller,就是servlet 逻辑清晰
2. 第一个JSP程序
Jsp页面 HelloWorld.jsp:
<%
out.println("HelloWorld!");
%>
转换的java文件HelloWorld_jsp.class
package org.apache.jsp; import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
//继承自org.apache.jasper.runtime.HttpJspBase,而实际上org.apache.jasper.runtime.HttpJspBase是HttpServlet的子类。
所以本质这个转换的java文件就是一个servlet。
publicfinalclass HelloWorld_jsp
extendsorg.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
privatestaticfinal JspFactory _jspxFactory =
JspFactory.getDefaultFactory();
privatestatic java.util.List _jspx_dependants;
private javax.el.ExpressionFactory _el_expressionfactory;
private org.apache.AnnotationProcessor _jsp_annotationprocessor;
public Object getDependants() {
return_jspx_dependants;
}
publicvoid _jspInit() {
_el_expressionfactory =
_jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
_jsp_annotationprocessor = (org.apache.AnnotationProcessor)
getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
}
publicvoid _jspDestroy() {
}
//其实这个_jspService方法就是doPost和doGet等方法的管家。Jsp文件当中java程序的主体都在这里运行。事实上无论是doGet还是doPost都是转到这个方法来执行。
publicvoid _jspService(HttpServletRequest request, HttpServletResponse
response)
throws java.io.IOException, ServletException {
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null; Object page = this; JspWriter _jspx_out = null; PageContext _jspx_page_context = null;
try { response.setContentType("text/html"); 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("\t\r\n"); out.write("\t\r\n"); out.write("\t\t"); out.println("HelloWorld!"); out.write("\r\n"); out.write("\t\r\n"); out.write(""); } catch (Throwable t) { if (!(t instanceof Ski