前言
在学jsp的时候总是在为HTML中写jav代码感到很别扭,因此直接就学了jstl和el
jsp:
java服务器页面
作用:
将内容的生成和信息的展示相分离
运行在服务器端,本质上就是一个serlvet,产生的java文件和class保留在tomcat的word目录下。
jsp脚本:
<%..%>java代码片段
<%=..%>输出表达式相当于out.print()
<%!..%>声明成员
jsp指令
作用: 声明 jsp 页面的一些属性和动作
格式:
<%指令名称 属性="值" 属性="值"%>
jsp指令的分类:
page:主要声明jsp页面的一些属性
include :包含
taglib:导入标签库
注意:
一个页面可以出现多个指令
指令可以放在任意位置,一般都放在jsp页面的最上面
///////////////////////////////////////////////////////////////////////////////
page指令:
重要属性3个:
contentType:设置响应流的编码,及通知浏览器是用什么编码打开的,设置文件的mimetype
pageEncoding:设置页面的编码
import:导入所需要的包
contentType和pageEncoding联系:
若两者都出现的时候,各自使用各自的编码
若只出现一者,两个都使用出现的这个编码
若两者都不出现,使用服务器默认的编码tomcat7使用的iso-8859-1
了解属性:
language:当前isp页面里面可以嵌套的语言
buffer:设置isp页面的流的缓冲区的大小autoFlush:是否自动刷新
extends:声明当前jsp的页面继承于那个类.必须继承的是httpservlet及其子类session:设置isp页面是否可以使用session内置对象
isELIgnored:是否忽略e1表达式
errorPage:当前isp页面出现异常的时候要跳转到的jsp页面i
sErrorPage:当前jsp页面是否是一个错误页面若值为true,可以使用jsp页面的一个内置对象 exception
///////////////////////////////////////////////////////////////////////////////
include指令:
静态和动态包含,就是将其他页面后者servlet的内容包含进来,一起进行编译运行,生成一个java文件
格式:
静态:
<%@include file=”相对路径或者是内部路径”%>
动态:
<jsp:include page="值" ></jsp:include >
都是将多次使用的代码封装
例如:
<%@include file="/jsp/include/i1.jsp”%>
路径:
相对路径:
./或者什么都不写当前路径
上一级路径../
绝对路径:
带协议和主机的绝对路径
不带协议和主机的绝对路径
/项目名/资源
内部路径:
不带协议和主机的绝对路径去掉项目名
请求转发 静态包含 动态包含
///////////////////////////////////////////////////////////////////////////////
taglib指令:导入标签库
格式:
<%@taglib prefix=”前缀名”uri="名称空间”%>
若导入之后
<前缀名:标签.…>
例如:
<c:if test="">输出内容</c:if>
///////////////////////////////////////////////////////////////////////////////
jsp的内置对象:★★★(9大内置对象)
在jsp页面上可以直接使用的对象
内置对象 类型
out JspWriter
request HttpservletRequest
response HttpServletResponse
session Httpsession
exception Throwable
page Servlet(this)
config Servletconfig
application Servletcontext
pageContext Pagecontext
jsp的域对象:
对象 范围
application 整个项目
session 一次会话
request 一次请求
pagecontexty 一个页面
pagecontext作用:理解
1.域对象
xxxAttribute()
2.操作其他域对象
方法:
xxxAttribute(...,int scope):
scope取值:
APPLICATION_SCOPE
SESSION_SCOPE
REQUEST_SCOPE
PAGE_SCOPE
3.获取其他的内置对象
getXxx()
注意:
getRequest():获取request内置对象
4.便捷查找,
findAttribute(string key):依次从pagecontext,request,session,application四个域中,查找相应的属性,若查找到了返回值,且结束该次查找若查找不到,返回一个null
///////////////////////////////////////////////////////////////////////////////
jsp的动作标签
<jsp:forward>:请求转发
相当于java中 request.getRequestpDispatcher(..).forward(...);
<jsp:forward page="内部路径"></jsp:forward>
<jsp:include>:动态包含
就是将被包含页面或者servlet的运行结果包含到当页面中。
///////////////////////////////////////////////////////////////////////////////el:
jsp的内置表达式语言(el),从jsp2.0开始
用来代替<%=......%>
作用:
1.获取域中数据(重点)
2.执行运算(重点)
3.获取常见的web对象
4.调用java方法
格式:
${el表达式}
获取域中数据:
1.获取简单数据
注意:
若属性名中出现了”.” | "+” | ”-”等特殊符号,需要使用scope获取
例如:
{requestScope.rkey}------------------rvalue
{rkey}
{skey},
{aakey}
2.获取复杂数据
获取数组中的数据
s{域中的名称[index]}
获取list中的数据
s{域中的名称[index]}
获取map中的数据
S{域中的名称.键名}
${requestScope["arr.age"]}也可以获取特殊名字的数据
3.javabean导航
javabean:
java语言编写的一个可重用的组件,
狭义上来说就是我们编写的一个普通的java类例如:User person javabean规范:
1.必须是一个公共的具体的类public class
2.提供私有的字段 private string id;//id称之为字段
3.提供公共访问字段的方法 get | set | is方法
public string getid(){.....................................}
一旦有公共的方法之后,get | set | is之后的内容,将首字母小写,
将这个东西称之为bean属性,id就是一个bean属性
4.提供一个无参的构造器
5.一般实现序列化接口 serializable
${域中javabean名称.bean属性}
<% JavaBeanUser jbu = new JavaBeanUser(); jbu.setName("张三"); jbu.setPassword("123456"); //将jbu放入域中 request.setAttribute("user", jbu); %>
{user.password }
///////////////////////////////////////////////////////////////////////////////
执行运算:
四则运算,关系运算(> < = ) 逻辑运算(&& || !)
注意:
+:只能进行加法运算,字符串形式数字可以进行加法运算
<% request.setAttribute("i",1);
request.setAttribute("j",2);
request.setAttribute("k","3");
request.setAttribute("l","l"); %>
{i + k }
{empty 域中的对象名称}
是否为0:
<% List l = null; request.setAttribute("list", l); %>
{empty listl}-------------------------false ${3 > 4 ? "yes" : "no" }
三元运算符
///////////////////////////////////////////////////////////////////////////////
el的内置对象:(了解不要和jsp的内置对象搅混了)
11个
pageScope
requestScope
sessionScope
appLicationScope
param
paramScope
header
headerValues
initParam
cookie(重点)
pageContext(重点)
注意:
除了最后一个,其余对象获取的全都是map集合
了解:和参数相关的el内置对象
param()
paramValues
了解:和请求头相关的el内置对象
header
headerValues
了解:和全局初始化参数相关的el内置对象
initParam
///////////////////////////////////////////////////////////////////////////////
cookie(重点)内置对象:记住用户名
{cookie}获取相当于
{username = new Cookie("username","tom")};
相当于map的key是cookie的键
map的values是当前的cookie
若想获取名称为username的cookie的value值(获取tom)
${cookie.username.value}----------------javabean导航
注意:
java中Cookie的API
getName():获取cookie的value
getValue():获取cookie的value值
我们称name和value是cookie的bean属性
例如:
获取jsession的值
{pageContext.request.contextPath}

