jsp页面元素构成:静态内容,指令,表达式,小脚本,声明,注释。
指令:
page指令:通常位于页面顶端,可以有多个
<%@page 属性1=“xxx”%>
属性language(jsp页面使用的脚本语言,默认java),import(引用脚本语言中用到的类文件),contentType(jsp页面用的编码方式)
include指令:将外部文件嵌入到当前jsp文件中,同时解析这个页面中的Jsp语句
taglib指令:使用标签库定义自定义标签,在jsp页面中使用该标签(启用定制行为 )
html注释客户端可见
jsp注释客户端不可见
jsp的注释<%--注释--%>
jsp脚本注释 // ?/**/
jsp脚本 在jsp页面中执行java <%java代码%>
jsp页面中定义变量或者方法
<%! ??
String s="str"
int add(int x,int y)
{
return x+y;
}
%>
jsp表达式 ?<%=表达式%>//没有分号
你好,<%=s %>
x+y=<%=add(10,5)%>
jsp页面生命周期
用户发出请求index.jsp
第一次请求----首先执行构造方法,jsp引擎把该jsp文件转换成为Servlet,生成字节码文件,并执行jspInit(),否则直接访问生成的字节码文件,然后解析执行jspService()[用于处理客户端的请求,对于每个请求,jsp引擎创建一个新的线程来处理该请求。多个客户端同时请求该jsp文件时,jsp引擎会创建多个线程。该Servlet始终驻于内存,所以响应快]
----------练习:用html和脚本输出9*9----------------
1 ???????<%! 2 ???????//返回九九乘法表对应的HTML代码,通过表达式来调用,在页面上显示 ?3 ???????String printMultiTable1() 4 ???????{ 5 ??????????String s = ""; 6 ??????????for(int i=1;i<=9;i++) 7 ??????????{ 8 ?????????????for(int j=1;j<=i;j++) 9 ?????????????{10 ????????????????s+=i+"*"+j+"="+(i*j)+" ";11 ?????????????}12 ?????????????s+="<br>"; //追加换行标签13 ??????????}14 ??????????return s;15 ???????}16 ???????17 ???????//JSP内置out对象,使用脚本方式调用,打印九九乘法表18 ???????void printMultiTable2(JspWriter out) throws Exception19 ???????{20 ???????????for(int i=1;i<=9;i++)21 ???????????{22 ?????????????for(int j=1;j<=i;j++)23 ?????????????{24 ????????????????out.println(i+"*"+j+"="+(i*j)+" ");25 ?????????????}26 ?????????????out.println("<br>"); //追加换行标签27 ??????????}28 ???????}29 ???????30 ????%>31 ????<h1>九九乘法表</h1>32 ????<hr>33 ????<%=printMultiTable1()%>34 ????<br>35 ????<% printMultiTable2(out);%>
jsp内置对象:
是web容器创建的一组对象,不适用new关键字创建就可以使用。·
九大内置对象:request,response,out,application,session,PageContext,config,page,exception (前面5个常用)
<% ???int[] value={60,70,80}; ???for(int i:value{ ???????out.println(i); ???}%>
web程序的请求与响应模式
缓冲区:buffer 用来保存临时数据的内存的一块区域
out对象是JSPWriter类的实例,是向客户端输出内容常用的对象,常用方法:
void println()向客户端打印字符串
void clear()清除缓存区的内容,在flush之后调用会抛出异常
void clearBuffer()清除缓冲区的内容,在flush之后调用不会抛出异常
void flush()将缓冲区内容输出到客户端
int getBufferSize()返回缓冲区以字节数大小,若不设缓冲区则为0
int getRemaining()返回缓冲区剩余可用量
boolean isAutoFlush()返回缓冲区满时,是自动清空还是抛出异常
void close()关闭输出流
<% ???out.println("<h2>静夜思</h2>"); ???//out.flush(); ???//out.clear();会抛出异常,后面的语句不会打印%>缓冲区大小<%=out.getBufferSize()%>byte<br>缓冲区生于大小<%=out.getRemaining()%>byte<br>是否自动清空缓冲区<%=out.isAutoFlush()%><br>
jsp
原文地址:https://www.cnblogs.com/mao-19/p/4921123.html