JSP_2(3+4)_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="<%=basePath%>"> 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="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="<%=basePath%>"> 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="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 的属性
" "输出四个空格
"<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="<%=basePath%>"> 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="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)+" "; 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)+" "); 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>