jsp由html,java,jsp tag三部分组成,执行时.jsp文件会被编译成.java文件(servlet代码),最后编译成.class文件。
<%-- --%>jsp的注释格式,不会传送的客户端
<%!code%>定义全局变量 、方法(现在较多用EL表达式替代)
<%=expression%>相当于out.print()
<%java code%>插入java代码
<%@ page import="java.io.*" %>定义page属性,引入包
${car.speed} EL表达式 必须有getspeed()方法,且其默认是从session,application里取值,故必须先用setAttribute()存值
web-inf下的页面不能从浏览器访问,只能从内部跳转,具有一定的安全性
当页面可能出现非安全现象时,可声明isThreadSafe 属性为false,也可以再可能出现问题的代码块用synchronized(this){code}包围code
模板元素(html),注释元素,脚本元素(code,el),指令元素(include)
include的两种用法:
<jsp:include page="xa.jsp"/>两个页面都会被编译,生成class文件
<%@ include file="xa.jsp"%>仅包含文件生成class文件,其class文件内包含另一个文件的被显示部分(合二为一)
MVC(model,Controller,view)
tag简化jsp代码,隐藏java代码
<%@ taglib uri="WEB-INF/tlds/csajsp-taglib.tld" prefix=“xx”%>引入一些标签描述文件,而这一般在jsp文件中,通过<xx:simple/>调用tld文件中xx名字下的simple对应的class文件,执行对应的方法
需要注意的是带属性的标签应用(required为false时可带参数,也可不带,默认)
继承SimpleTagSupport类,调用getJspContext()实现输出,不对标签体进行处理时this.getJspBody().inboke(null),
处理时,则this.getJspBody().invoke(StringWriter) sw为接受body内容的对象,之后对sw进行处理即可
在动态标签中<rtexprvalue>属性值必须为true
for标签,if-else标签
jstl标签库,必须先将jstl.jar放到inf/lib下,varstates属性确定位置,forTokens属性常用来遍历字符串
if语句