///////////////////////////////////////////////////////////////////////////////jsp注释:
html注释
注释的内容只在页面上看不到 , java代码和html源代都有
java注释
只在java代码中存在
jsp注释<%-- --%>
只在jsp页面中存在,翻译成java文件之后就没有
///////////////////////////////////////////////////////////////////////////////
jstl: jsp标准的标签库语言
apache的
用来替代java脚本
使用步骤:
1.导入jar包(jstl.jar和standard.jar)
2.在页面上导入标签库
<% @taglib prefix="" uri="" >

jstl的分类:
core:核心类库★
fmt:格式化 | 国际化
xml:过时了
sql:过时了
函数库:很少使用
core:掌握
★c:if
★c:if判断
<c:if test="{3<=4}"> 3不大于4 </c:if>
★c:forEach
<c:forEach var="每个变量名字" items="要迭代的list" varStatus="每个对象的状态" begin="循环从哪儿开始" end="循环到哪儿结束" step="循环的步长"> //步长就是循环加多少 //循环要输出的东西 ${每个变量名字} varStatus:用来记录循环的状态 常用的属性: count:记录次数 current:当前遍历的内容 </c:forEach>
c:set
c:choose c:when c:otherwise 分支
<c:set var="day"value="3"/>
<!--相当于pageContext.setAttribute("day",3)-->
<c:choose> <c:when test="{day==2}"> 周2 </c:when>
<c:when test="${day==3}"> 周3 </c:when>
<c:otherwise> 其他 </c:otherwise>
<c:choose>
网友评论