jsp常用的指令与标签

JSP面试题 JSP 代表 JavaServer Pages 或 Jakarta Server Pages。 它是一种用于创建动态 Web 内容的服务器端技术。 换言之,JavaServer Pages (JSP) 是一种使开发人员能够为 Java Web 应用程序创建动态且独立于平台的网页的技术。 Sun Microsystems 于 1999 年发布 JSP,它类似于 Active Server Pages (ASP) 和 PHP,但使用的是 Java 编程语言。 JSP 技术是Java Servlet 技. 阅读详情

1.
Jsp指令:
语法:<%@ 指令名 属性="值"%>.

jsp指令负责告诉jsp引擎如何把页面翻译成servlet.

page指令:用于定义jsp页面的各种属性,最好放在jsp页面的起始位置,属性有language,extends,import,session,buffer,autoFlush,isThreadSafe,info,isErrorPage,contentType,pageEncoding,isELIgnored.

include指令:在后面与include标签对比讲解.

2.
out对象:这个out不是servlet里面的out.是PageContext.getWriter()方法返回的out对象.
实验1:
<%
 out.println("first");
 response.getWriter("second");
%>
结果如下:
second
first
为什么out的后输出?这是因为jsp引擎先把内容放到PageContext.getWriter()方法返回的out对象的缓冲区.写完后再交给servlet的response.getWriter()方法写到servlet引擎提供的缓冲区,缓冲区再把内容写到客户端.

实验2:
<%
 ServletOutputStream sos = response.getOutputStream();
 sos.println("hehe");
%>这里加上一个换行

运行结果报错了,为什么?上面说过,out最终会调用response.getWriter()方法返回的out对象,我们这个实验首先使用了response.getOutputStream()方法,记住我们写的所有的jsp页面都会翻译成Servlet的,然而在这里的代码中输出换行符时又去调用了response.getWriter()方法,而response的getWriter()和getOutputStream()不能同时在一个方法里面调用,所以报错了.注意:用了ServletOutputStream 就不能再使用out对象了.

实验3:
<%
 RequestDispatcher rd = application.getRequestDispatcher("/test.html");
 rd.forward(request,response);
%>在这里回车

结果报告有错.为什么?
实际上当调用forward方法时,是去找了一个缺省的servlet,这个缺省的servlet使用的是getOutputStream()方法,而这里的回车使用的是jsp的out对象打印出来的.这个out对象最终要使用的是getWriter(),而上面说过response的getWriter()和getOutputStream()不能同时使用,所以报错了.当然在前面加上回车也是一样的效果.

3.
pageContext对象:->request->session->application
pageContext对象代表此jsp页面,它是通过调用JspFactory.getPageContext方法返回的,在自定义标签用的非常多.
可以使用pageContext得到其他8大内置对象.

实验4:
这是一个换行
<%
 1.//RequestDispatcher rd = application.getRequestDispatcher("/test.html");
   //rd.forward(request,response);
 2. pageContext.forward("/test.html");
%>
第一种方法会出错,第二种不会,为什么?
第一种出错的原因我们在上面说过,第二种为什么不会出错呢?我们说过,pageContext包装了其他八大隐式对象,所以它的forward方法内部也是调用了request.getRequestDispatcher的forward方法,但是在执行RequestDispatcher的forward方法之前调用了out.clear()方法.这样就不会出错了,去掉前面的换行,在%>后面加一个换行,两种方法都会报错.

几个常用的方法:
setAttribute(String name,Object object);
setAttribute(String name,Object object,int scope);scope代表指定的范围(page,request,session,application)
getAttribute(String name);
getAttribute(String name,int scope);
removeAttribute(String name);
findAttribute(String name);此方法依次从page,request,session,appllication这四个范围去找,直到找到为止.如果没找到则返回null.

4.
jsp标签:
<%@ include file=""%>:静态包含,a包含b,编译过程中a会受到b的jsp指令的影响,例如,b中有一个isELIgnored指令,会影响b,效率更高,不仅仅是引入输出内容,引入共同的的编译元素,不会检查所含文件的变化,适用于包含静态页面
<jsp:include page=""/>:动态包含,a包含b,a在执行过程中调用b,page的值可以是变量.它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
<jsp:forward>:此forward调用的pageContext的forward然后return了
<jsp:param>:用于给上面两个标签传参数.

以下是jsp2.0里面才可以使用的标签:
<jsp:scriptlet>:相当于<%%>
<jsp:scriptlet>
 int x = 3;
 if(x < 5){
  out.println(x);
 }
</jsp:scriptlet>
会报错.因为在此使用了"<"这个符号,必须用
<![CDATA[
 代码
]]>

<jsp:declartion>
</jsp:declaration>相当于<%!%>

<jsp:expression>
</jsp:expression>相当于<%=%>

<jsp:directive.指令名 属性="值"/>相当于<%@ page 属性="值"%>

<%@ page contentType="text/html;charset=gb2312"%>
<%
 out.println("中国"); 
