JavaWeb(jsp el表达式 jstl标签)

JSP

java服务页面
jsp的出现是为了简化页面的书写
在jsp上面既可以写HTML CSS JS 也可以写java代码
jsp本质上是一个Servlet

原理: 当你请求一个jsp页面时,服务器会去查找该jsp页面是否存在,如果找到,tomcat的js转换引擎,就会把.jsp转换成.java文件,在编译成.class字节码文件,调用service()方法对外提供服务

index.jsp--服务器JS转换引擎--index_jsp_.java--index_jsp.class
index_jsp.java--继承--HttpServlet

早期JSP脚本

早期jsp页面书写java代码的语法
	标记语言注释:<!--  -->
        缺点:
            1.会发送到客户端
            2.不能注释Java代码
	jsp注释:<%-- --%>
        优点;
            1.不会发送到客户端
            2.能注释Java代码
	
	<%! 
		定义成员变量
    	java代码
    	int num = 100;
    %>
    
    <%
    	定义在service()方法中的局部变量
        String name = "jack";
		System.out.println(num);
		System.out.println(name);
    %>
	
	<%=%>相当于out.write()
	在service()方法中
	将内容打印在页面上
	<%="ABC"%>
	<%=name%>

3大指令(page include taglib)

指令:配置JSP页面的属性或者导入一些额外的内容
格式:<%@ 指令名称 属性名="属性值" %>

●配置指令-配置JSP页面的属性
<%@page >
    language:指定jsp页面使用的语言。只有一个值java
    import:导入软件包
    pageEncoding:设置页面编码
    1.指定jsp文件的编码
    2.告诉浏览器页面使用的编码格式
    autoFlush:自动刷新
    buffer:缓冲区大小
    isErrorPage:是否是错误页面
    true:是错误页面,可以使用内置对象exception
    false:不是
    errorPage:指定错误页面,当页面发生异常时,指定跳转的页面
    一般在开发完成后,会在web.xml中通过<error-page>标签来配置整个项目的错误页面
    <error-page>
    <error-code>500</error-code>
    <location>/500.jsp</location>
    </error-page>

●静态包含布局指令
    复用性 这个页面不会生成一个java类
    <%@include file="top.jsp" %>

●导入第三方的标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

6个动作标签

JavaBean:一种符合特定规范的Java类
    1.私有所有成员变量
    2.提供公共的访问方式	setter或getter
    3.提供空参构造
			

使用一个ID和一个给定作用范围和同一ID的JavaBean相关联
<jsp:useBean>  Person p = new Person()

设置JavaBean的属性值
<jsp:setProperty> 	p.setName("zhangsan")

取得JavaBean的属性值
<jsp:getProperty> 	String name = p.getName()      
    
    <jsp:useBean id="对象名" class="路径">
        <jsp:setProperty name="对象名" property="name" value="jack"/>
        <jsp:setProperty name="对象名" property="age" value="18"/>
        <jsp:getProperty name="对象名" property="name"/>
        <jsp:getProperty name="对象名" property="age"/>
    </jsp:useBean>

内部转发
<jsp:forward page="/welcome"/>

动态包含 页面布局
这个页面单独生成一个java类
<jsp:include page="top.jsp"/>

传递参数
<jsp:param name="msg" value="asd"/>

9个内置对象

内置对象:
	在jsp转换后的.java文件的service方法中声明好的对象
	在jsp中可以直接使用

页面域
pageContext.getXXX 获取获取其他八个内置对象		

application.setAttritbute() 全局域对象
session 会话域对象 
request 请求域对象
pageContext 页面域对象 范围这个jsp页面	
config 配置对象
out 输出对象,在使用对象向页面输出信息时,采用out
this 当前的jsp对象
response 响应对象
exception 异常对象 把页面指定为异常页面

el表达式

jsp的内置表达式语言,从jsp2.0开始.
	用来替代<%=..%>
	作用:
		1.获取域中数据
		2.执行运算
		3.获取常见的web对象
		4.调用java的方法
	格式:
		${el表达式}

四则运算
    加法运算 +
        只能进行加法运算,字符串形式数字可以进行加法运算
    判断是否为空、0  empty
        判断一个容器的长度是否为0(array set list map)
        还可以判断一个对象是否为空
        ${empty 域中的对象名称}
    取反 not
        ${not empty 域中对象名称}

    el表达式支持调用方法,这个方法要有返回值
    el表达式支持运算符,也支持三元表达式
    三元表达式 取不到就是空串
    	${list.size()>3 ? "大于" : "不大于"}

内置对象

