jsp:set/getProperty底层实现的探究

关于jsp:set/getProperty底层实现的探究

今天上课讲到<jsp:useBean>时涉及到了<jsp:setProperty>和<jsp:getProperty>两个标签。使用它俩可以获取和修改JavaBean中Java类的属性值,后面例子中又给出了直接调用Java类方法获取和修改属性值的方法,我们发现二者结果是一样的,旁边的hyx给出了关键性的问题,setP和getP实现机制和类方法调用一致吗?我心生疑问。

我们来一探究竟:

1. 起初我先注释掉*.Java文件中setXXX()和getXXX()方法,然后运行jsp,看会发生什么。

发现会在setProperty()以及getProperty()那里报错。

我感觉setP()和getP()底层实现应该会是调用了Java类中的方法,但依水老师持不同观点,她认为setP()和getP()应该另有一套机制。

2. 查找资料后发现,Servlet会为jsp生成Java文件,我们去找找答案。

来到eclipse-workplace(你自己的eclipse-workplace目录)

->.metadata->.plugins->org.eclipse.wst.server.core->tmp0->work->Catalina->localhost->first->org->apache->jsp->yourfilename_jsp.java

我们来比较一下

*.Jsp

我们可以看出,具体实现的时候,是用pageContext的findAttribute方法找对应类,然后调用该类方法来实现的setProperty()和getProperty()。

3. 我们再来对比一下直接调用类方法和getP()

在生成Java代码时,直接调用类方法……清爽整洁,而setP()和getP()……存在即合理吧!

总结:

1. jsp:set/getProperty在代码生成的时候是经由pageContext找到类(对象)然后调用其类方法实现的。而不是有其他什么magic 操作!

2. 速度上来讲,看的出来(jsp标签手续繁多)比直接调用类方法慢的多!!!

参考资料:

[1]如何找到Servlet编译jsp生成的*.java文件

https://blog.csdn.net/qq_39021393/article/details/81108916

[2]点子的来源

http://www.cnblogs.com/Mike_Chang/p/10082550.html

原文地址:https://www.cnblogs.com/yocichen/p/10656352.html

时间: 2024-08-04 00:53:01

jsp:set/getProperty底层实现的探究的相关文章

Jsp学习总结(一)

最近老是失眠,还好我灵鸡一动,学习了jsp(得劲). Jsp和Servlet的本质是一样的,Jsp最终被编译成Servle才能运行,或者说jsp只是生成Servlet的草稿文件. Jsp特点就是在HTML中嵌入java代码,或者使用各种Jsp标签,包括自定义标签,动态的提供页面内容,现在发展为表现层技术.(其他表现层的技术:FreeMarker,Velocity,Tapestry等,其中Jsp应用最为广泛) Jsp的本质是Servlet.Jsp页面由两部分组成:                静

JSP中的7个指令

动作指令与编译指令不同,编译指令时通知servlet引擎的处理消息,而动作指令只是运行时的动作. 编译指令在将JSP编译成Servlet时起作用,而处理指令通常可替换成JSP脚本,它只是JSP脚本的标准化写法. (1)JSP:forward  执行页面转向,将请求的处理转发到下一个页面. (2)JSP:param  用于传递参数,必须与其他支持参数的标签一起使用 (3)JSP:include  用于动态引入一个JSP页面 (4)JSP:plugin 用于下载JavaBean或者Applet到客户

jsp基础知识二(jsp动作指令)

动作指令与编译指令不同,编译指令是通知servlet引擎的处理消息,而动作指令只是运行时的动作.编译指令在将JSP编译成Servlet时起作用,而动作指令通常可替换成JSP脚本,它只是JSP脚本的标准化写法. (1)JSP:forward  执行页面转向,将请求的处理转发到下一个页面. (2)JSP:param  用于传递参数,必须与其他支持参数的标签一起使用 (3)JSP:include  用于动态引入一个JSP页面 (4)JSP:plugin 用于下载JavaBean或者Applet到客户端

编写无Java脚本的JSP页面

在上一章中总结了Web开发中应用MVC架构模式,将Servlet 用做控制器,JSP作为视图,JavaBean作为模型,实现业务流程控制,页面逻辑和业务逻辑的分离.然而,使用前面的技术实现MVC,并不是最完美的. 在当代的一个最佳的JavaWeb开发实践就是在MVC架构模式中,中和使用JavaBean,EL(expression language),JSP自定义标记库以及JSP标准标记库JSTL,编写无java脚本的JSP页面. 一 JSP表达式语言EL 在使用基于MVC架构模式的Web应用开发

JSP、servlet--学习摘要

2.1 web应用和web.xml文件 2.2 JSP的基本原理 JSP的本质就是servlet,每一个JSP页面其实就是一个servlet实例,用在浏览器发送一次请求的JSP页面, 服务器负责把JSP页面转换成servlet类,从而进行数据的处理. 2.3 JSP注释 JSP的注释:<%--注释内容--%> HTML的注释:<!--注释内容--> 2.4 JSP的声明 JSP声明用于声明变量和方法,声明语法格式:<%! 声明部分 %> 2.5 输出JSP表达式 JSP

Jsp的基本原理

Jsp的基本原理 1.jsp页面部分包括两部分: 静态部分:标准的html标签.静态的页面内容,这些与静态的html相同. 动态部分:受java程序控制的内容,这些内容由java程序来动态生成. 2.Jsp页面的本质是一样的,它编译后生成servlet,它的特点是在html中加入java代码. 3.jsp经过编译后生成的.class和.java文件都存在于tomcat的work\catalina\localhost\.....目录下 4.JSP注释: <%-- 注释不会被发到客户端--%> 5

JSP和Servlet笔记

一.JSP的3个编译指令   作用:page指令用于设置整个jsp页面相关的属性,比如页面的编码格式.所包含的文件等等,它们包含在<%@ page %>标记中.  1)page 指令  以下为page指令各属性的描述: 1. language ——指定jsp脚本所采用的语言种类,默认为Java 2. extends ——定义当前jsp页面产生的Servlet继承哪个分类 3. import ——定义当前jsp页面所使用的JavaAPI,多个API用逗号分开 4. session ——指定当前j

javaWeb核心技术第九篇之JSP

JSP:全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术.在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示.JSP文件的扩展名为.JSP; JSP技术所开发的Web应用程序是基于Java的,它可以用一种简捷而快速的方法从Java程序生成Web页面,使用上具有如下特征: 1:跨平台:由于JSP是基于Java语音的,它可以使用JavaAPI,所有它也是跨平台的,可以

JAVAEE面试题

XML部分 1.XML技术的作用? XML技术用于数据存储.信息配置.数据交换三方面. 可以将数据存储在XML中,通过节点.元素内容.属性标示数据内容及关系. 可以使用XML很方便的做信息配置,软件的各种配置参数和对象关系都存贮在XML文件中. 在做数据交换平台时,将数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理. 2.XML文档约束有哪几种?有什么区别? XML DTD(功能有限) XML Schema (功能强