1、JSP与HTML有什么不同?
答:一个JSP页面通常由HTML标记、JSP注释、Java脚本元素(声明、Java程序片和Java表达式)和JSP标记(指令标记、动作标记和自定义标记)这4种基本元素组成
HTML运行在客户端,由浏览器解释执行;JSP运行在服务器端,需要web容器提供运行环境。
HTML侧重于静态数据展示,生成静态网页;JSP侧重于和服务器交互,主要用动态网页开发
HTML加载速度比JSP快。
HTML 页面是静态页面,也就是事先由用户写好放在服务器上,由 Web 服务器向客户端发送;
JSP 页面是由 JSP 容器执行该页面的 Java 代码部分,然后,实时生成的 HTML页面,因而说其是服务器端动态页面。
Java程序片:<% java代码 %>
成员变量和方法的声明:<%! 变量或方法定义 %>
Java程序片具有如下特征:
①调用JSP页面声明的方法
②操作JSP页面声明的成员变量
③声明局部变量
④操作局部变量
Java表达式:<%= 表达式 %>
①不可以在<%=和%>之间插入语句,即所输入内容的末尾不能以分号结束
②<%=是一个完整的符号,<%和=之间不能由空格
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<jsp:include page="a.jsp"/><!--JSP动作标记-->
<%!
int i=0;
int add(int x, int y){
return x+y;
}
//数据声明和方法声明在这里面
%>
<%
//Java程序片
i++;
int result=add(1,2);
%>
i的值为<%=i%> <%--Java表达式--%>
2、JSP注释有哪三种?
答:<!--HTML注释-->、<%--JSP注释--%>、Java注释(// 、/* */)
3、JSP的表达式的格式如何?它有什么作用?
答:Java的表达式:<%= %>,表达式的值由web服务器负责计算,并将计算结果用字符串的形式发送到客户端作为HTML页面的内容显示
4、JSP的程序段中可以定义方法吗?为什么?
答:不能定义方法,JSP代码编译时变成Servlet类中一个方法中的代码段
5、什么是JSP声明?它有什么用途?使用时应注意什么?
答:<%! %>是JSP的声明,可以在<%!%>中声明方法函数、属性、全局变量。不要声明局部变量
基本知识:
①JSP的本质就是一个Servlet,JSP在运行之前会先被Tomcat服务器翻译为.java文件,然后再将.java文件编译为.class文件,而我们在访问jsp时,处理请求的就是那个翻译后的类
②<%%>叫做脚本片段,其中编写的代码内容会翻译在Servlet的doservice方法中,显然我们可以在doservice方法中定义局部变量或者调用其他方法,但是不能在Service中
再定义其他的方法函数,也就是我们可以再<%%>中定义局部变量或者调用方法,但不能定义方法。在jsp页面可以有多个脚本片段,但多个脚本片段之间要保证完整
③<%!%>称作声明,其中写的内容将会直接翻译在Servlet类中,因为我们可以在Servlet类中定义方法和属性以及全局变量,所以我们可以在<%!%>中声明方法函数、属性、全局变量
④<%=%>称作jsp表达式,用于将已经声明的变量或表达式输出到html网页上
⑤直接写在jsp页面<body></body>中的代码称为模板元素,将会在Servlet的doservice方法中的out.write()中,作为输出内容。所以JSP中输出内容到页面可以使用out.write()或out.println()
6、URL传值的格式?获取参数的方法?
答:网址?参数名1=值1&参数名2=值2&......
request.getParameter();
URL的作用:
HTTP是应用层的协议,是一个基于请求/响应模式的、无状态的协议
Web页面本身无法向下一个页面传递信息,如果需要让下一个页面得知该页面中的值,除非通过服务器
Web页面之间传递数据,是Web程序的重要功能(通过服务器)
URL传值:
就是在URL后面给出一些参数
网址?参数名1=值1&参数名2=值2&......
作用:后一个页面可以从前一个页面获取一个或多个参数值
https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=jsp
http://localhost:8080/Prj04/page.jsp? m=3&n=5
获取URL参数
String 变量=request.getParameter("参数名");
返回URL传递的对应参数的值,结果为String类型
注意:如果URL没有传递参数或者参数名写错,返回结果为null,所以在编写程序时,通常要判断是否为null,否则有可能引发异常
URL传值的注意事项:
局限性:
传值的数据只能是字符串,对数据类型具有一定限制
传输数据的值会在浏览器地址栏里面被看到,保密性要求很严格的数据(如密码),不应该用URL方法来传值
优势:
简单性和平台支持的多样性(没有浏览器不支持URL),很多程序还是用URL传值比较方便
JSP指令标记
常用的JSP指令有page和include指令
<%@page 属性1="" 属性2=""...%>
page指令的主要属性有contentType、import、language和pageEncoding
contentType:属性定义一个值,用来确定响应的MIME类型(MIME类型就是设定某种文件用对应的一种应用程序来打开的方式类型),
如contentType="application/msword;charset=UTF-8" 浏览器使用word应用程序打开用户请求
常见的MIME类型有text/html、text/plain(普通文本)、application/pdf、application/msword、image/jpeg、image/png、image/gif、application/vnd.ms-powerpoint
import:属性的作用是JSP页面引入包中的类
language:属性用来指定JSP页面使用的脚本语言,目前是java
pageEncoding:contentType中的charset是指服务器发送给客户浏览器时所见到的网页内容的编码;pageEncoding是指JSP文件自身存储时所用的编码
include指令:<%@include file="文件的URL"%>(静态嵌入)
JSP动作标记
include、forward、param、useBean、getProperty和setProperty
<jsp: ></jsp>或<jsp: />
<jsp:include page="文件的URL"/> 作用:嵌入其他文件到当前的JSP页面(动态嵌入)
<jsp:forward page="文件的URL"/> 作用:从标记出现处停止当前JSP页面的继续执行,转向执行forward动作标记中的page属性值指定的JSP页面
动作标记param不能独立使用,但可以作为include、forword动作标记的子标记来使用,该标记以“名字-值”对的形式为对应页面传递参数
<jsp:父标记 page="接收参数页面的URL">
<jsp:param name="参数名" value="参数值">
</jsp:父标记>
父标记为:include、forword
接收参数的页面可以使用内置对象request调用getParameter("参数名")方法获取动作标记param传递过来的参数值
7、什么是JSP的指令和动作?
答:指令:include、page
动作:include、forward、param、useBean、getProperty和setProperty
8、page指令的import、contentType属性有什么作用?
答:import:属性的作用是JSP页面引入包中的类;contentType:属性定义一个值,用来确定响应的MIME类型
9、include指令的格式、功能如何?使用时应注意什么?
答:<%@include file="文件的URL"%>、
include指令标记的作用就是将JSP文件、HTML文件或其他文件静态嵌入到当前的JSP网页中
静态嵌入就是“先包含后处理”,在编译阶段完成对文件的嵌入。也就是将当前JSP页面与要嵌入的文件合并成一个新的JSP文件,
然后再由JSP引擎将新页面转化为Java文件处理并运行
10、include动作的格式、功能如何?使用时应注意什么?
答:<jsp:include page="文件的URL"/>
include动作标记的作用是将JSP文件、HTML网页文件或其他文件文本动态嵌入到当前的JSP网页中
动态嵌入就是“先处理后包含”,在运行阶段完成对文件的嵌入。也就是在将JSP页面转译成Java文件时并不合并两个页面,而是在Java文件的字节码文件被加载并执行时才去处理include动作标记中引入的文件。
与静态嵌入方式相比,动态嵌入的执行速度稍慢,但是灵活性较高
11、include动作与指令有什么不同?
答:嵌入方式不同,一个是动态嵌入,一个是静态嵌入
12、forward动作的格式、功能是什么?
答:<jsp:forward page="文件的URL"/> 作用:从标记出现处停止当前JSP页面的继续执行,转向执行forward动作标记中的page属性值指定的JSP页面
13、include、forward动作如何传递参数?
动作标记param不能独立使用,但可以作为include、forword动作标记的子标记来使用,该标记以“名字-值”对的形式为对应页面传递参数
<jsp:父标记 page="接收参数页面的URL">
<jsp:param name="参数名" value="参数值">
</jsp:父标记>
父标记为:include、forword