JavaWeb-day03-JSP


JSP

什么是JSP

SP全称是Java Server Pages,是一种用来代替Servlet的技术,其本质是一个Servlet。JSP允许同时编写Java代码和Html代码,使用JSP即可以显示界面,又可以动态获取Java中数据。

JSP可以写html+el表达式+JSP脚本

JSP原理

JSP在运行会先编译成.java文件,再编译成class文件,最后再运行。jsp中的静态代码会被编译成out.write()的方式输出出来

JSP可以写什么

  1. JSP指令

    1. page指令:设置JSP页面编码、导包

      1. 导包
      <%@ page import="java.util.List" %>
      2. 设置页面编码
      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      
    2. include指令:导入其他类,静态包含

      //在当前页面引入head.jsp
      <%@ include file="head.jsp"%>
      
    3. taglib指令:导入第三方的依赖库

      //导入a依赖库,命名为c
      <%@ taglib prefix="c" uri="a" %>
      
  2. JSP脚本

    1. <% java代码%>
    2. <%= Java代码 %> 输出结果到网页
    3. <%! 声明变量/方法 %>
  3. JSP注释

    1. html注释<!-- -->:只能注释html代码片段
    2. jsp注释<%-- --%>:可以注释所有
  4. JSP动作

    1. 转发<jsp:forward>:访问网页a会跳转到网页b
    	<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    	<html>
    	<head>
    	    <title>Title</title>
    	</head>
    	<body>
    	    a.jsp
    	
    	    <%--访问此页面就会跳转到b.jsp--%>
    	    <jsp:forward page="b.jsp"></jsp:forward>
    	</body>
    	</html>
    
    1. 动态包含<jsp:include>:将其它网页内容加载到当前网页,类似站点地图(动态包含和静态包含的区别)
  5. HTML

el表达式

全称是expression language,表达式语言

el表达式的作用

如果JSP来写,Java和HTML代码糅杂在一起,十分紊乱,因此选择使用el表达式来简化Jsp中的Java代码,让界面代码与Java代码分离

el表达式的语法

${表达式}

el表达式可以取的值

  • Java代码中声明的变量/常量
  • 4大作用域中的数据
    • page:作用在JSP页面中
    • request:作用在请求
    • session:作用在会话
    • application:使用在整个应用

Jsp9大内置对象(9大隐式对象)

  1. request:请求
  2. response:响应
  3. session:会话对象,Servlet中通过req.getSession()就是该对象
  4. application:全局上下文对象,Servlet中通过request.getServletContext()
  5. out:等同于pageContext.getOut()
  6. config:配置对象,ServletConfig
  7. page:代表当前Jsp本身,等同于Servlet中的this。
  8. pageContext:page上下文对象(page作用域对象)
  9. exception:异常对象,存放了JSP中发生的异常信息

JSTL

因为el表达式只能获取值,无法做判断 ,因此Apache组织又出了一个更加完善的,名叫JSTL
全名 Java Server Pages Tag Library JSP标准标签库。

JSTL的作用

作用是简化Jsp中的Java代码,让界面代码与Java代码分离,弥补el表达式的不足。可以看作是el表达式的补充版,进阶版

JSTL的使用

1.导包
下载地址
2.在JSP指令中声明要引用的标签库
3.使用JSTL提供的标签

  • if
  • forEach
    • items:表示要循环的集合
    • var:表示每次循环出来的对象的变量名
      具体案例:
      在页面上输出所有用户
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--导入JSTL的核心标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table border="1">
    <tr>
        <th>id</th>
        <th>用户名</th>
        <th>密码</th>
    </tr>
    <c:forEach items="${list}" var="user">
        <tr>
            <td>${user.id}</td>
            <td>${user.name}</td>
            <td>${user.pwd}</td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

list为传进作用域中的数据,user则是list中的每个变量的名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值