JavaWeb程序设计基础一(JSP基本语法)
基础认识
1、web技术简介
(1)HTML:HTML1.0->HTML5.0(H5),标签是语法
(2)CSS:样式表,让页面美起来
(4)DOM:元素的树结构
2、***页技术
(1)HTML是编制静态网页的基本语言
(2)***页:可以根据访问者的不同需要,对访问者输入的信息提供不同响应的网页
不同的人、不同的时间、不同的输入访问同一网址会得到不同的页面
例如:
①显示当前时间:现在北京时间 在线标准北京时间校对 (beijing-time.org)
②淘宝、拼多多:千人千面③个别软件“杀熟”事件
(3)常用的***页技术
①Servlet技术Java Web开发技术之一,由服务器端调用和执行的Java类,小型的、与平台无关的Java类,被用来扩展服务器的性能
②JSP是Java Server Pages缩写,Java语言编写的服务器端运行的页面,页面由 HTML代码和嵌入其中的Java代码组成,拓展阅读如下:
④ASP(Active Server Page)使用很广泛的开发***站的技术,通过在页面代码中嵌入VBScript或JavaScript脚本语言来生成动态的内容,ASP存在很多优点,简单易学,并且ASP是与微软的IIS捆绑在一起,在安装Windows的同时安装IIS,就可以运行ASP应用程序了
⑤PHP来自于Personal Home Page一词,但现在的PHP已经不再表示名词的缩写,而是一种开发***页技术的名称。PHP语法类似于C,并且混合了Perl、C++和Java的一些特性,是一种开源的Web服务器脚本语言
3、JSP的运行原理
JSP文件被JSP引擎编译成Java的class文件,就是Servlet,将产生的Servlet加载到内存执行,Servlet的运行结果以HTML(或XML)形式通过Web服务器返回给客户端的浏览器
一、JSP的基本组成
1、JSP原始代码中包含了模板元素和JSP元素
(1)模板元素:JSP引擎不处理的部分,HTML+JavaScript+CSS等(2)JSP元素:JSP引擎直接处理的部分(注意该部分必须符合JSP语法,否则会导致编译错误)
JSP元素的组成内容有:
①脚本元素:声明、脚本段、表达式
②指令元素:page、include、taglib、tag
③动作元素:"jsp: include"、"jsp: forward"、"jsp: dobody"
④注释:JSP隐藏注释、java注释、HTML注释
2、JSP页面的基本组成例子如下
<!-- JSP中的指令标识 --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.Date" %> <html> <head> <title>JSP页面的基本构成</title> </head> <body> <center> <!-- 嵌入的Java代码 --> <%String today=new Date().toLocaleString(); %> <!-- JSP表达式 --> 今天是:<%=today%> <!-- HTML标记语言 --> </center> </body> </html>
二、脚本元素
用Java写的脚本代码,以“<%”开始,以“%>”结束1、脚本段
(1)格式:<%合法的Java代码;%>(2)声明变量、调用方法和进行表达式运算,每行语句后面要加入分号
(3)脚本程序中定义的变量在当前的整个页面有效,但不会被其他的线程共享
(4)当前用户对变量的操作不会影响到其他的用户
(5)变量所在的页面关闭后,被定义的变量会被注销
<%@ page language="java" import="java.util. * " contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>1+2+3...+100</title> </head> <body> <% int sum=0; for(int i=1;i<=100;i++){ sum+=i; } %> <% out.println("sum="+sum); %> </body> </html>
2、表达式
以“<%=”开始,以“%>”结束,注意%与=中间不能有空格(1)语法:<%=expression%>
(2)执行结果会被自动转换成字符串,显示在JSP页面中
(3)表达式不是完整的Java语句,后面不能加“;”
JSP表达式在页面被传化为Servlet后,转换为out.println()方法,即输出语句<%out.println("sum="+sum);%>的效果相当于sum=<%=sum%>
3、声明
以“<%!”开始,以“%>”结束,可以声明变量、方法和类(1)语法:<%!声明变量或方法的代码%>
(2)在页面中声明的变量和方法在整个页面内有效,并且会被多个线程即多个用户共享,任何一个线程(用户)对声明的变量或方法的修改都会改变变量、方法原来的状态
(3)其生命周期从创建到服务器关闭后结束
<%@ page language="java" import="java.util. * " contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%! int num = 0; //声明一个计数变量 synchronized void add(){ //该方法实现访问次数的累加操作,synchronized是同步锁 num++; } %> <%add(); %><%-- 该脚本程序调用实现访问次数累加的方法 --%> <html> <body> <center>您是第<%=num %>位访问该页的游客!</center></body> </html>
4、注释
HTML注释、Java注释、JSP隐藏注释,HTML注释属于显示注释,会输出到客户端浏览器,但不进行显示,其余两种是隐式注释,不会输出到客户端浏览器(1)HTML注释语法
①<!--这是HTML注释-->
②Java注释:JSP是在HTML中嵌入Java代码,Java本身的注释机制在JSP中照样可以使用,不会受到任何影响
(2)Java注释
①单行注释://Java提供的单行注释,客户端无法查看
②多行注释:/*Java提供的多行注释,客户端无法查看,可以在JSP原始文件以及JSP翻译成的Servlet中看到*/
(3)JSP隐藏注释
①<%--这是隐藏的注释--%>
②不会被JSP引擎解释,也不会输出到客户端
三、指令元素
1、作用
(1)在将JSP源文件解析成Java文件时指示JSP引擎做出相应的操作,从而达到预期的目的(2)在整个页面范围有效,且不在客户端产生任何输出
(3)一个指令中可以设置多个属性,会影响到整个页面
2、基本格式
<%@指令属性1=""... 属性 2="" %>注意:%与@不能有空格
3、page指令
(1)用来设定JSP页面的全局属性和相关功能,作用于整个JSP文件,可以放在JSP页面的任何位置(2)语法格式:<%@page 属性="值" %>
(3)常见的属性
属性 | 作用 |
language | 设置JSP页面使用的语言,目前只支持Java,默认值为Java <%@ page language="java" %> |
extends | 设置JSP页面继承的java类,JSP页面在执行之前都会被服务器解析成Servlet,而Servlet是由Java类定义的,所以JSP和Servlet都可以继承指定的父类,该属性不常用,可能影响服务器的性能优化 |
import | 设置JSP导入的类包,嵌入的Java代码片段需要导入相应的类包 <%@ page import="java.util.*" %> |
pageEncoding | 指定页面编码格式,如果设置为ISO-8859-1,则页面不支持中文,通常设置为GBK或者UTF-8 <%@ page pageEncoding="UTF-8" %> |
contentType | 设置页面的MIME类型和编码 <%@ page contentType="text/html; charset=UTF-8"%> |
session | 指定页面是否使用HTTP的session会话对象,默认值为true <%@ page session="true"%> |
buffer | 设置页面out输出对象的缓冲区大小,默认为8KB,单位只能使用KB,建议使用8的倍数作为属性值 <%@ page buffer="128KB"%> |
autoFlush | 设置页面缓存满时,是否自动刷新缓存,默认为true,如果设置成false,则缓存满式会抛出异常 <%@ page autoFlush="false"%> |
isErrorPage | 可以将当前页面设置成错误处理页面来处理另一个JSP页面的错误,也就是作为异常处理页面 <%@ page isErrorPage="true"%> |
errorPage | 设置当前页面的异常处理页面,对应的异常处理页面isErrorPage必须设置为true,如果设置该属性,那么在web.xml文件中定义的任何错误处理页面都将被忽略,优先使用该属性定义的异常处理页面 <%@ page errorPage="relativeURL"%> |
isThreadSage | 设置JSP页面是否可以多线程访问。默认值为true,表示当前JSP页面被转换为Servlet后,会以多线程的方式来处理来自多个用户的请求,如果设为false,则转换后的Servlet会实现SingleThreadMode接口,并且将以单线程的方式来处理用户请求 |
isELIgnored | 其值可设置为true或false,表示是否在此JSP网页中执行和忽略表达式语言“$ {}”。设为true时,JSP容器将忽略表达式语言 |
info属性 | 设置JSP页面的相关信息,如当前页面的作者、编写时间等。此值可设置为任意字符串,由Servlet。getServletInfo()方法来获取所设置的值 |
(5)用import指明多个包时,之间用逗号隔开,或者分多行写
①<%@ page import="java.text.*,java.util.* " %>
②<%@ page import="java.text.*" %>
<%@ page import="java.util.* " %>
(6)默认被载入JSP当前页面的类
①java.lang.*
②javax.servlet.*
③javax.servlet.jsp.*
④javax.servlet.http.*
4、include指令
(1)作用:向当前页面插入一个静态文件,该文件可以是HTML文件、JSP文件或其他文件或者只是一段Java代码(2)格式:<%@ include file="URL"%>
URL:要插入文件的绝对路径或相对路径
①以“/”开头,指绝对路径,将在当前应用的根目录下查找文件
②以文件名称或文件夹名开头,指相对路径,在当前页面的目录下查找文件
四、动作元素
1、<jsp:include>动作
(1)指在当前的JSP页面中动态加入静态或动态的资源(如txt文件、JSP文件、HTML文件等),如果是静态网页,内容将直接加入当前JSP网页中,如果是***页,会编译执行后再加入当前JSP网页中(2)格式:<jsp:include page="URL或<%=expression%>" flush="true|false"/>
2、<jsp:param>动作
(1)用来提供key/value的信息,可以与<jsp:include>一起搭配使用代码例子:
include.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>include动作的使用</title> </head> <body> <h1>include动作的使用</h1> <jsp:include page="table.jsp"> <jsp:param name = "color" value="#00FF00"/> <jsp:param name = "title" value="This is the title"/> <jsp:param name = "content" value="This is the content"/> </jsp:include> </body> </html>table.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% String color = request.getParameter("color"); String title = request.getParameter("title"); String content = request.getParameter("content"); %> <table border="1" width="50%"> <tr bgcolor="<%=color%>"> <td><%=title %></td> </tr> <tr> <td><%=content %></td> </tr> </table> </body> </html>
3、<jsp:include>动作与include指令的区别
(1)执行时间:①指令在编译时就包含文件
②动作在运行时才包含文件
(2)引入内容:
①指令引入的是静态文本(HTML,JSP),在JSP页面被转化成servlet之前和它融合到一起
②动作引入的是执行页面或Servlet所生成的应答文本
4、<jsp.forward>动作
(1)将请求转发到另一个JSP、HTML或相关的资源文件中,该标识被执行后,当前的页面将不再被执行,而去执行该标识指定的目标页面(2)格式:<jsp.forward page="重定向的页面">
代码例子如下:
now.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 跳转之前的内容 <jsp:forward page="next.jsp"></jsp:forward> 跳转之后的内容 </body> </html>next.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 这是跳转之后的next.jsp </body> </html>
web技术简介,***页技术,JSP运行原理,JSP基本组成,脚本元素,指令元素