概述
1.JSP:Java Server Pages。可以理解为:JSP=HTML+JAVA代码片段
2.设定Eclipse中JSP的编码为UTF-8,以及换行符为unix格式。
3.JSP编译运行。当第一次加载JSP页面时,因为要将JSP文件转换为Servlet类,所以响应速度较慢。
当再次请求时,JSP容器就会直接执行第一次请求时产生的Servlet,而不会再重新转换JSP文件,所以其执行速度较快。
4.JSP页面组成
JSP代码放在特定的标签中,然后嵌入到HTML代码中。
开始标签、结束标签和元素内容 三部分统称为JSP 元素(Elements)。
JSP元素可分成三种不同的类型:
◦脚本元素(Scripting)
◦指令元素(Directive)
◦动作元素(Action)
注意:JSP的标签必须要完结。
5.三种元素的说明:
A.脚本元素 规范JSP 网页所使用的Java 代码,
包括:HTML注释、隐藏注释、声明、表达式和脚本段。
B.指令元素 是针对JSP引擎的,并不会直接产生任何看得见的输出。
包括:inc1ude指令、page指令和taglib指令。
C.动作元素 利用XML语法格式的标记来控制Servlet引擎的行为。
6.JSP注释:
A.html的注释 ----发送到客户端,在浏览器右键源码中可见
<!--注释[<%=表达式%>]-->
B.jsp隐藏的注释 ----不发送到客户端,不可见
<%--注释--%>
C.java隐藏注释 ----客户端也看不见
存在于<% %>标签中的Java单行注释和多行注释
7.在JSP程序中用到的变量和方法是需要声明的,声明的语法如下:核心格式:<%! ....%>
<%! 声明;[声明;]…%> //必须以;结尾
例如:
<%! int i=6;%>
<%! int a,b,c;double d=6.0;%>
<%! Date d=new Date(); %>
8.JSP的表达式
是由变量、常量组成的算式,它将JSP生成的数值嵌入HTML页面,用来直接输出Java代码的值。
表达式的语法规则如下: <%= 表达式 %>
注意:
A.不能用一个分号(“;”)来作为表达式的结束符。
B.“<%=”是一个完整的标记,中间不能有空格。
C.表达式元素包含任何在Java语言规范中有效的表达式。
说明,在开发中要尽量使用表达式输出代替out.println()输出!
9.JSP脚本段(Scriplet)是一段Java代码。可以包含任意行合法的脚本语句,脚本段是一个代码片断,在服务器处理请求过程中被执行。其语法规则如下:
<% 代码 %>
10.会在Eclispe中调出这些片段小提示。在光标处插入对应的标签。
11.include指令:
在JSP网页中插入其他的文件,有两种方式:
◦include指令
include指令称为文件加载指令,可以将其他的文件插入JSP网页,被插入的文件可以是JSP文件、HTML文件或者其他文本文件,但是必须保证插入后形成的新文件符合JSP页面的语法规则。
其指令形式如下:
<%@ include file=”相对地址”%>
include指令只有一个属性:file。
◦jsp:include动作。
12.page指令称为页面指令,几乎在所有JSP页面顶部都会看到page指令。
<%@ page language=”脚本语言”
extends=”继承的父类名称”
import=”导入的java包或类的名称”
session=”true/false”
buffer=”none/8kB/自定义缓冲区大小”
autoflush=”true/false”
isThreadSafe=” true/false”
info=”页面信息”
errorPage=”发生错误时所转向的页面相对地址”
isErrorPage=”true/false”
contentType=”MIME类型和字符集”
%>
import
◦用来导入将要用到的一个或多个包/类,例如:
<%@ page import=”java.util.Date”%>
<%@ page import=”java.util.*”%>
isErrorPage:这个属性的默认值为“false”
isErrorPage用来指定目前的JSP网页是否是另一个JSP网页的错误处理页,通常与errorPage属性配合使用。特别说明:如果页面错误的提示内容没有使用exception对象,值为false也是可以的,但是要使用exception对象,必须为true。
注意:
A.在一个页面中可以使用多个<%@ page %>指令,分别描述不同的属性
B.每个属性只能用一次,但是import指令可以多次使用。
C.<%@ page%>指令区分大小写。
可以在Tomcat的安装目录/conf/web.xml中查看到所有已知的MIME类型。
13.taglib指令
用来定义一个标记库以及标记的前缀,其语法规则如下:
<%@ taglib uri=”URIToLibrary” prefix=”标记前缀”%>
14.JSP动作:
JSP动作功能:
A.JSP动作元素用来控制JSP引擎的行为
B.可以动态插入文件、重用JavaBean组件、导向另一个页面等。
JSP动作元素:----注意大小写敏感
jsp:include动作:在页面得到请求时包含一个文件。
jsp:forward动作:引导请求者进入新的页面。
jsp:plugin动作:连接客户端的Applet或Bean插件。
jsp:useBean动作:应用JavaBean组件。
jsp:setProperty动作:设置JavaBean的属性。
jsp:getProperty动作:获取JavaBean的属性并输出。
15.jsp:include动作
在即将生成的页面上动态的插入文件,它在页面运行时才将文件插入,对被插入文件进行处理。也就是说它是在页面产生时插入文件,其语法如下:
<jsp:include page=”文件相对路径” flush=”true”/>或
<jsp:include page=“文件相对路径” flush=“true”>
<jsp:param name=“参数名1” value=“参数值1”/>
<jsp:param name=“参数名2” value=“参数值2”/>
…
</jsp:include>
说明:flush属性值为布尔型,若值为false表示这个网页全部读进来之后才输出,用户体验就不好;通常设为true,buffer满了就输出。
被包含页面可以使用request.getParameter()方法进行参数接收!
16.include指令和jsp:include动作区别:
A.include指令是静态的,是在JSP文件被转换成Servlet的时候引入文件,它把被插入文件插到当前位置后再进行编译
B.jsp:include动作是动态的,插入文件的时间是在页面被请求的时候。JSP引擎不把插入文件和原JSP文件合并成一个新的JSP文件,而是在运行时把被插入文件包含进来。
注意:如果包含页面时需要传递参数,则只能使用jsp:include动作
特别说明:被包含的页面如果有图片等标签,当图片不能显示时,要特别注意,当前路径的基准是外面的JSP页面,而不是被包含页面的位置基准!
建议优先使用动态包含!
17.jsp:forward动作 ----服务器跳转
用于停止当前页面的执行,转向另一个HTML或JSP页面。
在执行中JSP引擎不再处理当前页面剩下的内容,缓冲区被清空。
在客户端看到的是原页面的地址,而实际显示的是另一个页面的内容。
<jsp:forward page=“文件名”/>或
<jsp:forward page=“文件名”>
<jsp:param name=“参数名1” value=“参数值1”/>
<jsp:param name=“参数名2” value=“参数值2”/>
…
</jsp:forward>
服务器跳转:客户端浏览器的地址栏显示路径不变!
18.jsp:useBean动作
◦jsp:useBean动作用来装载一个将要在JSP页面中使用的JavaBean。
它创建一个JavaBean实例并指定其名字和作用范围。
◦实际工程中常用JavaBean做组件开发,而在JSP中只需要声明并使用这个组件,这样可以较大限度地实现静态内容和动态内容的分离,这也是JSP的优点之一。
在JSP中实例化一个bean的最简单的方法如下:
<jsp:useBean id=“bean的名称” scope=”有效范围” class=“包名.类名” />
scope属性的取值有四种: page, request, session和application,默认值是page。或者:
<jsp:useBean id=“bean的名称” scope=”有效范围” class=“包名.类名”>
实体
< /jsp:useBean >
实体的内容可以是:
◦合法的JSP程序代码
◦ <jsp:setProperty>和<jsp:getProperty>标签
◦一般的HTML代码
注意:这种实例化形式下,只有当第一次实例化bean时才执行实体部分,如果是利用现有的bean实例则不执行实体部分。
jsp:useBean并非总是意味着创建一个新的bean实例。
----------------------------------------------------------
JSP引擎根据useBean中id属性指定的名字,在一个同步块中,查找内置对象pageContext中是否包含该id指定的名字和scope指定的作用域的对象。
如果该对象存在,JSP引擎把这样一个对象分配给用户。
如果不存在则创建新的bean实例。
19.一个类作为JavaBean需要符合的要求:
A.类必须放在包中,在web中没有包的类是不存在的;
B.类必须声明为public的;
C.必须要有无参构造方法,无参构造方法可以是显示定义或者隐式继承;
D.对类的属性使用private封装,提供setter和getter方法;特殊情况下可以不提供setter方法!
20.jsp:setProperty动作
用来设置已经实例化的bean对象的属性, jsp:setProperty动作的几种语法规则
第一种是直接将属性值设置为字符串或表达式,形如:
<jsp:setProperty name=“bean的名称” property=“bean的属性名称” value= “属性值”/>
第二种方法用request的参数值来设置JavaBean的属性值,request参数的名字和JavaBean属性的名字可以不同,其语法规则如下:
<jsp:setProperty name=“bean的名称” property=“bean的属性名称”
param= “request参数的名字”/>
第三种方式:使用名称自动匹配
<jsp:setProperty name="book" property="bookName" />
<jsp:setProperty name="book" property="bookNum" />
第四种方式:使用*通配符:
<jsp:setProperty name="book" property="*" />
21.jsp:setProperty动作的用法
A.可以在jsp:useBean元素的外面使用jsp:setProperty:
<jsp:useBean id="myName" ... />
...
<jsp:setProperty name="myName" property="someProperty" ... />
此时,不管jsp:useBean是找到了一个现有的bean,还是新创建了一个bean实例,jsp:setProperty都会执行。
B.把jsp:setProperty放入jsp:useBean元素的内部,如下所示:
<jsp:useBean id="myName" ... >
...
<jsp:setProperty name="myName" property="someProperty" ... />
</jsp:useBean>
此时,jsp:setProperty只有在新建bean实例时才会执行,如果是使用现有实例则不执行jsp:setProperty。
22.jsp:getProperty动作
用来获取beans的属性值,将其转换成字符串,然后输出。其语法规则如下:
<jsp:getProperty name=“bean的名称” property=“bean的属性名称”/>
注意:jsp:setProperty动作和jsp:getProperty动作必须与jsp:useBean动作一起使用,不能单独使用。
23.在Eclispe中运行使用JavaBean的JSP,不一定需要将编译后的Bean的class文件放在WEB-INF/classes下;见下图:
JavaBean的删除:JavaBean属于哪个范围对象就调用哪个范围的内置对象的removeAttribute()方法删除!
24.如何处理JSP页面中的代码<% %>包裹问题?即何时包裹,何时不包裹。
可以认为是:
A.输出指令不用包裹;B.<jsp:... 指令不需要包裹。C.HTML的标签不需要包裹;
25.JSP的9个内置对象:---容器自动实例化,不需要用户去实例化,可以直接使用。
pageContext---JSP页面容器、request---得到用户的请求信息、
response---服务器向客户端的响应信息、session---用来保存一个用户的信息
application---表示所有用户的共享信息、config---服务器配置,可以取得web.xml中的初始化参数
out---页面输出、page---表示从页面中表示出来的一个Servlet实例
exception---表示JSP页面所发生的异常,在错误页中才起作用,且错误页的isErrorPage的属性必须为true! pageContext request response session application config out page exception
page request session application response pageContext out config exception
26.JSP提供的4种属性保存范围:
A.page 只在页面中保存属性,跳转之后则无效;---使用pageContext表示
B.request 只在一次请求中保存属性,客户端跳转无效,但是服务器跳转后依然有效;
C.session 在一次会话中保存,无论何种跳转都可以使用,但是新开的浏览器无法使用;
D.application 在整个服务器上保存,所有用户都可以使用。
27.request的常用方法:
28.response的常用方法:
说明: response. setHeader("",2 );
A.response.setHeader("refresh","2”); //设置两秒一刷新
B.response.setHeader("refresh”,”3;URL=hello.htm”) ; // 3 秒后跳转到 hello.htm
定时的时间如果为0 则为立刻跳转。----定时跳转为客户端跳转
超链接跳转也是客户端跳转!
C.response.sendRedirect(”hello.htm”); //直接跳转到hello.htm
----此跳转也是客户端跳转!
29.Cookie的常用方法:
Cookie c1 = new Cookie(”name",”zhangsan”); //定义新的Cookie 对象
Cookie c2 = new Cookie(”age”,"25"); // 定义新的Cookie 对象
c1.setMaxAge(60) ; //Cookie 保存60 秒
c2.setMaxAge(60) ; //Cookie 保存60 秒
response.addCookie(c1) ; //向客户端增加Cookie
response.addCookie(c2) ; //向客户端增加Cookie
30.session 对象是javax.servlet.http.HttpSession 接口的实例化对象,
31.application 对象是javax.servlet.ServletContext 接口的实例化对象,从单词上翻译表示的
是整个Servlet 的上下文, ServletContext 代表了整个容器的操作
例如:
String path = application.getRealPath(”/”); //得到当前虚拟目录下对应的真实路径
String path= this.getServletContext().getRealPath("/"); //得到当前虚拟目录下对应的真实路径-----尽量使用this.getServletContext()来代替application 对象。
32.config 对象是javax.servlet.ServletConfig 接口的实例化对象,主要的功能是取得一些初
始化的配置信息。
所有的初始化参数必须在web.xml 中配置,即如果一个JSP 文件要想通过初始化参数取得一些信息, 则一定要在web.xml 文件中完成映射。
33.out 对象是javax.servlet.jsp.JspWriter 类的实例化对象, 主要功能就是完成页面的输出操作,使用println()或print()方法输出,但是从实际的开发来看,直接使用out 对象的几率较小,
34.pageContext 对象是javax.servlet.PageContext 类的实例,主要表示一个JSP 页面的上下文,在此类中除了之前讲解过的属性操作外,还定义了如表6-15 所示的一些方法。
例子:
// 执行页面跳转
pageContext.forward("pagecontext_forward_demo02 .jsp?info=AABB") ;
// 从session 属性范围中取出属性, 并执行向下转型操作
String info = pageContext.getRequest().getParameter("info”);
2.27补充:
先有servlet 后有jsp servlet是客户端服务小程序 后开发出jsp不再用繁琐的servlet拼凑前端页面,而专注于处理客户端传来的信息。
最后
以上就是忧郁往事为你收集整理的JSP初级学习总结的全部内容,希望文章能够帮你解决JSP初级学习总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复