动态⻚⾯技术(JSP/EL/JSTL)

本文详细介绍了JSP技术,包括概念、脚本和注释、指令,特别是JSP的内置对象。此外,还讲解了EL语言及其在简化Java代码中的作用,如EL表达式的使用和11个隐式对象。最后提到了JSP的动态包含与静态包含的区别。
摘要由CSDN通过智能技术生成

1 JSP技术

1.1 概念

Java Server Pages: java 服务器端⻚⾯
● 可以理解为:⼀个特殊的⻚⾯,其中既可以指定定义 html 标签,⼜可以定义 java 代码

● ⽤于简化书写!!!
原理:JSP本质上就是⼀个Servlet

● JSP在第⼀次被访问时会被Web容器翻译成servlet,再执⾏,过程:
第⼀次访问 → helloServlet.jsp → helloServlet_jsp.java → 编译运⾏
PS:被翻译后的servlet在 Tomcat 的 work ⽬录中可以找到。

1.2 JSP脚本和注释

脚本:

  1. <%java代码%>
  2. <%=表达式%>
  3. <%!类的成员 %>

注释:

  1. //java注释(java脚本中) jsp中可见, java中可见
  2. < !–html注释–> jsp中可见, java中可见, html可见
  3. <%-- jsp注释 --%> jsp中可见

1.3 JSP指令

JSP的指令是指导JSP翻译和运⾏的命令,⽤于配置JSP⻚⾯,导⼊资源⽂件
格式:<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %>
分类:

  1. page:配置JSP⻚⾯,根据不同的属性,指导整个⻚⾯特性。
    ○ contentType:等同于response.setContentType()
    1.设置响应体的mime类型以及字符集
    2.设置当前jsp⻚⾯的编码(只能是⾼级的IDE才能⽣效,如果使⽤低级⼯具,则需要
    设置pageEncoding属性设置当前⻚⾯的字符集)
    ○ pageEncoding:当前JSP⽂件的本身编码,内部可以包含contentType
    ○ import:导⼊java的包
    ○ session:是否JSP在翻译时⾃动创建session
    ○ errorPage:当前⻚⾯发⽣异常后,会⾃动跳转到指定的错误⻚⾯
    ○ isErrorPage:标识当前也是是否是错误⻚⾯。
    ● true:是,可以使⽤内置对象exception
    false:否。默认值。不可以使⽤内置对象exception
  2. include: ⻚⾯包含的。导⼊⻚⾯的资源⽂件
    ⻚⾯包含(静态包含)指令,可以将⼀个JSP⻚⾯包含到另⼀个JSP⻚⾯中
    格式:<%@ include file=“被包含的⽂件地址”%>
  3. taglib:导⼊资源
    在JSP⻚⾯中引⼊标签库【JSTL标签库、struts2标签库】
    格式:<%@ taglib uri=“标签库地址” prefix=“前缀”%>

☆1.4 JSP的内置对象

在jsp⻚⾯中不需要获取和创建,可以直接使⽤的对象。
JSP⼀共有9个内置对象:
在这里插入图片描述

  1. out对象
    out的类型:JspWriter
    out作⽤就是向客户端输出内容,⽅法:out.write()
    out缓冲区默认8kb【buffer=“8kb”】,可以设置成0,代表关闭out缓冲区,内容将直接写
    到respons缓冲区
    在这里插入图片描述

  2. pageContext对象
    JSP⻚⾯的上下⽂对象,作⽤如下:
    1.pageContext是⼀个域对象,范围:当前⻚⾯
    2.pageContext可以向指定的其他域中存取数据
    ● setAttribute(String name, Object obj, int scope)
    ● getAttribute(String name, int scope)
    ● removeAttrbute(String name, int scope)
    findAttribute(String name)
    依次从pageContext域,request域,session域,application域中获取属性,在
    某个域中获取后将不在向后寻找。
    四⼤作⽤域的总结:
    page域:当前JSP⻚⾯范围
    request域:⼀次请求
    session域:⼀次会话
    application域:整个web应⽤

  3. 可以获得其他8⼤隐式对象
    例如:pageContext.getRequest(),pageContext.getSession()等。
    在这里插入图片描述

1.5 JSP标签(动作)

  1. ⻚⾯包含(动态包含):<jsp:include page=“被包含的⻚⾯”/>
  2. 请求转发:<jsp:forward page=“要转发的资源” />
    思考:静态包含与动态包含的区别?

静态包含在翻译的时候,将多个JSP合并翻译成了一个Servlert。
动态包含在翻译的时候,每个JSP文件都翻译成了对应Servlet,在程 序运行加载到JVM中的时候动态合并 动态包含可以传递参数

2 EL 技术

EL: Expression Language - 简化java代码, get方法

语法 ${表达式}

el表达式中有11个隐式对象
● pageScope、requestScope、sessionScope、applicationScope
获取JSP中域中的数据

● param、paramValues
接收参数

等同于:request.getParameter()、request.getParameterValues()
● header、headerValues
获取请求头信息
等同于:request.getHeader(name)

● initParam
获取全局初始化参数
等同于:this.getServletContext().getInitParameter(name)

● cookie
WEB开发中cookie
等同于:request.getCookies()、cookie.getName()、cookie.getValue()

pageContext
可以获得其他⼋⼤对象
重点:${pageContext.request.contextPath}:动态获取虚拟⽬录

三级目录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值