JSP的原理

来源:互联网 发布:mysql 唯一约束语句 编辑:程序博客网 时间:2024/06/07 22:00

使用Servlet可以输出HTML,但是非常复杂:纯粹依赖于out.println()维护成本特别高。

Java一直提倡代码的重用,包括各种模式,面向对象等架构模式。

在Java代码里面有时HTML又是Java语言程序,简直太痛苦。

使用标签技术,让JSP代码看起来优雅多。

一段简单的DEMO代码:

<%@page language="java" contentType="text/html; charset=UTF-8" pagaEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>What is Jsp</title>

<head>

<body>

<%

for (int i=i; i<1000; i++){

out.println("Hello!&nbsp;");

}

%>

</body>

</html>

1.用户第一次访问的时候,.JSP->.JAVA->.CLASS。可以解释为为什么很多项目部署需要挨着菜单调用一编。一旦编译之后,后面只是创建或者分配一个进程来执行_jspService()方法,效率大大提高。过程:MyJsp.jsp=>MyJsp_jsp.java=>MyJsp_jsp.class=>MyJsp_jsp(Servlet对象)。

2.可以找到相关的jsp文件,验证一下。里面实际上就是编译之后的Servlet文件,大概位置%tomcat/work/catalina/local/下面找找。refer to:http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html

3.推测一下容器如何编译JSP文件:a.查看指令,得到转换时候可能需要的信息。b.创建一个HttpServlet的对象(具体的厂家有具体的体现)。c.如果一个page指令有import属性,那么就在类文件的最上面,package的下面,写import语句。d.如果有声明的话,就会把声明扔到类文件里面,服务方法的前面。e.建立服务对象,_jspService()方法,并且初始化所有的内置隐藏对象。f.将普通的HTML,Scriptlet以及表达式放到服务方法里面,完成格式化之后,将HTML等放到out.print()中。

0 0
原创粉丝点击