前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVAWeb| 详解JSP技术、指令、隐式对象、标签

JAVAWeb| 详解JSP技术、指令、隐式对象、标签

作者头像
Python进击者
发布2019-06-21 15:13:23
5730
发布2019-06-21 15:13:23
举报
文章被收录于专栏:JAVAandPython君

点击上方

“JAVAandPython君”关注我们

1

简单介绍一下JSP

首先,我们来了解一下JSP这个东东,大家看它的缩写可能有点懵逼,告诉大家全称之后可能会更容易理解,JSP全称:Java Server Page ,直译过来便是爪洼服务页面,当然直译是不行滴。万物之生,必有其因,JSP是为了简化servlet的工作而出现的替代品。

在JSP中Java代码和HTML是可以共存的,HTML代码就用来展示静态的内容,JAVA代码就用来展示动态的内容。

JSP的简介也就这么些内容,我们的jsp代码,都是写在后缀名为.jsp的文件当中,大家可以尝试用ide创建一个web项目,里面会有一个index.jsp,大家可以看看里面的内容。

2

JSP是怎么运作的?

jsp在第一次被访问的时候会被Web容器翻译成servlet,所以jsp本质上就是一个Servlet。

给大家画了一张过程图:

被编译后的servlet在Tomcat的work目录中可以找到,使用IDE会单独为项目维护一个目录。

其实当jsp转化为java文件之后,它间接的继承了HttpServlet,实现了其中的一些主要方法,例如init、service、destory,并且将html代码通过java方式输出给浏览器。具体看下面↓

JSP脚本:

  1. <%java代码%> ------内部的java代码翻译到service方法的内部
  2. <%=java变量或表达式> ---会被翻译成service方法内部out.print()
  3. <%! java代码 > ---会被翻译成servlet的成员的内容

JSP注释:

代码语言:javascript
复制
<%-- 注释内容 --%>

3

JSP指令

在JSP中有三大指令: page指令、include指令、taglib指令

咱们一个一个来吧

首先---page指令,page指令是属性最多的一个指令,根据不同的属性,指导整个页面的特性。

代码语言:javascript
复制
<%@ page 属性名1=“value1” 属性名2=“value2” %>

一些常用的属性:

language:jsp脚本中可以嵌入的语言种类

contentType

response.setContentType(text/html;charset=UTF-8)

session:是否jsp在翻译时自动创建session

import:导入java的包

errorPage:当前页面出错后跳转到哪个页面

再来看看include指令

从单词意思可以看出这个指令是啥意思了,包含,对,他实际意思就是页面包含指令,可以将一个jsp页面包含到另一个jsp页面中

代码语言:javascript
复制
<%@ include file = "被包含页面的文件地址" %>

最后看一下taglib指令

它的用处主要是可以在jsp中引入一些标签库,例如jstl标签库、Struts2标签库。

代码语言:javascript
复制
<%@ taglib uri="标签库地址"  prefix="前缀" %>

4

JSP隐式对象

当JSP被翻译成servlet的时候,service方法的内部有九个对象定义并且初始化,这九个对象就是我们所说的隐式对象。

第一类:与输入输出有关的

  • request请求对象,得到用户请求信息,并且共享信息
  • response响应对象,服务器向客户端回应信息
  • out输出对象,用于 页面的输出

第二类:与作用域范围有关的

  • pageContext页面作用域,上下文对象
  • request请求作用域
  • session会话作用域,保存会话共享信息
  • application应用作用域,所有用户的共享信息

第三类:与配置有关的

  • config配置对象,服务器配置,可以取得初始化参数
  • page页面本身的对象,当前页面转换后的servlet类的实例

第四类:与异常有关的

  • exception异常对象,在错误页面才会起作用
代码语言:javascript
复制
<%@  page  contentType="text/html;charset=UTF-8"  language="java"  buffer="0kb"  %>
        
111111 
<%  response.getWriter().write("22222");        
    out.write("33333"); %> 
<%="4444444"%>

在这里着重讲解一下pageContext这个对象,上面也讲过,它表示的是jsp页面中的上下文对象,也就说它是个域对象,我们可以在它里面存储并获取值:

代码语言:javascript
复制
setAttribute(String name, Object obj)


getAttribute(String name, int scope)

当然这只是一部分,但是是非常常用的两种方法

除了上面的作业,他还能获取其他8大隐式对象

代码语言:javascript
复制
pageContext.getRequest();


pageContext.getSession();

5

JSP标签

JSP标签能够用来控制JSP的行为,执行一些JSP的页面动作,通过这些标签也可以实现很多行java代码才能够实现的功能,比如说请求转发等。

这里给大家举几个标签的例子:

页面包含(动态包含)

代码语言:javascript
复制
<jsp:include page="被包含的页面"/>

页面包含(静态包含)

代码语言:javascript
复制
<%@ include file="被包含的页面"%>

请求转发

代码语言:javascript
复制
<jsp:forward page="要转发的资源"/>
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档