JSP 笔记

本文详细介绍了JSP的概念、编译过程以及关键语法,包括脚本程序、声明、表达式和注释。讨论了JSP指令如page、include和taglib的使用,特别是jstl核心标签库在页面判断、循环和变量定义中的应用。此外,还对比了动态标签和指令包含的区别。
摘要由CSDN通过智能技术生成

JSP概念

JSP:Java Server Pages Java服务页面,其本质是一个简化的Servlet设计,运行在服务端的语言。
JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。


JSP编译

当浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件。
编译的过程包括三个步骤:

  • 解析JSP文件。
  • 将JSP文件转为servlet。
  • 编译servlet。

最终形成两个文件,名称分别是:原JSP文件名+_jsp.java和 原JSP文件名+_jsp.class


JSP 语法

脚本程序

语法:<% java代码 %>

<% int i = 2; %>

脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。

JSP声明

语法:<%! 声明内容 %>

<%! int a; %> 

一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,和Java语言类似,必须先声明这些变量和方法然后才能使用它们。

JSP表达式

语法:<%= 表达式 %>

<%= i %>   //输出i的值

一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。
由于表达式的值会被转化成String,所以可以在一个文本行中使用表达式而不用去管它是否是HTML标签。
表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。

JSP注释

语法:<%-- 该部分注释在网页中不会被显示–%>

<!--Html注释-->      //在编译成的java文件中可见,网页源码中能看到该注释
/*Java注释 */        //在编译成的java文件中可见,网页源码中不能看到该注释
<%--Jsp注释--%>      //在编译成的java文件中不可见,网页源码中不能看到该注释

JSP指令

JSP指令用来设置与整个JSP页面相关的属性。
JSP包含三个指令:page、include、taglib

指令描述
<%@ page … %>定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
<%@ include … %>包含其他文件
<%@ taglib … %>引入标签库的定义,可以是自定义标签

page描述页面

Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

常见属性

属性描述
contentType指定当前JSP页面的MIME类型和字符编码 告诉浏览器使用utf-8的形式解码
pageEncoding当前jsp页面的编码方式设置utf-8
language定义JSP页面所用的脚本语言,默认是Java
session指定JSP页面是否使用session 默认为true
errorPage指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage当前页面是否是一个错误页面,默认是false(是否可以使用exception内置对象)
import导入要使用的Java类

include页面包含(静态)

<%--静态包含--%>
<%@include file="header_include.jsp"%>
<h1>这是静态包含body</h1>
<%@include file="foot_include.jsp"%>

file:页面名称

效果:
在这里插入图片描述
当jsp页面中有静态包含时,所有jsp页面会转换成一个java文件,再编译成一个class文件

taglib(表达式引入)

jstl表达式
  • jstl:JavaServer Pages Standard Tag Library,jsp标椎标签库,是一个不断完善的开放源代码的jsp标签库,使用必须jar包,standard.jar 和 jstl.jar
  • jstl不能单独使用,需要结合EL表达式。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • prefix:前缀,指的是为当前的这个标签起一个别名,一般为c
  • uri:标签的路径,一般是http://java.sun.com/jsp/jstl/core
jstl核心标签库
  • 页面判断
<c:if text = "判断的条件" var = "a" >  <%--a是text里面的值--%>
执行的代码
</c:if>

  • 循环
<c:forEach items="${list }" var="pro" varStatus="status">
     <td>${status.count}</td>
     <td>${pro.pname }</td>
     <td>¥${pro.market_price }</td>
     <td>¥${pro.shop_price}</td>
     <td>${pro.pdate}</td>
     <td>${pro.pdesc}</td>
</c:forEach>
  • 循环固定次数,不需后天传值
<c:forEach begin="${page.begin }" end="${page.end }" step="1" var="i">
            <c:if test="${page.pageNumber!=i }">
                <li><a href="${pageContext.request.contextPath}/PageSelectServlet?pageNumber=${i}"  style="color: #000;">${i }</a></li>
            </c:if>
            <c:if test="${page.pageNumber==i }">
                <li><a style="color: coral">${i }</a></li>
            </c:if>
        </c:forEach>
  • 定义变量
<c:set var = "值"  value = "10"></c:set>
  • choose标签的使用
<c:choose>
	<c:when test="判断条件">执行代码</c:when>
	<c:when test="判断条件">执行代码</c:when>
	<c:when test="判断条件">执行代码</c:when>
	<c:otherwise>
		执行代码
    </c:otherwise>
</c:choose>

JSP动态标签

跳转

<jsp:forward page="具体页面"></jsp:forward>

页面包含(动态)

<jsp:include page="页面"></jsp:include>
动态包含和指令包含的区别
  • 动态包含:<jsp:include page=“页面”></jsp:include>;
    指令包含(静态):<%@include file=“header_include.jsp”%>
  • 指令包含在编译前就将两个页面整合在一起,同一编译,动态标签包含的两个页面都会编译,在一个页面的jsp_service的方法中调用第二个jsp_service方法
  • 如果被包含的标签中有动态信息,静态包含时获取不到的
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值