首页 > 代码库 > JSP_2_JSP基本语法

JSP_2_JSP基本语法

JSP:Java Sever Page,一个简化的Servlet

主要技术JSP 安全性高,Asp.net 简单,Php 简单高效(LAMP:Linux+Apache+MySql+Php)

---2-3 JSP页面元素构成---------------------------------------------------------------------------------------

2-3 JSP页面元素构成

1 指令:

<%@ 编译指令名 属性名="属性值"... %>

page指令:常位于JSP页面的顶端,同一个页面可以有多个page指令

include指令:将一个外部文件嵌入到当前JSP文件中,同事解析这个页面中的JSP语句。

taglib指令:使用标签库定义新的自定义标签。

1.1 page指令语法:

<%@ page 属性1="属性值" 属性2="属性值1,属性值2"... 属性n="属性值n"%>

  各指令的属性定义:

  language : 声明当前JSP页面使用的脚本语言的种类,通常默认是Java 。 

       import : 导入包。 默认值:无(下面几个包是系统默认导入的:java.lang.* ; javax.servlet.*; javax.servlet.jsp.*;javax.servlet.http.* ;)

  contentType : 用于设定生成网页的文件格式和编码字符集,即MIME类型和页面字符集类型。  

          默认的MIME类型是 text/html ;默认的字符集类型为ISO-8859-1(英文).

以下不常用

  extends  : 指定JSP页面编译所产生的Java类所继承的父类,或所实现的接口。

  session : 设定这个JSP页面是否需要HTTP Session。

    buffer : 指定输出缓冲区的大小。

  autoFlush : 当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容。

  info : 设置该JSP程序的信息,也可以看做其说明,可以通过Servlet.getServletInfo()方法获取。

  errorPage : 指定错误处理页。

  isErrorPage : 设置本JSP页面是否为错误处理程序。

  PageEncoding :是定生成网页的编码字符集。

 1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="http://www.mamicode.com/">
11     
12     <title>My JSP ‘index.jsp‘ starting page</title>
13     <meta http-equiv="pragma" content="no-cache">
14     <meta http-equiv="cache-control" content="no-cache">
15     <meta http-equiv="expires" content="0">    
16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
17     <meta http-equiv="description" content="This is my page">
18     <!--
19     <link rel="stylesheet" type="text/css" href="http://www.mamicode.com/styles.css">
20     -->
21   </head>
22   
23   <body>
24     <h1>大家好</h1>
25     <hr>
26     <!-- 我是HTML注释,在客户端可见 -->
27     <%-- 我是JSP注释,在客户端不可见 --%>
28     <%! 
29        String s = "张三";  //声明了一个字符串变量
30        int add(int x,int y) //声明了一个返回整型的函数,实现两个整数的求和。
31        {
32           return x+y;
33        }
34     %>
35     
36     <% 
37        //单行注释
38        /*多行注释*/
39        out.println("大家好,欢迎大家学习JAVAEE开发。");
40     %>
41     <br>
42         你好,<%=s %><br>
43     x+y=<%=add(10,5) %><br>    
44   </body>
45 </html>

 

  <%@page

  [language="Java"]

  [extends= "package.class"]

  [import = "package.class|package.*..."]

  [session= "true|false"]

  [buffer = "none|8KB|size Kb"]

  [autoFlush = "true|false"]

  [isThreadSafe = "true|false"]

  [info = "text"]

  [errorPage = "relativeURL"]

  [contentType = "mimeType[; charset = characterSet]"|"text/html ; charset = ISO-8859-1"]

  [pageEncoding = "ISO-8859-1"]

  [isErrorPage = "true|false"]

  %>

---2-5 JSP注释---------------------------------------------------------------------------------------

JSP页面注释:

1.HTML的注释:<!--html注释-->//客户端可见

2.jsp的注释:<%--jsp注释--%>//客户端不可见

3.JSP脚本注释://单行  /**/多行      

<% 
        //单行注释
        /*多行注释*/
      out.println("大家好,欢迎大家学习JAVAEE开发。");

%>

---2-7 JSP脚本---------------------------------------------------------------------------------------

JSP脚本中可以放置任何可执行性java语句,所以可以充分利用Java语言的功能,例如连接数据库和执行数据库。

<%jsp脚本%>

