JSP学习笔记(一):JSP基础

一、原理
1、HttpServlet 是先由源代码编译为class 文件,然后部署到服务器下。先编译后部署。
2、JSP 是先部署源代码后编译为class文件的,先部署后编译。JSP 会在客户端第一次请求JSP 文件时被编译为HttpJspPage 类。该类会被服务器临时存放在服务器的工作目录中。

3、实例:客户端第一次请求 myFirst.jsp 时,Tomcat 先将myFirst.jsp 转化为标准的 Java 源代码 myFirst_jsp.java ,存放在 %Tomcat_Path%\work\Cataline\localhost\ %Java_Web% 目录下,并将 myFirst_jsp.java 编译为类文件 myFirst_jsp.class 。该 class 文件便是对应的 Servlet 。编译完毕后再运行class 文件来响应客户端请求。以后客户端访问 myFirst.jsp 时,服务器将不再重新编译 JSP 文件,而是兆字节调用 myFirst_jsp.class 文件。


二、语法
(一)脚本
1、<% %>:java代码块
2、<%=%>:输出
3、<%! %>:方法与全局变量

(二)指令(可以被JSP行为标签替代<jsp:directive>
1、Page指令:指定该JSP页面的属性。
1)实例:
       
         <%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
                <%@ page import="java.util.Date"%>

2)常见属性:
技术分享

技术分享

2、include指令
1)实例:include.jsp 中包含 head.jsp 。
           
 <%@include file="../common/jsp/head.jsp"%>

2)本质:
先包含,后编译。在被编译的 jsp 中已经包含被 include 的文件内容。即是把 head.jsp的源代码添加到了 include.jsp 中,然后编译成一个 class 文件,属于先包含后编译。

3、taglib指令:
1)实例:
<%@ taglib url="http://java.sun.com/jsp/jstl/core" prefix="c" %>


(三)Jsp行为
1、include行为:<jsp:include>
1)实例:include.jsp 中包含 head.jsp 。          
<jsp:include page="/head.jsp" flush="true" ></jsp:include >


2)本质:
先运行后包含。运行时单独执行 head.jsp,然后把执行的结果包含到 include.jsp中,属于先运行后包含行为。在被编译的 include.jsp 中没有被包含的 head.jsp 文件的内容。

2、JavaBean行为:
1)定义 javaBean 对象:<jsp:useBean id="" class="" scope=""/>
2)获取 javaBean 属性:<jsp:getProperty name="" prperty="" />
3)设置 javaBean 属性:<jsp:setProperty name="" prperty="" value="" />
其中 name 为JavaBean 的名称,也就是useBean 行为的id 属性,property 为JavaBean属性,value 为属性值。

3、转发行为:<jsp:forward>
1)实例:
            <jsp:forward page="/somapage.jsp">
                    <jsp:param name="param1" value="value1">
                    <jsp:param name="param2" value="value2">
            </jsp:forward>



4、指令行为:<jsp:directive>相当于JSP指令。
1)实例:
            <jsp:directive.page />   行为相当于 <%@ page%>指令。
            <jsp:directive.include />行为相当于 <%@ include%>指令。
            <jsp:directive.taglib />  行为相当于 <%@ taglib %>指令。



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。