//////////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处理显示的不足发展来的特殊的ServletJSP注释
<%-- --%> : 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 : 指定脚本元素是否能用,默认是trueJSP控制符
<% 代码片段 %>
<%! 函数声明 %>
<%= 获得变量 %>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.标签指令
<c:foreach> : 迭代标签
<c:if> :条件判断
<c:choose> :多条件判断
通用标签:
<c:set> :设置属性
<c:out> :输出属性
<c:remove>:删除属性
4.格式化标签
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
格式化指令:
<fmt:formatDate> : 日期格式化
<fmt:formatNumber> :数字格式化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
}