430 likes | 606 Views
JAVA WEB 开发 授课人:张鸽. 第一讲 Java 与 JSP 基础知识. 为什么要动态的构建 web 页面. 1 、 Web 页面的内容建立在用户提交的数据之上。 例如:搜索引擎中的结果页面、网上商城中的订单 2 、 WEB 页面中的内容由频繁变动的数据导出。 例如:天气预报或新闻头条页面 3 、 WEB 页面中的内容来自于数据库中. JSP 文件结构及主要标签. <%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.util.*“ %> ...
E N D
JAVA WEB开发 授课人:张鸽
为什么要动态的构建web页面 1、Web页面的内容建立在用户提交的数据之上。 例如:搜索引擎中的结果页面、网上商城中的订单 2、WEB页面中的内容由频繁变动的数据导出。 例如:天气预报或新闻头条页面 3、WEB页面中的内容来自于数据库中
JSP文件结构及主要标签 <%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.util.*“ %> ... <HTML> <BODY> 其他 HTML 语言 <% 符合JAVA 语法的 JAVA 语句 %> 其他 HTML 语言 </BODY> </HTML>
JSP示例(Hello.jsp) <HTML> <BODY> 你好<br> 你好<br> </BODY> </HTML> <%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.util.*"%> <HTML> <BODY> <% for ( int i=0; i<2; i++ ) { %> 你好<br> <% } %> </BODY> </HTML>
JSP示例(Hello_Date.jsp) <%@ page import="java.util.*" %> <%@ page contentType="text/html; charset=gb2312" %> <HTML> <BODY> 你好,今天是 <% Date today=new Date(); %> <%=today.getDate()%>号, 星期<%=today.getDay()%> </BODY> </HTML> import java.util.*; response.setContentType("text/html; charset=gb2312"); out = pageContext.getOut(); out.write(“\r\n\r\n<HTML>\r\n <BODY>\r\n你好,今天是\r\n"); Date today=new Date(); out.print(today.getDate()); out.write("号,星期"); out.print(today.getDay()); out.write(" \r\n </BODY>\r\n</HTML>\r\n "); servlet文件 JSP文件
jsp parser JSDK request 执行 response JSP执行过程 servlet servlet 分析器 *.jsp *.java *.class
JSP 运行环境要求 JDK:Java应用程序开发包,包含编译运行Java程序所需的工具包和开发Java应用程序所需的类函数库。 Tomcat服务器软件:解释JSP网页,并且回传解释过后的JSP网页至用户计算机的浏览器 。
建立与测试开发环境 • server.xml 编辑设定
JSP 的特点 • 内嵌在HTML中:以较为简单直接的方式将程序代码内嵌在HTML中,降低了程序设计的难度。 • 丰富的内建对象:JSP的规格中包含相关的对象、卷标与指令,提供了设计主从式网络程序的功能,简化了编写servlet程序的过程。 • 整合Java平台:JSP程序中可运用Java所提供的各类包,以这些包为基础,扩充了JSP程序的本身的处理范围与能力。
Java概述 • Java是JSP的基础,学习Java可以由2部份來进行:基本语法与类对象的引用。 • 基本语法:包含一般程序语言所需具备的语法元素。 • 类对象:Java是一种面向对象程序语言,以类封裝功能程序代码,通过组织相关类创建所需特定功能的应用程序。
Java 主要结构 • Java根据其应用的领域,分成3个重要的版本:J2EE、J2SE 以及J2ME 。 • J2EE(Java 2 Platform, Enterprise Edition):商业级的Java版本,用以提供构建分布式商业应用系统所需的相关机制与技术,JSP即是J2EE结构下的一环,主要用以整合服务器端Java技术与客户端浏览器网页接口,提供构建以web为基础的大型商用系统所需的环境与结构。 • J2SE(Java 2 Platform, Standard Edition):Java最重要的核心,包 • 含相关API以及核心組件与运行Java所需的环境,编译工具等等。 • J2ME(Java 2 Platform,Micro Edition):用来设计消费性和嵌入式裝置的应用程序系統。
Java的函数库-类 • Java函数库最基本的单位为类,类本身是一种程序功能的定义,在应用程序中被具体化成为对象,对象将类所定义的方法公开出来,让引用类的程序能够提供具体的功能。 • 类包含2种元素:属性与行为 ,属性用來调整类对象的属性,而方法則是該对象所能提供的功能。
包 说明 java.lang Java基础类包,包含用以处理Java字符串以及数组等相关类。 java.util 包含Java各种通用于各类应用程序的类包,例如集合数据结构等等。 java.awt 提供Java图形接口设计所需的基础类。 javax.swing 提供更多高级和丰富的图形接口设计类,由基础awt衍生而来。 java.io 提供输出/入数据流功能的支持类。 Java的函数库-包
JSP程序代码区块 <%…%>界定JSP网页提供互动功能的程序区块。 <% Java程序代码 … %>
JSP程序代码细节 • 注解 程序以符号// 作标识: //该区块里为JSP程序代码 程序运行的过程中,标识為//的程式代码都会被忽略。 • 数据输出 out是JSP中的默认对象,用來将数据输出到客户端网页上。 println()是out对象提供将字符串等数据输出至网页的方法。 每一行完整的程序指令,均必须以分号(;)做結束。
变量 • 变量用以储存各种类型的数据,同时对应到计算机中某一段内存空间区块的特定名称,程序根据变量名称在计算机内存中取得所需的数据内容,进行各种程序逻辑的运算。 • 声明变量: varType varName ;
常量 • Final关键词与常数声明: final varType varName = varValue ; • 常数所储存的內容不允许被改变,若在程序运行中更改常数的內容,會导致错误情況发生。
变量的命名规则 • 必须为合法字符 Java程序将字母相同、大小写相异的两个变量视为相异,同时名称包含非法字符并不被允许,例如空白与前置为数字的变量名称 。 • 避免使用关键词 关键词是由Java预先定义,具有特定意义的特定名称字串,无法被使用在变量的命名。 • 使用具意义的变量名称 变量的命名基本上只要符合上述的规则即可,使用一个代表变量意义的名称为变量命名可方便辨识。
类型 数据类型 名称 大小 有效范围 字符 char 字符 16 bit '\u0000'~'\uffff' 布尔 boolean 布尔值 1 bit true或false 浮点数 float 浮点数 32 bit 1.40239846E-45 ~3.40282347E+38 double 倍精确浮点数 64 bit 4.94065645841246544E-324 ~1.79769313486231570E+308 整数 byte 位整数 8 bit -128 ~ 127 short 短整数 16 bit -32768 ~ 32767 int 整数 32 bit -2147483648 ~ 2147483647 long 长整数 64 bit -922337203685475808 ~ 922337203685475808 数据类型
声明整型变量 整型变量,必须以任何一个整数类型的名称作声明,如下所示: byte bteVar ; short shVar ; int intVar ; long lngVar ;
布尔型变量 声明为boolean的变量只能储存true或是false: boolean blnVar1 = flase ; boolean blnVar2 = true ;
字符型变量 • Char类型的变量代表双位組的单一字符。 • 当一個字符被指定給char型变量,字符必須使用单引号將其包围起來。 • 一個字符可以用以表示变量或是字串。
数组 • 数组(Array)是一种复合类型的数据类型,用来存放一群类型相同的数据元素。 • 数组存放元素的位置,由索引值作识别 ,索引值从0开始依次增加。 • 声明一個数组变量: 数据类型数组名称[]=new 数据类型[数组大小]; 语法2:数据类型数组名称[]={內容值}; • 单一列结构的数组,将其称为一维数组
元素11 [0] [0] 元素12 [0] [1] 元素11 [0] [2] 元素21 [1] [0] 元素22 [1] [1] 元素12 [1] [2] 元素31 [2] [0] 元素32 [2] [1] 元素13 [2] [3] 二维数组 • 声明二维数组: 数据类型 数组名[][]=new 数据类型[列数][行数] ; • 存取二维数组的方式也相当的简单,只需指定所要存取的元素,其所在位置的索引编号即可,例如前一个二维数组示意图中,当用户想要取得元素32所需的语法如下: a = objArr[2][1] ; • 其中的objArr代表上述的二维数组表格,[2][1]则是其位置索引,这一行程序代码片段会将取得的元素32存到变量a。
运算符 运算符名称 范例 + 加法 A+B=14 - 减法 A-B=8 * 乘法 A*B / 除法 A/B % 取余数 A%B 算术运算符
运算符 使用语法 说明 += A+=5 A+=5 等于A=A+5 -= A-=5 A-=5等于A=A-5 *= A*=5 A*=5等于A=A*5 /= A/=5 A/=5等于A=A/5 %= A%=5 A%5等于A=A%5 ++ A++、++A A++等于A=A+1 -- A--、--A A--等于A=A-1
前置与后置运算 • 前置运算:运算符首先针对其连接的操作数进行运算,然后回传运算的结果 。 B = 5 ; A = ++B ; • 后置运算:操作数的值首先会回传给指定变量,然后运算符再针对其进行运算 。 B = 5 ; A = B ++ ;
运算符 说明 使用语法 范例(A=3,B=23) = = 等于 A= = B 返回布尔值false != 不等于 A!=B 返回布尔值true > 大于 A>B 返回布尔值false >= 大于等于 A>=B 返回布尔值false < 小于 A<B 返回布尔值true <= 小于等于 A<=B 返回布尔值true 比较运算符
运算符 意义 |、|| OR逻辑判断 &、&& AND ! NOT 逻辑布尔运算符
OR运算符 | 以及 ||均是OR运算符,其左右串接2个操作数,当其中有一个操作数的值是true的時候,则返回一个true 的布尔值。 operandA || operandB operandA与operandB 其中有一个等于true ,则返回一个true的布尔值。
AND运算符 • & 和 && 两个同样是AND运算符,针对两个操作数进行AND的逻辑运算,只有当其连接的两操作数均是true的时候,则返回一个true的布尔值,否则一律返回false 。 • &&不一定会针对其串接的两个操作数作运算,当左边的操作数结果为false的时候,则其直接返回一个结果为false的布尔值,不再理会右边表达式的操作数,而&则是对于两个操作数进行运算,即使左边的操作数结果为false,右边的操作数还是会完成其运算之后,才会回传其结果。
!运算符 !是一种逻辑反向运算符,针对一个布尔操作数作运算,将其值取反后输出,其用法如下: !true => false !false => true
运算符 说明 ++、-- 递增、递减运算 *、/、% 乘、除、取余数 <、<=、>、>= 小于、小于等于、大于、大于等于 ==、!= 等于、不等于 & 逻辑运算"AND" | 逻辑运算"OR" && 逻辑运算"AND" || 逻辑运算"OR" +=、-=、*=、/=、%= 算术指派运算符 运算符优先顺序
If 判断式 if(condition ) { 语句 ; }
if-else判断式 if(condition) { 语句1 … } else{ 语句2 … } 其他语句 …
if-else if-else 判断式 if(condition 1){ 语句1 … } else if(condition2){ 语句2 … } else{ 语句3 … }
Switch判断式 switch(运算式式){ case 1: 程序片段; break; case 2: 程序片段; break; default: 程序片段; break; }
For循环 for(初始值;条件式;表达式){ 程序代码; }
while 循环 while(条件式){ 程序代码 }
Break与continue指令 • break指令 用来强迫结束循环或离开判断式,在switch语句中,可以利用它结束一个case区块的运行,break经常被使用于循环中,进行循环的强迫中断操作 。 • continue指令 continue指令会忽略其后的程序代码,而直接运行下一次的循环。