${applicationScope.XXX} 全局域对象
sessionScope 会话域对象 
requestScope 请求域对象
pageScope 页面域对象 范围这个jsp页面
param  获取请求参数
    发送http://localhost:8080/ELDemo/demo.jsp?username=zhangsan这个请求,有请求参数,就可以在页面中获取
    ${param.username} 获取请求参数username的值
${cookie.key.value} cookie获取

获取数据

获取简单数据
    <%
        request.setAttribute("rkey", "rvalue");
    %>
    老方式: <%=request.getAttribute("rkey") %>
    el方式: ${requestScope.rkey}
    取不到就是null
    <%=request.getAttritbute("msg")%>
	便捷获取: ${rkey} 取不到就会空串展示
	
获取复杂数据
	<%
		//往request域中放入数组
		request.setAttribute("arr", new String[]{"aa","bb"});
		
		//往request域中放入list
		List list=new ArrayList();
		list.add("aaa");
		request.setAttribute("list", list);
		
		//往request域中放入map
		Map m=new HashMap();
		m.put("username","tom");
		m.put("age",18);
		request.setAttribute("map", m);
	%>
    获取数组中的数据
    	${域中的名称[index]}
        老方式:<%=((String[])request.getAttribute("arr"))[1]%>
        el方式:${arr[1]}
    获取list中的数据
    	${域中的名称[index]}
		老方式:<%=((List)request.getAttribute("list")).get(1)%>
		el方式:${list[1]}
    获取map中的数据
    	${域中的名称.键名}
		老方式:<%=((Map)request.getAttribute("map")).get("age")%>
		el方式:${map.age}
	判断容器是否为null、0
        ${list.size()==0}
        ${empty list}
    取反
    	${not empty list}

获取对象中字段的值
<%
	User u=new User();
	u.setId("001");
	u.setName("tom");
	//将u放入域中
	request.setAttribute("user", u);
%>
	获取域中javabean的id值:
        老方式:<%=((User)request.getAttribute("user")).getId()%>
        el方式:${user.id }

jstl标签

概述:
	jsp标准的标签库语言 apache的 用来替代java脚本
	
使用步骤:
    1.导入jar包(jstl.jar和standard.jar) 
        放在WEB-INF/lib下
    2.在页面上导入标签库
        <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

使用格式:
	<c: >

        
jstl的分类:
	core:核心类库 
        ★c:if
		★c:forEach
	fmt:格式化|国际化
	xml:过时了
	sql:过时了
	函数库:很少使用
	        
jstl标签配合 el表达式来使用就可以写逻辑(判断 循环)
    判断
    条件一般写在el表达式中 ${条件}
    <c:if test="条件">
        <h1>你能看到吗?</h1>
    </c:if>
    <c:if test="${not empty name }">
		${name}欢迎你!
	</c:if>
    
    循环
    普通循环
    begin开始索引 end终止索引 var给变量起名 step步长
    <c:foreach begin="0" end="7" var="i" step="1">
    	${arr[i]}
    </c:foreach>
    
    新式循环
    varStatus可选参数 遍历状态
    v.count 元素编号 从1开始
    v.index 元素索引 从0开始
    v.current 当前遍历的元素
    v.first 是不是第一个元素 返回值Boolean
    v.last 是不是最后一个元素 返回值Boolean
    
    <c:foreach items="${arr}" var="ele" varStatus="v">	
    	${ele}--${v.count}
    </c:foreach>
    
    <c:foreach items="${map}" var="kvObj" varStatus="v">	
    	${kvObj.key}--${kvObj.value.name}
    </c:foreach>
    
自动补项目路径    
<c:url value="/demo1" />
    
往域中存数据  
保存数据(保存到域中)默认保存到page域        
<c:set var="name" value="rose" scope="request" />    
    
取域中数据   
default:当value值为null时,使用默认值
escapeXml:是否对value值进行转义,false,不转义,true,转义(默认)
<c:out value="${name}" default="<h3>标题</h3>" escapeXml="false" />

多条件判断
	choose标签+when标签+otherwirse标签 
<c:set var="score" value="56"></c:set>
<c:choose>
    <c:when test="${score>=90 && score<=100}">
    	优秀
    </c:when>
    <c:when test="${score>=80 && score<90}">
    	良好
    </c:when>
    <c:when test="${score>=70 && score<80}">
    	一般
    </c:when>
    <c:when test="${score>=60 && score<70}">
    	及格
    </c:when>
    <c:otherwise>
    	不及格
    </c:otherwise>
</c:choose>  

循环特殊字符串
	forToken标签
	<%
    	String str = "java-php-net-平面";
    	pageContext.setAttribute("str",str);
    %>
    <c:forTokens items="${str}" delims="-" var="s">
    	${s }<br/>
    </c:forTokens>
    
重定向
	<c:redirect url="http://www.baidu.com" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值