%>
和
<%
 response.setContentType("text/html;charset=gb2312");
 out.println("中国");
%>
的效果是不一样的.前者打印出了"中国"两字,后者打印出来的是乱码,为什么呢?
前者告诉jsp引擎按照指定的contentType去把jsp的内容翻译成servlet,因为charset指定为了gb2312,所以正常的输出了.
后者为什么是乱码呢?这是因为jsp源文件的中文字符在翻译成Servlet源文件时已经不是其正确的unicode编码了,当服务器把这两个字符按照gb2312输出正文时,出现的就是乱码了.

<jsp:setProperty name="date" property="time" param="time"/>
和
<jsp:setProperty name="date" property="time" value="<%=Integer.parseInt(request.getParameter("time"))%>"/>
意思是一样的.

自省机制:<jsp:setProperty name="date" property="*"/>
这种形式用于对javaBean实例对象中的多个属性赋值,它表示将请求消息中的参数逐一与javaBean实例对象中的属性进行比较,如果两个属性同名,则将该参数值赋值给该属性.注意:必须是同名的才赋值.

<jsp:useBean id="date" class="java.util.Date" scope="request"/>
这个jsp标签的含义为:
在指定范围(这里是request,如果不写,默认为page)内去找一个名字为date的对象,如果找到了则把它取出来,如果没找到则实例化一个新的类型为java.util.Date的名字为date的对象,并将它保存在request中,

<jsp:useBean id="date" class="java.util.Date" scope="request">
......
</jsp:useBean>
如果上面的语句这样写,其含义则为:
在指定范围(这里是request,如果不写,默认为page)内去找一个名字为date的对象,如果找到了则把它取出来,"......"地方的代码不再执行.如果没找到则实例化一个新的类型为java.util.Date的名字为date的对象,并将它保存在request中,还将执行"......"地方的代码.

5.
forward() 与redirect()的区别?
答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

 

手把手教你用Synopsys AHB VIP搭建验证环境:从SINGLE到WRAP16的完整波形分析与避坑指南 本文详细介绍了如何使用Synopsys AHB VIP搭建验证环境,从基础配置到复杂波形调试实战。重点解析了AHB协议中各种Burst类型的地址计算机制,包括INCR和WRAP类型,并提供了实际案例和避坑指南,帮助工程师快速掌握验证技巧。 阅读详情

相关推荐

电流互感器的使用分析

有关电流互感器使用的注意事项,回头再看,耳目一新。

qq_46757048的博客 2万+

jsp面试题

Jsp面试题 1、jsp有哪些内置对象作用分别是什么 答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):      request 用户端请求,此请求会包含来自GET/POST请求的参数      response 网页传回用户端的回应      pageContext 网页的属性是在这里管理      session 与请求有关的会话期      applica

u012411885的专栏 677

TensorFlow GPU版本安装步骤-Windows系统

本文由在Windows下安装TensorFlow GPU版本教程-优快云等整理得到。 目录 1、确认显卡是否支持CUDA 1.1 查看显卡信息 打开“设备管理器”,查看显卡信息,如下图所示: 由上图知,本电脑的显卡为NVIDIA Quadro P400. 1.2 查看支持CUDA的显卡 网址:https://developer.nvidia.com/cuda-gpus 经查询可知,该显卡支持CUDA,如下图所示: 2、安装CUDA 2.1 下载CUDA 网址:https://developer.nvi

x_lingyun的专栏 763

JS简答

4.JS 中 == 和 === 区别是什么? a、对于string,number等基础类型,和=有区别:不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如 果类型不同,其结果就是不等。同类型比较,直接进行“值”比较,两者结果一样。 b、对于Array,Object等高级类型,和=没有区别,进行“指针地址”比较。 5.JavaScript内置可用类型 string,number,boolean,null和undefined,object,symbol(ES6新语法) 6.jQ

weixin_44919083的博客 500

从零到一:用AXI DataMover在Zynq MPSoC上实现高效DMA传输(附Vitis HLS驱动示例)

本文详细介绍了如何在Xilinx Zynq UltraScale+ MPSoC平台上使用AXI DataMover实现高效的DMA数据传输。通过解析AXI DataMover架构、Vivado工程配置、Vitis HLS驱动开发及性能优化技巧,帮助开发者快速构建高性能数据传输通道,并提供了可直接复用的代码示例。

weixin_42520796的博客 423

为什么你的PROFINET IRT同步性能不达标?等时模式常见配置误区盘点

本文深入剖析了PROFINET IRT等时模式同步性能不达标的常见原因。文章直击痛点,系统盘点了从硬件兼容性、拓扑组态、过程映像分区分配,到同步OB配置、时序参数调校及带宽管理等关键环节的配置误区,并提供了实用的诊断思路与性能优化清单,帮助工程师精准定位并解决同步抖动、时序混乱等难题。

ujm5678901的博客 455

程序员的20大JSP面试问题及答案

JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运

Lifelong learning 3375

Maya绑定:人物绑定详细案例(创建骨骼、镜像骨骼、IK创建、IK打组、IK控制器、FK控制器、烘焙动画、导出)

