JSP部分知识点整理.docx
《JSP部分知识点整理.docx》由会员分享,可在线阅读,更多相关《JSP部分知识点整理.docx(13页珍藏版)》请在冰点文库上搜索。
JSP部分知识点整理
第一章:
WEB开发环境搭建
Tomcat配置
●解压apache-tomcat-7.0.29.zip
●配置JAVA_HOME
●启动Tomcat(bin/startup.bat)
●访问http:
//localhost:
8080
Tomcat目录结构
●/bin:
存放windows或Linux平台上启动和关闭Tomcat的脚本文件
●/conf:
存放Tomcat服务器的各种全局配置文件,其中最重要的是:
▪server.xml(Tomcat主要配置文件)和web.xml
●/lib:
存放Tomcat服务器所需的各种JAR文件
●/logs:
存放Tomcat执行时的日志文件
●/temp:
存放临时文件
●/webapps:
Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录
●/work:
存放JSP编译后产生的class文件
Eclipse安装Tomcat插件
●下载EclipseIDEforJavaEEDevelopers
▪http:
//www.eclipse.org/downloads/
●下载Tomcat插件(tomcatPluginV33.zip)下载地址:
▪
●配置插件
▪解压插件包,放入eclipse的dropins目录中重启eclipse
▪Eclipse配置Tomcat
第二章:
JSP开发基础
●WebApplication名称
▪WEB-INF
✓web.xml
✓lib
✓classes
▪META-INF
●应用程序可以直接放在Tomcat的webapp目录下
●通过Tomcat配置文件指定应用程序所在目录
▪
JSP基本语法:
Declaration
●基本语法
▪<%!
%>
●说明:
只可以声明全局变量、方法和类且仅在该页面内有效
●例:
▪privateStringstr="成功!
";
▪publicvoid add(){
✓......
▪}
●declaration.jsp
JSP基本语法:
Scriptlet
●基本语法
▪<% %>
●说明:
Scriptlet(程序段)可以包括变量局部声明、初始化,编写语句等
●例:
●<%
StringuserName=null;
if(request.getParameter("username")==null){
%>
<%@includefile="error.html"%>
<%
}else{
<%=request.getParameter("username"))%>
}
●%>
●scriptlet.jsp
●注意:
与Declaration声明变量不同
JSP基本语法:
Expression
●基本语法
▪<%= %>
●说明:
表达式内的元素可以是变量,有返回值的方法,以及计算表达式,相当于out.print()。
表达式元素是不需要分号“;“结尾
●例:
●Date:
<%=newjava.util.Date()%>
●expression.jsp
JSP基本语法:
Comment
●基本语法
▪<%-- --%>
●说明:
相当于Java中的/* */,在JSP编译时被忽略掉,而且不会显示在客户的浏览器中
●例:
▪
—html注释--><%--JSP注释--%>
●comment.jsp
JSP的生命周期
●转换阶段
▪客户端发送对JSP页面的请求
▪JSP容器(WEB容器)检查JSP页面的语法,将JSP页面转译为Servlet源文件
▪源文件放在Tomcat的/work/Catalina/localhost目录相应的项目目录下
●执行阶段
▪Servlet容器加载(编译成class文件)Servlet
▪创建一个Servlet实例,并加载到服务器内存中处理请求
▪初始化JSP页面,调用_jspInit方法
▪由容器调用_jspService方法,生成响应内容
▪销毁JSP页面,_jspDestroy
第三章:
JSP指令
Directives编译指令:
Page
●Page指令:
用于设置JSP页面的属性,这些属性将用于和JSP容器通信,控制所生成的Servlet结构
●基本语法
▪<%@page
[language="java"]
[extends="package.class"]
[import="{package.class|package.*},..."]
[session="true|false"] [isELIgnored=“true|false”]
[buffer="none|8kb|sizekb"]
[autoFlush="true|false"]
[isThreadSafe="true|false"] //SingleThreadModel
[info="text"]
[errorPage="relativeURL"]
[contentType="text/html;charset=UTF-8"] [pageEncoding=“”]
[isErrorPage="true|false"]
%>
●说明:
<%@page%>指令作用于整个JSP页面
Directives编译指令:
Include
●include指令:
用于在jsp页面中静态包含一个文件,如:
jsp、html、文本文件或一段Java代码
●基本语法
▪<%@includefile="relativeURL“/>
●注意:
▪在主页面编译(转换为servlet)时将页面插入,不能传参数
Action动作指令:
include
●服务器将被包含文件内容每字节插入到主页面中,然后将产生的页面作为单个JSP页面进行处理
●基本语法
▪includepage="{relativeURL|<%=expression%>}" flush="true|false">
▪paramname="parameterName"value="{parameterValue|<%=expression%>}"/>
▪
include>
●注意:
includepage="..."/>运行时插入被include文件
<%@includefile="..."%>或<%@includepage="..."%>编译时插入被include文件
Action动作指令:
forward
●基本语法
▪forwardpage="relativeURL">
▪paraname="parameterName"value="{parameterValue|<%=expression%>}"/>
▪
forward>
Tomcat配置数据源
●配置Tomcat的server.xml文件的中加入元素,比如:
mysql:
//localhost:
3306/tjeti/>
其中:
name:
指定Resource的JNDI名字
type:
指定Resource所属的Java类名
driverClassName:
指定连接数据库的JDBC驱动程序
username:
指定连接数据库的用户名
password:
指定连接数据库的口令
maxIdle:
指定数据库连接池中的最大空闲连接数目,0表示不受限制
maxActive:
指定数据库连接池中的最大活动连接数目,0表示不受限制
maxWait:
指定连接池中连接处于空闲状态的最长时间,超过会抛出异常,-1表示无限
url:
指定连接数据库的URL
在Web应用中Tomcat数据源
●可以通过三个步骤来使用数据源对象:
▪获得对数据源的引用:
Contextctx=newInitialContext();
DataSourceds=(DataSource)ctx.lookup("java:
comp/env/jdbc/mysql");
▪获得数据库连接对象:
Connectioncon=ds.getConnection();
关闭数据库连接:
con.close();
第四章:
JSP内置对象
JSP内置对象
No.
内置对象
类型
1
request
javax.servlet.http.HttpServletRequest
2
response
javax.servlet.http.HttpServletResponse
3
out
javax.servlet.jsp.JspWriter
4
session
javax.servlet.http.HttpSession
5
application
javax.servlet.ServletContext
6
pageContext
javax.servlet.jsp.PageContext
7
config
javax.servlet.ServletConfig
8
exception
java.lang.Throwable
9
page
java.langObject
request内置对象
●客户端请求信息的封装
●request对象常用方法
●request对象的作用范围
▪一次请求到响应的阶段。
在这阶段,对于转发和页面包含对象是共享的。
respons内置对象
●服务器响应信息的封装
✓用于设置响应报头,Cooike等响应信息。
●respons对象常用方法
●forward与重定向的区别
▪response.sendRedirect("relativeURL")
第五章:
EL表达式
EL表达式语法
●EL表达式语法:
${表达式}
▪可以在模板文本,自定义和标准动作标签中使用。
但不能在脚本中使用
●存取器
▪EL提供了(点运算符(.)和方括号运算符([]))两种不同的存取器用来访问数据。
▪点运算符通常用于访问对象的特性例如${user.firstName}
▪方括号运算符用来检索数组和集合元素(见在EL表达式访问集合)
EL运算符
类别
运算符
算术运算符
+、-、*、/(或div)和%(或mod)
关系运算符
==(或eq)、!
=(或ne)、<(或lt)、>(或gt)、<=(或le)和>=(或ge)
逻辑运算符
&&(或and)、||(或or)和!
(或not)
验证运算符
empty
在EL表达式中使用作用域对象
●作用域对象
▪输出作用域中属性的值:
${作用域对象.属性名}或${属性名}
▪EL按PageContext,HttpServletRequest,HttpSession,ServletContext搜索属性
▪可手动使用pageScope,requestScope,sessionScope,applicationScope来指定属性的范围
▪找到属性会调用toString方法并返回调用结果,没有找到返回空字符串而不是null或错误消息。
●请求参数
param//同getParameter(Stringname)
paramValues//同getParameterValues(Stringname)
●请求报头
▪header和headerValues:
访问HTTP请求报头的指定值和全部值,header.报头
●Cookie的访问
▪cookie返回Cookie对象而不是值。
需要使用Cookie类的value属性来获取值
▪cookie.userCookie.value
●初始化参数
▪initParam对上下文初始化参数的访问。
initParam.参数名
EL隐式对象
类别
标识符
EL
JSP
JSP
pageContext
取得其他有关用户要求或页面的详细信息(ServletContext)
作用域
pageScope
${pageScope.name}
session.getAttribute("name")
requestScope
${requestScope.name}
session.getAttribute("name")
sessionScope
${sessionScope.name}
session.getAttribute(“name")
applicationScope
${applicationScope.name}
application.getAttribute("name")
请求参数
param
${param.name}
request.getParameter(Stringname)
paramValues
${paramValues.name}
request.getParameterValues(Stringname)
请求头
header
${header.name}
request.getHeader(Stringname)
headerValues
${headerValues.name}
request.getHeaders(Stringname)
Cookie
cookie
${cookie.name.value}
request.getCookies()
初始化参数
initParam
${initParam.name}
application.getInitParameter(“name")
EL表达式访问集合
●使用相同的方式访问不同类型的集合
●表达式:
${attributeName[entryName]}
▪attributeName为数组对象,entryName为下标
▪attributeName为List对象,entryName为索引
▪attributeName为Map对象,entryName为key
▪[entryName]中的entryName可以为变量
第六章:
标准标签库(JSTL)
JSTL配置
●下载JSEL安装包,得到jstl.jar和standart.jar
▪jstl.jar中包含JSTL规范中定义的接口和相关的类
▪standart.jar中包含JSTL的实现和5个标签库的TLD文件
▪放入WEB-INF/lib目录下
▪在JSP页面中导入要使用的标签库的URL可以在web.xml中使用元素来修改标签库的URL引用
核心标签库-条件标签
●if>:
if的实现
▪iftest="${var.index%2==0}">
▪*
▪
if>
●choose>:
if/else的实现,只能含以下2个子标签
▪choose>
✓whentest="${var.index%2==0}">
✓*
✓
when>
✓otherwise>
✓!
✓
otherwise>
▪
choose>
核心标签库-迭代标签
●forEach>:
主要用于访存和显示数据集
●基本语法
▪forEachvar="name"items="expression"varStatus="name"begin="expression"end="expression"step="expression">
bodycontent
forEach>
▪说明:
✓items:
是集合,用EL表达式
✓var:
变量名,存放items
✓varStatus:
显示循环状态的变量
–①index:
从0开始
–②count:
元素位置,从1开始
–③first:
如果是第一个元素则显示true
–④last:
如果是最后一个元素则显示true
✓begin:
循环的初始值(整型)
✓end:
循环结束
✓step:
步长,循环间隔的数值
核心标签库-URL相关
●import>:
导入一个基于URL的资源
▪导入同web应用下的资源,还可导入不同web应用的资源
▪和include>一样,在请求时操作
●url> :
使用正确的URL重写规则构造一个URL
▪在前面附加当前servlet上下文的名称
▪和param>一起使用将请求参数名称和值的URL编码
▪如果URL以一个斜杠开始,会在前面加上servlet的上下文名称因为servlet上下文名称是在部署期间而不是开发期间决定的
●redirect>:
重定位到另外的资源,用于向用户的浏览器发送HTTP重定向响应
●param>:
用来传递参数给重定向或包含页面
>格式化标签
●格式化日期
▪formatDatevalue=“”pattern=“”/>
▪value:
通过EL表达式或<%=newDate()%>取的日期值
▪pattern:
输出的日期格式;yyyy-MM-dd
●格式化数字
▪formatNumbervalue="${n}“pattern="###,###.##"/>
Funcions标签库
●${fn:
length(content)}获取长度
●${fn:
contains(content,“test”)}字符串连接
●${fn:
toLowerCase(content)}转换成小写
●${fn:
toUpperCase(content)}转换成大写
●${fn:
replace(content,“www”,“ftp”)}替换内容
●${fn:
substring(content,0,10)}取子串
●${fn:
substringAfter(content,"www")}取子串