热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JSP的九大内置对象、指令和动作标签

JSP的九大内置对象、指令和动作标签JSP的九大内置对象1、request---(HttpServletRequest)2、response---(HttpServletRes

JSP的九大内置对象、指令和动作标签

  • JSP的九大内置对象
      • 1、request--->(HttpServletRequest)
      • 2、response--->(HttpServletResponse)
      • 3、session--->(HttpSession)
      • 4、application--->(ServletContext)
      • 5、config--->(ServeltConfig)
      • 6、pageCotext--->(PageContext)
      • 7、out--->(JspWrite)
      • 8、page--->(Object(this))
      • 9、exception--->(Throwable)
  • JSP的指令介绍
      • 1、page
      • 2、taglib
      • 3、include
  • JSP的动作标签
      • 1、
      • 2、
      • 3、
      • 4、
      • 5、
      • 6、
      • 7、
      • 8、
      • 9、
      • 10、
      • 11、


JSP的九大内置对象

1、request—>(HttpServletRequest)


  • request对象是javax.servlet.http.HttpServletRequest 类的实例。HttpServletRequest是ServletRequest接口的子接口。

  • request内置对象是使用最多的一个对象,每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。

  • 主要作用是接收客户端发送而来的请求信息,如请求的参数、发送的头信息等都属于客户端发来的信息。

  • request对象提供了一系列方法来获取HTTP头信息,COOKIEs,HTTP方法等等。

  • 客户端的请求信息被封装在request对象中,通过他才能了解到客户端需求,然后做出响应。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。

  • 当服务器端想得到客户端信息时就会使用request对象来完成。

  • 常用场景介绍:

    • 1、乱码解决(setCharacterEncoding)
    • 2、接收请求参数(getParameter() 或者一组 getParameterValues())
    • 3、显示全部的头信息(getHeader()或者getHeaderNames() )
    • 4、角色验证(isUserInRole()返回一个Boolean)

2、response—>(HttpServletResponse)


  • response对象属于javax.servlet.http.HttpServletResponse接口的实例。
    HttpServletResponse继承自SrevletResponse
  • 当服务器创建request对象时会同时创建用于响应这个客户端的response对象。
  • response对象的主要作用是对客户端的请求进行回应,将Web服务器处理后的结果发回给客户端。
  • 通过这个对象,开发者们可以添加新的COOKIEs,时间戳,HTTP状态码等等。
  • 常用场景介绍:
    • 1、设置响应头信息(setHeader页面的定时跳转)
    • 2、设置将发送到客户端的响应的内容类型:(setContentType)
    • 3、设置页面跳转(sendRedirect()重定向)
    • 4、添加COOKIE(addCOOKIE)

3、session—>(HttpSession)


  • 首先介绍什么是会话:从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个浏览器结束,称此为一个会话。

  • session表示客户端与服务器的一次会话,也就是用户浏览这个网站所花费的时间。

  • 服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。

  • session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

  • 当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象。

  • 实际上在开发中session对象最主要的用处就是完成用户的登录(login)、注销(logout)等常见功能,每一个session对象都表示不同的访问用户。

  • 常见的应用场景

    • 1、登录及注销(设置一个session范围的属性,然后在其他需要验证的界面中判断是否存在此session范围的属性)
    • 2、判断新用户(inNew())
    • 3、取得用户的操作时间(getCreationTimesession的创建时间或者getLastAccessedTimesession的最后一次操作时间。)

4、application—>(ServletContext)


  • 这个对象在JSP页面的整个生命周期中都代表着这个JSP页面。这个对象在JSP页面初始化时被创建,随着jspDestroy()方法的调用而被移除。
  • 通过向application中添加属性,则所有组成您web应用的JSP文件都能访问到这些属性。
  • 在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作。在任何地方对application对象属性的操作,都将影响到其他用户对此的访问。
  • application对象实现了用户间数据的共享,可存放全局变量
  • application对象开始于服务器的启动,结束予服务器的关闭。
  • 常见应用场景
    • 1、获得全局变量(getAttribute或者getInitParameterNames)
    • 2、配置虚拟目录

      以上表示的是在浏览器中使用“”/mldn“”访问 "D:\myweb"目录,这时如果希望在Web开发中取得docBase对应的真实路径,就需要使用application对象中的getRealPath()方法来完成。

5、config—>(ServeltConfig)


  • config 对象的主要作用是取得服务器的配置信息。
  • 通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。
  • 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
  • config是对象是javax.servlet.ServletConfig接口的实例化对象,主要功能是取得一些初始化的配置信息。
  • 常见应用场景:
    • 获取web.xml中的配置信息

    usernameTom

    password123456

    String pusername = config.getInitParameter("username");String pencoding = config.getInitParameter("encoding");


6、pageCotext—>(PageContext)


  • pageContext对象是javax.servlet.jsp.PageContext 类的实例,用来代表整个JSP页面。

  • pageContext对象提供了对JSP页面内所有的对象及名字空间的访问。

  • pageContext对象可以访问到本页所在的session,也可以取本页面所在的application的某一属性值。

  • pageContext对象的本类名也叫pageContext。pageContext对象是javax.servlet.jsp.PageContext类的实例,主要表示一个JSP页面的上下文。

  • 这个对象主要用来访问页面信息,同时过滤掉大部分实现细节。

  • 这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。

  • pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage URL,页面scope等。

  • 常见应用场景

    • 获得其它八大内置对象 getXxx()

    pageContext.getRequest();
    pageContext.getResponse();
    pageContext.getServletConfig();
    pageContext.getServletContext();
    pageContext.getSession();
    pageContext.getOut();
    pageContext.getPage();
    pageContext.getException();

    • 对作用域的属性进行操作(四大作用域)

//对默认作用域的属性进行操作。pagepageContext.getAttribute(name);  //获得page作用域数据pageContext.setAttribute(name,value);  //给page作用域设置内容pageContext.removeAttribute(name);  //给page作用域移除内容

  • 一次获得指定名称内容
    findAttribute(name);  //依次从page、request、session、application 获得内容

7、out—>(JspWrite)


  • out对象用于向客户端发送文本数据。

  • out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。

  • JSP页面中的out对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。

  • 只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:

    1、设置page指令的buffer属性关闭了out对象的缓存功能
    2、out对象的缓冲区已满
    3、整个JSP页面结束

  • out对象的工作原理
    out对象的工作原理


8、page—>(Object(this))


  • 这个对象就是页面实例的引用。它可以被看做是整个JSP页面的代表。

  • page 对象就是this对象的同义词。


9、exception—>(Throwable)


  • exception对象是一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设置为true,否则无法编译。
  • exception对象是java.lang.Throwable的对象。

JSP的指令介绍

1、page


  • 指令定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
  • 属性

属性描述
buffer指定缓存大小&#xff0c;当autoFlush设为true时有效&#xff0c;例如<%&#64; page buffer&#61;10kb%>
autoFlush是否运行缓存&#xff0c;如果为true&#xff0c;则使用out.println()等方法输出的字符串并不是立刻到达客户端服务器的&#xff0c;而是暂时存到缓存里&#xff0c;缓存满了或者程序执行完毕或者执行out.flush()操作时才到客户端&#xff0c;默认为true。
contentType指定当前JSP页面的MIME类型和字符编码&#xff0c;户端浏览器根据该属性判断文档类型&#xff0c;例如 HTML格式为text/html、纯文本格式为text/plain等
errorPage指明一个错误页面&#xff0c;如果该JSP程序抛出一个未捕捉的异常&#xff0c;则转到errorPage指定的页面&#xff0c;errorPage指定的页面通常
isErrorPage指定该页面是否为错误显示页面&#xff0c;如果为true&#xff0c;则该JSP内置有一个Exception对象exception&#xff0c;可直接使用&#xff0c;否则没有&#xff0c;默认为false
extends编译该JSP文件时继承哪个类&#xff0c;JSP为Servlet&#xff0c;因此当指明继承普通类时需要实现Servlet的init、destroy等方法
import引入该JSP中用到的类、包等&#xff0c;import是唯一可以声明多次的page指令属性&#xff0c;一个import可以引用uogelei&#xff0c;中间用英文逗号隔开&#xff0c;如<%&#64; page import&#61;“java.util.List,java.util.ArrayList”%>
info指明JSP的信息&#xff0c;该信息可以通过Servlet.getServletInfo()方法获取到
isThreadSafe指定对JSP页面的访问是否为线程安全
language**解释该JSP文件时采用的语言&#xff0c;一般为java语言&#xff0c;默认为java **
session该JSP内是否内置Session对象&#xff0c;如果为true&#xff0c;则内置Session对象&#xff0c;可直接使用&#xff0c;否则反之&#xff0c;默认为true
isELIgnored指定是否执行EL表达式
isScriptingEnabled确定脚本元素能否被使用

2、taglib

JSP API允许用户自定义标签&#xff0c;一个自定义标签库就是自定义标签的集合。

Taglib指令引入一个自定义标签集合的定义&#xff0c;包括库路径、自定义标签。

Taglib指令的语法&#xff1a;
<%&#64; taglib uri&#61;"uri" prefix&#61;"prefixOfTag" %>

uri属性确定标签库的位置&#xff0c;prefix属性指定标签库的前缀。

等价的XML语法&#xff1a;

3、include

JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分&#xff0c;会被同时编译执行。

Include指令的语法格式如下&#xff1a;
<%&#64; include file&#61;"文件相对 url 地址" %>
include 指令中的文件名实际上是一个相对的 URL 地址。

如果您没有给文件关联一个路径&#xff0c;JSP编译器默认在当前路径下寻找。

等价的XML语法&#xff1a;

JSP的动作标签
  • 所有的动作要素都有两个属性&#xff1a;id属性和scope属性。

属性描述
idid属性是动作元素的唯一标识&#xff0c;可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用
scope该属性用于识别动作元素的生命周期。 id属性和scope属性有直接关系&#xff0c;scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值&#xff1a; (a) page, (b)request, ©session, 和 (d) application。

1、


属性描述
id&#xff08;必须的&#xff09;id属性是动作元素的唯一标识&#xff0c;可以在JSP页面中引用。 该名称大小写敏感&#xff0c;必须符合JSP页面中脚本语言的命名规则。假如你使用的是Java语言&#xff0c;则该名称遵守的是Java命名规范。动作元素创建的id值可以通过PageContext来调用
class指定Bean的完整包名
scope该java bean对象的作用范围&#xff0c;可以写的就四个&#xff0c;也就是JSP的四大作用域&#xff0c;page、request、session、application
type指定将引用该对象变量的类型
beanNamebeanName属性值要么是一个完整类名&#xff0c;要么是一个可以转化为完整类名的表达式。用来传给Beans.instantiate方法。type属性值可和beanName属性值同&#xff0c;或为其超类、接口。beanName和type属性所指定的包名&#xff0c;类名均大小写敏感。

2、


  • jsp:setProperty用来设置已经实例化的Bean对象的属性&#xff0c;有两种用法。首先&#xff0c;你可以在jsp:useBean元素的外面&#xff08;后面&#xff09;使用jsp:setProperty&#xff0c;如下所示&#xff1a;
    第一种


<--此时&#xff0c;不管jsp:useBean是找到了一个现有的Bean&#xff0c;还是新创建了一个Bean实例&#xff0c;jsp:setProperty都会执行-->

第二种


<--此时&#xff0c;jsp:setProperty只有在新建Bean实例时才会执行&#xff0c;如果是使用现有实例则不执行jsp:setProperty。-->

对Java Bean对象进行属性的设置

属性描述
namejava bean对象的名称&#xff0c;它表示要设置属性的是哪个Bean。也就是在useBean行为中的id
propertyproperty属性是必需的。它表示要设置哪个属性。对象中的属性名&#xff0c;有一个特殊用法&#xff1a;如果property的值是"*"&#xff0c;表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。
valuevalue 属性是可选的。要对其属性进行赋值的值&#xff0c;字符串数据会在目标类中通过标准的valueOf方法自动转换
paramparam 是可选的。它指定用哪个请求参数作为Bean属性的值。如果当前请求没有参数&#xff0c;则什么事情也不做&#xff0c;系统不会把null传递给Bean属性的set方法

3、

语法格式如下&#xff1a;


<--jsp:getProperty动作提取指定Bean属性的值&#xff0c;转换成字符串&#xff0c;然后输出-->


属性描述
name要检索的Bean属性名称。Bean必须已定义。
property表示要提取Bean属性的值

jsp:useBean、jsp:setProperty、jsp:getProperty的举例&#xff1a;
cn.syj.Myclass.Bean包下面的Student.java类和/day07/WebRoot/JSP下的jspAction.jsp&#xff1a;
Student.java

package cn.syj.Myclass.Bean;
public class Student {private String username;private String password;public Student() {super();}public Student(String username, String password) {super();this.username &#61; username;this.password &#61; password;}public String getUsername() {return username;}public void setUsername(String username) {this.username &#61; username;}public String getPassword() {return password;}public void setPassword(String password) {this.password &#61; password;}
}

jspAction.jsp

<%&#64; page language&#61;"java" contentType&#61;"text/html; charset&#61;UTF-8"pageEncoding&#61;"UTF-8"%>












可以查看jspAction.jsp变为servlet后的源代码&#xff0c;看看我们写的javabean行为会被转换为何种语句:
源码位于&#xff1a;Tomcat9.0\apache-tomcat-9.0.13\work\Catalina\localhost\day07\org\apache\jsp\JSP
jsp:useBean、jsp:setProperty、jsp:getProperty运行结果展示

4、


  • include行为用于运行时包含某个文件&#xff0c;如果被包含的文件为JSP程序&#xff0c;则先会执行JSP程序&#xff0c;然后在把执行的结果包含进来。
  • 作用是跟include指令一样的&#xff0c;唯一的区别就在于
  • include指令是将被包含的文件的源码加入到了本JSP程序中&#xff0c;然后在进行编译&#xff0c;属于静态包含
  • 而include行为只是将被包含的文件的运行结果包含进自己。属于动态包含

属性描述
page包含在页面中的相对URL地址。
flush布尔属性&#xff0c;定义在包含资源前是否刷新缓存区。

5、

<--jsp:forward动作把请求转到另外的页面。jsp:forward标记只有一个属性pagg-->


属性描述
pagepage属性包含的是一个相对URL。page的值既可以直接给出&#xff0c;也可以在请求的时候动态计算&#xff0c;可以是一个JSP页面或者一个 Java Servlet.

6、


  • param 标签以“名字-值”对的形式为其他标签提供附加消息&#xff0c;这个标签与jsp&#xff1a;include、jsp:forward、jsp:plugin标签一起使用。
  • 当该标签与jsp&#xff1a;include标签一起使用时&#xff0c;可以将param标签的值传递到include指令要加载的文件中去&#xff0c;因此include动作标签如果结合param标签&#xff0c;可以在加载文件的过程中向该文件提供消息。

jsp:include、jsp:forward、jsp:param的例子&#xff1a;
访问forwordMain.jsp









includeMain.jsp









head.jsp


<%&#61;new Date() %>

<%&#61;request.getParameter("num") %>


结果展示&#xff1a;
实现请求转发功能&#xff0c;Servlet中通过request.getRequestDispatcher(“someServlet”).forward(request,response);而在JSP中也能够实现相同的功能&#xff0c;只不过用的是行为&#xff0c;实际上forward行为就是对其进行了封装。
地址值并没有发生变化&#xff1a;
在这里插入图片描述

7、


8、


9、

来自菜鸟教程
jsp:element 、 jsp:attribute、 jsp:body动作元素动态定义XML元素。动态是非常重要的&#xff0c;这就意味着XML元素在编译时是动态生成的而非静态。

<%&#64; page language&#61;"java" contentType&#61;"text/html; charset&#61;UTF-8"pageEncoding&#61;"UTF-8"%>








属性值

XML 元素的主体




结果展示&#xff1a;
来自菜鸟教程

10、


  • jsp:plugin动作用来根据浏览器的类型&#xff0c;插入通过Java插件 运行Java Applet所必需的OBJECT或EMBED元素。

  • 如果需要的插件不存在&#xff0c;它会下载插件&#xff0c;然后执行Java组件。 Java组件可以是一个applet或一个JavaBean。

  • plugin动作有多个对应HTML元素的属性用于格式化Java 组件。param元素可用于向Applet 或 Bean 传递参数。

  • 建议参考&#xff1a;https://blog.csdn.net/liuchang54/article/details/48245721


11、

来自菜鸟教程
语法格式如下&#xff1a;

动作元素允许在JSP页面和文档中使用写入文本的模板

text.jsp

Welcome to JSP Programming

运行结果展示

在这里插入图片描述


推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文详细介绍了解决全栈跨域问题的方法及步骤,包括添加权限、设置Access-Control-Allow-Origin、白名单等。通过这些操作,可以实现在不同服务器上的数据访问,并解决后台报错问题。同时,还提供了解决second页面访问数据的方法。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
author-avatar
Du-kodak
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有