Maya绑定:人物绑定详细案例(创建骨骼、镜像骨骼、IK创建、IK打组、IK控制器、FK控制器、烘焙动画、导出)

m0_45877477的博客 1626

JSP相关面试题

文章目录1、Tomcat服务器软件的目录结构说明, 如何配置Tomcat的环境变量?2、如何使用Eclipse创建Web项目?2.1、配置环境2.2、创建项目3、Java Server Pages的运行原理?4、什么是无状态请求, 应用程序的类型?5、request和response对象的作用和常用方法?6、处理中文乱码的方法有几种,如何实现?7、针对GET和POST请求如何处理中文乱码?8、转发......

Xiang想 1667

实战详细讲解Qt插件plugin的编写与用法

qt插件的开发,可以说是动态库的开发,因为调用方式类似,多熟悉一下,利用Qt框架开发很简单的。在想想这种调用过程有的熟悉,比如公司买了一堆摄像头,公司要对摄像头进行二次开发,实现自己想要的功能,集成到一套设备里去,然后在卖给用户。此时厂商肯定会提供开发文档,并给你SDK包(软件开发工具包), 包里你会发现只有头文件和一堆库文件,没有源文件,因为实现的过程是产商公司保密的,给你看还得了。所以都封装成了库的形式给你调用,如静态库或者动态库。

qq_44667165的博客 1万+

PD3.0详解 协议的时序timer和counter计数

前面介绍了关于PD协议的交互,还有协议层数据各个字段的含义,但是一直没有系统的说关于协议的时序,还有部分counter,就是协议允许发送的次数,或者一些其他计数。 大师匈今天说一下关于这方面的东西,这些东西都是非常关键的东西,但是相对来说PD标准内对时序的要求还是比较宽泛,非常容易能够实现这样的要求。 Timer 1、CRCReceiveTimer 0.9~1.1ms 表示每次通信收到goodcrc的时间,必须在这个时间内收到goodcrc, 我们要注意不是在0.9~1.1ms内,而是第三方可以在这个范

大师匈的博客 5005

Jsp基本语法(常用指令、常用动作标签)

前面说了jsp的基本原理,今天就来说说Jsp基本语法吧。 基本语法包括常用指令和常用动作标签   ...

斗鹰的技术专栏 1106

26. Fabric2.2 司法存证的智能合约分析

有很多同学反馈 Fabric 智能合约读起来比较费劲,对于新手不友好看不懂,这里选择一个司法存证的智能合约,阅读、分析智能合约基础框架与核心流程代码,培养大家智能合约编写的方法论。

菜鸟的博客 1338

jsp的知识点总结(jsp的头部指令,常用脚本,常用标签)以及练习题(附代码)

jsp独特的语法、常用方法和应用场景。 目录 jsp的头部指令 jsp的常用脚本 i.声明脚本(极少使用) i.表达式脚本(常用) iii.代码脚本(常用) 常用标签 静态包含 动态包含 请求转发标签 jsp的练习题: 练习一:在 jsp 页面中输出九九乘法口诀表 练习二:jsp 输出一个表格,里面有 10 个学生信息。 应用场景: jsp的头部指令 就是包含在<%@ page %>的内容,很少使用,可忽略。 这个比较常用,可以在运行的时候提示..

trigger的博客 888

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jsp的常用指令标签详记

jsp中常用的指令操作符 jsp指令是为jsp引擎设计的,并不产生任何可见的输入输出,而只是告诉引擎如何处理jsp页面的其余部分。 jsp指令格式 eg: 注意:属性名部分是大小写敏感的。 有 Page include taglib 1.page指令用于定义jsp页面的各种属性,无论page指令出现在jsp中的什么地方,, 它作用都是整个jsp页面,为了保持程序的可读性和

weidianlun的博客 1093

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

JSP中的常用指令标签

Page 导包 设置网页编码 指定脚本语言 指定错误页面 Include 静态导入页面 Taglib 导入java标准标签库 Page指令 //告知浏览器以什么格式和编码解析 响应的数据 <%@ page contentType=“text/html;charset=UTF-8” %> //设置jsp页面转换的语言 <%@ page language=“java” %> /...

熊晓磊的博客 499

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JSP标签库大全jsp常用的指令与标签

JSP标签库大全 标签: jspstringimportlibraryurlc 2012-07-30 10:28 6541人阅读 评论(0) 收藏 举报  分类:   JSP(5)  版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[-] 待续Core Tag LibraryXML Tag Library

shenghua 4168

JSP简介、运行原理、基本语法、常用指令标签

JSP简介: JSP全称:Java Server Pages,是运行在java服务器中的页面 JSP的本质是一个Servlet,Servlet能做的JSP都可以。 JSp必须运行在服务器中,不能直接在浏览器打开。 ...

私は悪い人ですか的博客 245
上一篇: 空(标识)接口的重要性
下一篇: jsp常用的指令与标签
Senton
博客等级 码龄21年 334粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值