EL&JSTL

EL&JSTL

1.jsp基础学习

jsp原理

jsp的本质是一个Servlet,当我们访问jsp文件时,服务器会将jsp文件翻译成java文件,进一步编译成class文件加载执行;访问一个Jsp页面,就相当于访问一个Serlvet

特点: 可以写html 还可以写 java代码

jsp脚本

<% if … for … %> :业务逻辑脚本,这里面写java业务代码,翻译之后再service方法中

<%= 变量%> :输出脚本,将变量的值输出到页面上

<%! 变量%> : 在成员位置上 定义一个变量

2.jsp-内置对象

在jsp页面中不需要创建,直接使用的对象
	* 一共有9个:记住4个域对象+response
			变量名					真实类型						作用
		* pageContext				PageContext					当前页面共享数据,还可以获取其他八个内置对象
		* request					HttpServletRequest			一次请求访问的多个资源(转发)
		* session					HttpSession					一次会话的多个请求间
		* application				ServletContext				所有用户间共享数据
		* response					HttpServletResponse			响应对象
	
		* page						Object					当前页面(Servlet)的对象  this
		* out						JspWriter				输出对象,数据输出到页面上
		* config					ServletConfig			Servlet的配置对象
		* exception					Throwable				异常对象

注意:可以通过pageContext获取另外8个内置对象

3.jsp-MVC开发模式

MVC开发模式:将程序代码按照功能进行分层处理;

M(model层):模型层,一般是操作数据库的业务,一般是普通的java类

V(View层):视图层,一般只是展示数据,一般是jsp或者html页面

C(Controller层):控制层,获取页面请求,调用模型层方法获取数据,最后响应给视图层显示,一般是Servlet。

4.EL获取域中的值

注意:EL表达式只能获取域对象中的值;
1. ${域名称.键名}:从指定域中获取指定键的值
	域名称:
		1. pageScope	--> pageContext
		2. requestScope 	--> request
		3. sessionScope 	--> session
		4. applicationScope --> application(ServletContext)
				 举例:在request域中存储了name=张三
				 获取:${requestScope.name}
2.${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止

动态获取虚拟路径:${pageContext.request.contextPath}:动态获取虚拟目录

5.JSTL使用思路

步骤:
    1. 导入jstl相关jar包
	2. 引入标签库:taglib指令:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
	3. 使用标签

c:if的使用

c:if标签
    1. 属性:
        test 必须属性,接受boolean表达式
            如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
             一般情况下,test属性值会结合el表达式一起使用

    2. 注意:c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签

代码演示:

<%request.setAttribute("number",4);%>
<c:if test="${number % 2 != 0}">
	${number}为奇数
 </c:if>
 <c:if test="${number % 2 == 0}">
 	${number}为偶数
 </c:if>

c:choose的使用:相当于增强版的c:if

<%request.setAttribute("number",11);%>
<c:choose>
    <c:when test="${number >=1 && number<=3}">第一季度</c:when>
    <c:when test="${number >=4 && number<=6}">第二季度</c:when>
    <c:when test="${number >=7 && number<=9}">第三季度</c:when>
    <c:when test="${number >=10 && number<=12}">第四季度</c:when>
    <c:otherwise>数字输入有误</c:otherwise>
<c:choose>

重点2:c:foreach的使用

属性介绍:
    1、items:容器对象
    2、var:容器中元素的临时变量
    3、varStatus:循环状态对象
    	index:容器中元素的索引,从0开始
    	count:循环次数,从1开始

代码演示:

<%
    List list = new ArrayList();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
	request.setAttribute("list",list);
 %>

<c:forEach items="${list}" var="str" varStatus="s">
    ${s.index} ${s.count} ${str}<br>
</c:forEach>

6.三层架构

1547390954948

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值