JSP

//////////2017-2-11 ~ 2017-2-17///////////

int study_data(){

JSP(Java Server Pages)

表现形式
1.一般以.jsp为后缀的文件
2.里面内容的话,可以看成静态内容(html+css+js),嵌入动态的jsp相关的一些语法和指令。
3.一般放置在war包里面,WEB-INF外面,但是有一些框架会把jsp文件放在WEB-INF里面。
4.访问时,直接访问对应的url即可。

内在本质:
当我们访问某个.jsp文件时,容器会启动即时翻译,把.jsp文件先翻译成java文件,然后再把这个java文件翻译成class文件,最后作为一个servlet启动运行,并把response结果返回给浏览器。

JSP与Servlet的区别
Servlet其实执行的是那个Servlet编译好的class,而JSP是即时编译。web容器会将jsp文件翻译成java源代码,然后再把这个java源代码编译成class,再执行,一般过程是:
1.看看.jsp对应的class存不存在,如果不存在,就翻译成java,在编译成class。
2.如果对应的class已经存在了,就检查jsp时间是不是更新一点。如果是的话,就重新编译成java,再编译成class。
3.如果class更新的话,就不翻译了,直接用那个class文件。
JSP是为了弥补Servlet处理显示的不足发展来的特殊的Servlet

JSP注释
<%--  --%> : JSP注释,注释内容不会被发送至浏览器甚至不会被翻译
     : HTML注释,通过浏览器查看网页源代码时可以看见注释内容
<\%            : 代表静态<%常量
%\>            : 代表静态%>常量

JSP指令标签
<%@ page ... %>    : 定义网页依赖属性,比如脚本语言,error页面,缓存需求等等
<%@ include ... %> : 包含其他文件
<%@ taglib ... %>    : 引入标签库的定义

JSP指令元素
buffer                      : 指定out对象的缓冲区大小
autoFlush               : 控制out对象的缓存区
contentType           : 指定当前JSP页面的MIME类型和字符编码
errorPage               : 指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage            : 指定当前JSP页面是否是作为另一个页面的错误页面
extends                  : 指定servlet从哪个类继承
import                     : 导入要使用的java类
info                         : 定义JSP页面的描述信息
isTheadSafe           : 指定对JSP页面的访问是否为线程安全,默认是true
language                : 定义JSP页面所用的脚本语言,默认是Java
session                   : 指定JSP页面是否使用session,默认是true
isELIgnored            : 指定是否忽略EL表达式,默认是false
isScriptingEnabled : 指定脚本元素是否能用,默认是true

JSP控制符
<% 代码片段 %>
<%! 函数声明 %>
<%= 获得变量 %>

JSP动作元素
jsp:include        : 在页面被请求的时候引入一个文件
jsp:useBean     : 寻找或实例化一个JavaBean
jsp:setProperty : 设置JavaBean的属性
jsp:getProperty : 输出某个JavaBean的属性
jsp:forward       : 把请求转到一个新的页面
jsp:plugin          : 根据浏览器类型给Java插件生成OBJECT或EMBED标记
jsp:element       : 定义动态XML元素
jsp:attribute       : 设置动态定义的XML元素属性
jsp:body            : 设置动态定义的XML元素内容
jsp:text              : 在JSP页面和文档中使用写入文本的模版

JSP九大隐式对象(内置对象)
request          : HttpServletRequest类的实例
response       : HttpServletResponse类的实例
out                 : PrintWriter类的实例,用于把结果输出至网页上
session         :HttpSession类的实例
application     : ServletContext类的实例,与应用上下文有关
config            : ServletConfig类的实例
pageContext : PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page              : 类是Java类中的this关键字
Exception      : Exception类的对象,代表发生错误的JSP页面中对应的异常对象

pageContext
     
pageContext对象是JSP中很重要的一个内置对象,它是javax.servlet.jsp.PageContext类的实例对象,可以使用PageContext类的方法,使用pageContext对象的方法可以访问application对象,exception对象,还有session对象等,pageContext对象都饿方法可以访问除本身以外的8个JSP内部对象,还可以直接访问绑定在application对象,page对象,request对象,session对象上的java对象,pageContext对象相当于JSP程序中所有对象功能的集成者。

JSP表达式语言(EL)

EL表达式既可以用来创建算术表达式也可以用来创建逻辑表达式。表达式内可以使用整形数,浮点数,字符串,常量,布尔值与null。

EL允许在表达式中使用函数,这些函数必须被定义在自定义标签库中

EL中的11个隐含对象

pageScope,requestScope,sessionScope,applicationScope,param,paramValues,header,headerValues,initParam,cookie,pageContext。

1.EL
    expression language(表达式语言)
2.语法
    
${scope.object.attr} 或者 ${scope.object[attr]}
3.如果不填scope,那么会从4个scope中按序查找
    pageScope-->requestScope-->sessionScope-->applicationScope
4.隐式对象
    
param:表示获取请求对象中的参数(单个的表单数据)
    paramValues:表示获取请求对象中的参数(多个的表单数据)
5.关系运算符
    ==  |  eq
    !=  |  ne
    <    |  lt
    >    |  gt
    <=  |  le
    >=  |  ge
6.逻辑运算符
    &&  |  and
    ||    |  or
    !      |  not
7.判空运算符
    ${empty attr}
    ${not empty attr}
    返回boolean值
8.条件运算符
    ${addition?value1:value2}

JSTL

1.jstl
    JSP Standard Tag Library,JSP标准标记库
2.使用步骤
    ①导入相关jar包
    ②导入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
3.标签指令
    : 迭代标签
              :条件判断
    :多条件判断
    通用标签:
              :设置属性
              :输出属性
        :删除属性
4.格式化标签
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
格式化指令:
         : 日期格式化
    :数字格式化

5.自定义标签

自定义标签是用户定义的JSP语言元素,标签转化被称为tag handler的对象的操作,即当servlet执行时web container调用那些操作。JSP标签扩展可以让创建新的标签并且可以直接出入到一个JSP页面。

继承SImpleTagSupport类并重写doTag()方法来开发一个最简单的自定义标签

6.注意事项

    1.tag文件里,JSP的所有元素都能用,但是page指令不能用,要用tag指令

    2.tag文件的隐含对象,pageContext换成jspContext。其他都一样

    3.tag文件四大指令

        ①tag : 指定自己的一些属性,类似page

        ②attribute : 说明属性相关的信息,和TDL里的属性类型

        ③include : 和jsp里的include类似

        ④variable : 把tag里的某个对象返回给jsp

}

你可能感兴趣的:(JSP)