JSP / JSP 基本指令 /EL表达式/ JSTL标签库 基础

一. Jsp 基础

  1. Jsp定义 :Java Server Pages 特殊的页面,既可以定义html标签,也可以定义Java代码,用于简化书写,实现页面的动态效果
  2. 原理:Jsp本质上就是一个Servlet
  3. Jsp脚本:Jsp定义Java代码的方式
  • <% Java代码 %>:定义的Java代码,在service()方法中
  • <%! 代码 %>:定义的Java代码,在转换的Java类成员位置上,比较少用,容易产生线程安全问题
  • <%= 代码 %>:定义的Java代码,会输出到页面上
  1. Jsp的内置对象:不需要创建就可以直接使用(service()中可以使用的对象)
  • Request :request.getContextPath() 获取虚拟目录
  • Response
  • Out :out.print () 输出流(类似response.getWriter().write.

二. JSP指令

  1. 作用:配置JSP页面,导入资源文件
  2. 格式 <%@ 指令名称 属性名1=属性值1 … %>
  3. 分类
  • page : 配置Jsp页面
  • taglib :导入资源(JSTL标签库)
  • include :页面包含,导入页面的资源文件
  1. page指令
  • contentType :相当于response.setContentType() , 设置响应体的MIME类型和字符集
  • errorPage: 页面发生异常后跳转到指定的页面

三. JSP内置对象

  1. pageContext : 当前页面共享数据,获取其他内置对象
  2. request :一次请求间共享数据(转发)
  3. session :一次会话间共享数据
  4. application (ServletContext):所有用户共享数据
  5. response :响应对象
  6. page :当前页面对象 (this)
  7. out :输出对象,数据输出到页面上
  8. config :Servlet的配置对象
  9. exception :异常对象

四. MVC开发模式

  1. Model : 模型 ,完成具体的业务操作,如查询数据库(JavaBean)
  2. View : 视图 (JSP),展示数据
  3. Controller :控制器,获取用户输入,调用模型,将数据交给视图展示(Servlet)
    在这里插入图片描述

五. EL 表达式

  1. 作用 :替换和简化jsp页面中Java代码的编写(Expression language)
  2. 语法:${ 表达式 }
  3. 忽略表达式的方法:
    • isELIgnored="true"
    • ${ 表达式 }
  4. EL从域对象中获取值 ${ 域名称. 键名 }
-  pageScope       ---> pageContext
- requestScope    ----->request
- sessionScope   ------> session
- applicationScope   ---->  application(ServletContext) 
  1. 从域对象中获取值 ${ 键名 }
  2. JSP页面中的隐式对象,pageContext,动态获取虚拟目录
  • ${pageContext.request.contextPath}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL表达式获取list集合中的元素</title>
</head>
<body>

<%
    User usr=new User("安宰贤",43,new Date());

    List list=new ArrayList();
    list.add("新西游记");
    list.add("李寿根");
    list.add("殷志源");
    list.add(usr);
    request.setAttribute("list", list);

    Map map=new HashMap();
    map.put("name", "李四");
    map.put("gender", "男");
    request.setAttribute("map", map);
%>

${list[0]}<br>
${list[1]}<br>
${list[2]}<br>
${list[3].name}<br>
${map.gender}
${map.name}
${pageContext.request.contextPath} // 动态获取虚拟目录
</body>
</html>

六. JSTL 标签

  1. JSTL: Java标准标签库
  2. 作用:替换和简化jsp页面中Java代码的编写
  3. 使用步骤
  • 添加jar包,引入标签库(taglib指令) <%@ taglib %>
  1. 常用的JSTL标签
  • if
  • choose :相当于java 的switch标签
  • foreach
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--导入标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>JSTL的if标签</title>
</head>
<body>
<%--首先在域中添加一些数据--%>
<%
    List list = new ArrayList();
    list.add("新西游记");
    request.setAttribute("list", list);
    request.setAttribute("num", 3);
%>

<%--test必须属性,接收布尔类型,如果为true,显示标签体的内容,不为真,不显示--%>
<c:if test="${not empty list}">
    ${list[0]}  <%-- 新西游记--%>
</c:if>

<c:if test="${num%2!=0}">
${num}是奇数  <%-- 3是奇数--%>
</c:if>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSTL的choose标签</title>
</head>
<body>
<%--用choose标签完成星期的选择--%>
<%
    request.setAttribute("num", 5);
%>

<c:choose>
    <c:when test="${num==1}">周一好好学习</c:when>
    <c:when test="${num==2}">周二好好学习</c:when>
    <c:when test="${num==3}">周三好好学习</c:when>
    <c:when test="${num==4}">周四好好学习</c:when>
    <c:when test="${num==5}">周五看新西游记</c:when>
    <c:when test="${num==6}">周六好好学习</c:when>
    <c:when test="${num==7}">周日去爬香山</c:when>
    <c:otherwise>GO DIE 吧</c:otherwise>
</c:choose>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>JSTL的foreach遍历</title>
</head>
<body>
<%--begin 开始值,step 步长  ,var 临时变量--%>
<c:forEach begin="1" end="10" var="i" step="2">
    ${i}<br>
</c:forEach>

<%
    List list = new ArrayList();
    Collections.addAll(list, "新西游记", "李寿根", "殷志源", "安宰贤", "宋旻浩");
    request.setAttribute("list", list);
%>

<%--
  varStatus :循环状态对象
  items: 容器对象
--%>
<c:forEach items="${list}" var="str" varStatus="s">
    ${s.index} ${s.count} ${str}<br>
</c:forEach>
</body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>JSTL小练习</title>
</head>
<body>
<%--遍历存有user对象的list集合 ,并展示在表格中--%>
<%
    List<User> list=new ArrayList<>();
    User u1=new User("殷志源",43,new Date());
    User u2=new User("宋旻浩",27,new Date());
    User u3=new User("安宰贤",30,new Date());

    Collections.addAll(list, u1,u2,u3);
    request.setAttribute("list", list);
%>

<table border="1" width="500" align="center">
    <tr>
        <td>编号</td>
        <td>姓名</td>
        <td>年龄</td>
        <td>生日</td>
    </tr>
    <c:forEach items="${list}" var="user" varStatus="s">
        <c:if test="${s.count%2==0}">
        <tr bgcolor="#5f9ea0">
            <td>${s.count}</td>
            <td>${user.name}</td>
            <td>${user.age}</td>
            <td>${user.birstr}</td>
        </tr>
        </c:if>

        <c:if test="${s.count%2==1}">
            <tr bgcolor="#ff7f50">
                <td>${s.count}</td>
                <td>${user.name}</td>
                <td>${user.age}</td>
                <td>${user.birstr}</td>
            </tr>
        </c:if>
    </c:forEach>
</table>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值