jsp

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)+"&nbsp;&nbsp;&nbsp;&nbsp;";
11              }
12              s+="<br>"; //追加换行标签
13           }
14           return s;
15        }
16        
17        //JSP内置out对象,使用脚本方式调用,打印九九乘法表
18        void printMultiTable2(JspWriter out) throws Exception
19        {
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)+"&nbsp;&nbsp;&nbsp;&nbsp;");
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>
在平凡中坚持前行,总有一天,会遇见优秀的自己
原文地址:https://www.cnblogs.com/mao-19/p/4921123.html