<% 
      out.println("大家好,欢迎大家学习JAVAEE开发。");

%>

---2-8 JSP声明---------------------------------------------------------------------------------------

JSP声明用于声明变量和方法。JSP声明的语法格式如下:

<%! jsp声明%>

<%!
  // 声明一个变量
  public int count = 0 ;
  // 声明一个方法
  public String info()
  {
  return "hello : " + count ;
  }
%>

---2-9 JSP表达式---------------------------------------------------------------------------------------

JSP页面中执行的表达式值输出表达式将转换成Servlet里面的输出语言。

  语法格式:

  <%=表达式%>//注意:表达式不以分号结束

例子:

<%!
       String s = "张三";  //声明了一个字符串变量
       int add(int x,int y) //声明了一个返回整型的函数,实现两个整数的求和。
       {
          return x+y;
       }
    %>
   
    <%
       //单行注释
       /*多行注释*/
       out.println("大家好,欢迎大家学习JAVAEE开发。");
    %>
    <br>
        你好,<%=s %><br>
    x+y=<%=add(10,5) %><br>   

  

---2-10 JSP页面生命周期---------------------------------------------------------------------------------------

apache的work fold内App folder下生成的java文件(servlet)

 

技术分享

JSP的工作原理:

    Client            →发出请求→        JSP Server(如果该JSP页面第一次收到请求,先编译JSP文件,生成对应的Servlet,如果该JSP页面已有对应的

          ←返回标准的HTML页面←    的Servlet,这根据请求动态生成标准的HTML页面。注:每次都会根据请求动态生成HTML文档。)

 

jspService()方法被调用来处理客户端的请求。对每一个请求会创建一个线程,如果同时有多个请求需要处理的话就会创建多个线程

。每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量及响应时间。但也要注意多线程的编程带来的同步问题,由于该Servlet始终驻于内存,所以相应是非常快的。

 1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"%>
 2 <%@ page import="java.text.*" %>
 3 <%
 4 String path = request.getContextPath();
 5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 6 %>
 7 
 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 9 <html>
10   <head>
11     <base href="http://www.mamicode.com/">
12     
13     <title>My JSP ‘index.jsp‘ starting page</title>
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">    
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="http://www.mamicode.com/styles.css">
21     -->
22   </head>
23   
24   <body>
25     <h1>JSP生命周期</h1>
26     <hr>
27     <% 
28       SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
29       String s = sdf.format(new Date());
30     %>
31         今天是:<%=s %>
32   </body>
33 </html>

 

---2-12 阶段项目:打印99乘法表---------------------------------------------------------------------------------------

分别使用表达式方式和脚本方式打印99乘法表

page指令:快捷键"alt + / " 选择page 的属性

"&nbsp;&nbsp;&nbsp;&nbsp;"输出四个空格

"<br>" //追加换行标签,"<br/>"HTML5的格式

 1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="http://www.mamicode.com/">
11     
12     <title>My JSP ‘exercise.jsp‘ starting page</title>
13     
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">    
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="http://www.mamicode.com/styles.css">
21     -->
22 
23   </head>
24   
25   <body>
26     <%!
27        //返回九九乘法表对应的HTML代码,通过表达式来调用,在页面上显示 
28        String printMultiTable1()
29        {
30           String s = "";
31           for(int i=1;i<=9;i++)
32           {
33              for(int j=1;j<=i;j++)
34              {
35                 s+=i+"*"+j+"="+(i*j)+"&nbsp;&nbsp;&nbsp;&nbsp;";
36              }
37              s+="<br>"; //追加换行标签
38           }
39           return s;
40        }
41        
42        //JSP内置out对象,使用脚本方式调用,打印九九乘法表
43        void printMultiTable2(JspWriter out) throws Exception
44        {
45            for(int i=1;i<=9;i++)
46            {
47              for(int j=1;j<=i;j++)
48              {
49                 out.println(i+"*"+j+"="+(i*j)+"&nbsp;&nbsp;&nbsp;&nbsp;");
50              }
51              out.println("<br/>"); //追加换行标签
52           }
53        }
54        
55     %>
56     <h1>九九乘法表</h1>
57     <hr>
58     <%=printMultiTable1()%>
59     <br>
60     <% printMultiTable2(out);%>
61     <br>
62     
63   </body>
64 </html>

 

JSP_2_JSP基本语法