JSP入门学习

JSP入门

JSP简介

JSP全名:Java Server Pages,是一种动态网页开发技术,能够通过JSP标签在html代码里面插入Java代码。

JSP语法

  1. <% 代码片段 %>,使用这个标签就可以在里面写java代码了
  2. JSP的声明:<%! 声明%>,在JSP声明标签里可以创建类和全局变量
  3. JSP表达式:<%=表达式%>,表达式包括任何符合Java语言规范的表达式,比如<%=1+1%>,输出到页面就是2
  4. JSP的注释:<%-- 注释–%>
  5. JSP的指令:<%@ directive attribute=“value” %>,指令有三种:page,include,taglib。page定义页面的依赖属性,page代表当前的JSP,最常见的就是<%@page contentType=“text/html;charset=UTF-8” language = “java” pageEncoding = “utf-8”%>。include表示可以包含其他文件,<%@ include file=“文件相对 url 地址” %>,taglib表示标签库,可以引入标签库的定义,<%@ taglib uri=“uri” prefix=“prefixOfTag” %>

JSP的9大内置对象

9大内置对象分别为:request,response,page,pageContext,Exception,session,out,application,config,其中有四个可以设置共享域,分别是:page,request,session,application对应的scope(生命周期)依次增大

EL表达式

全称是:Expression Language表达式语言,为了简化jsp中java代码的开发,代替脚本表达式,格式:${EL表达式} 等价于pageContext.findAttribute(name),可以简写作用域取值,简化获取属性值,获取一个对象的属性值,直接通过name.属性名就能取到值。如果四个作用域重名,可以用指定作用域来取值: xxxScope.name,比如requestScope,sessionScope,applicationScope

// 例如我有一个User类,里面有username和password属性
User user = new User("zhangsan","123");
//设置共享域
request.setAttribute("users",user);
//使用EL表达式拿值
${users.username} //此时页面打印的就是zhangsan
${users.password} //此时页面打印的就是123

使用EL表达式在集合中取值

在List里面取值

<%
	// 创建一个List
	List<String> list = new ArrayList<String>();
	//在集合中添加值
	list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
    list.add("e");
	//设置作用域,这步不能忘记!
    request.setAttribute("list",list);
%>
使用jsp表达式取值
<%=list.get(0)%> -->a
<%--使用EL表达式取值--%>
两种方法
${list[0]} -->a
${list.get(0)} -->a

在Map里面取值

<%
	// 创建一个map
    Map<String,String> map = new HashMap<String,String>();
    map.put("CN","中国");
    map.put("JP","日本");
    map.put("US","美国");
    map.put("UK","英国");
    request.setAttribute("maps",map);
%>
三种方法取值
${maps.CN}
${maps.get("CN")}
${maps["CN"]}

使用EL表达式执行运算

EL表达式可以直接进行运算
算数运算:
${1+1}
${1-1}
${1*1}
${1/1}
${1%1}
关系运算,返回值为boolean值
${1==1} 简写:${1 eq 1}
${1>1}	简写:${1 gt 1}
${1<1}	简写:${1 lt 1}
${1!=1}	简写:${1 ne 1}
三元运算,三元运算符可嵌套
${score>60?"及格":"不及格"}
${flag==0?"没有激活":flag==1?"激活":"删除"}
逻辑运算
${true && false} 与之对应 ${true and false}
${true || false} 与之对应 ${true or false}
${!true}		 与之对应 ${not true}
EL表达式里特有的empty,用来判断是否为空,无论是空值还是空引用,使用empty判断都为空

EL的11个隐式对象

1.pageContext:页面上下文,可以获取jsp中其他8个内置对象
2.pageScope page作用域对象
3.requestScope request作用域对象
4.sessionScope session作用域对象
5.applicationScope application作用域对象
6.param 表示request.getParameter(“name”)
7.paramvalues 表示request.getParameterValues(“name”)
8.header 表示request.getHeader(“accept”)
9.headerValues 表示request.getHeaderValues(“accept-encoding”)
10.cookie 表示request.getCookies()
11.initParam 表示ServletContext初始化参数

JSTL

JSTL:全称Java Server Pages Standard Tag Library,JSP标准标签库,代替jsp页面的脚本,实现逻辑控制。
使用之前必须在JSP页面添加taglib指令库,其中prefix表示标签前缀,一般用c

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

JSTL的常用标签

通用标签:set,out,remove

格式:<前缀:标签 操作/>
set 指令有var,value,property,scope,target
var用来声明变量,value用来给声明的变量赋值
property表示属性,scope表示作用域,target表示目标
这里默认的作用域是pageContext
<c:set var="a" value="a"/>
${a}
out表示输出,value值为多少就在在页面输出什么
<c:out value="a" />
remove表示移除变量
移除指定变量
<c:remove var="a"></c:remove>
给没有的变量赋默认值
<c:out value="${a}" default="默认值"></c:out>

条件标签:if,选择标签:choose配合when和otherwise使用,都需要配合test使用

test 里面写条件,通过EL表达式写条件
<c:if test="${条件}"></c:if>
选择标签
<c:set var="score" value="90"></c:set>
<c:choose>
    <c:when test="${score>=90}">优秀</c:when>
    <c:when test="${score>=80}">良好</c:when>
    <c:when test="${score>=60}">及格</c:when>
    <c:otherwise>不及格</c:otherwise>
</c:choose>

循环标签:forEach

普通循环:
表示临时变量为i,从1开始到100结束,步长为1
<c:forEach var="i" begin="1" end="100" step="1">
    ${i}
</c:forEach>
遍历集合
<%
    List<String> list = new ArrayList<String>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
    pageContext.setAttribute("list",list);
%>
通过items来取集合,var声明了一个临时变量用来接收值
<c:forEach items="list" var="list">
    ${list}<br>
</c:forEach>

url标签

通过var声明一个变量,value给资源路径,然后通过EL表达式就能用了
<c:url var="loc" value="index.jsp"></c:url>
<a href="${loc}"></a>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值