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
jsp:set/getProperty底层实现的探究的更多相关文章
- JAVA网络通信底层调用LINUX探究
前言:该博客花了我一个下午得心血,全部手打,路过给个赞,拒绝抄袭!!!!!!!!!!!!!!!!!!!!!!!!! 简单的SOCKET通信程序 先从一段简单的JAVA程序性开始写起,这里我们才用半双工 ...
- Jsp入门实战上
前面讲了servlet入门实践现在开始介绍jsp入门实践,开发环境的搭建请参考我前面的tomcat的文章,jsp入门教程分为上下两部分,第一部分简单讲解:jsp语法的规范,以及三大编译指令,七个动作指 ...
- (九)Javabean与Jsp(来自那些年的笔记)
目录 JavaBean 在JSP中使用JavaBean 标签用法 带标签体的 JavaBean 标签 setProperty 标签 getProperty 标签 JSP开发模式 案列:使用 模式一 编 ...
- Javaweb 第12天 JSP、EL技术
第12天 JSP.EL技术 今日任务: JSP技术入门和常用指令 JSP的内置对象&标签介绍 EL表达式&EL的内置对象 课堂笔记 1.JSP技术入门和常用指令 1.1.JSP的由来. ...
- jsp基本语法及运行原理
一.jsp简介 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 是由Sun Microsystems公司倡导.许多公司参与一起建立 ...
- JSP和Servlet笔记
一.JSP的3个编译指令 作用:page指令用于设置整个jsp页面相关的属性,比如页面的编码格式.所包含的文件等等,它们包含在<%@ page %>标记中. 1)page 指令 以 ...
- ES 14 - (底层原理) Elasticsearch内部如何处理不同type的数据
目录 1 type的作用 2 type的底层数据结构 3 探究type的存储结构 3.1 创建索引并配置映射 3.2 添加数据 3.3 查看存储结构 4 关于type的最佳实践 1 type的作用 在 ...
- 编写无Java脚本的JSP页面
在上一章中总结了Web开发中应用MVC架构模式,将Servlet 用做控制器,JSP作为视图,JavaBean作为模型,实现业务流程控制,页面逻辑和业务逻辑的分离.然而,使用前面的技术实现MVC,并不 ...
- jsp有哪些动作?作用分别是什么?
jsp共有6种基本动作: 1.jsp:include,在页面被请求的时候引入一个文件 2.jsp:useBean,寻找或者实例化一个JavaBean 3.jsp:setProperty,设置JavaB ...
随机推荐
- .net core redis 驱动推荐,为什么不使用 StackExchange.Redis
前言 本人从事 .netcore 转型已两年有余,对 .net core 颇有好感,这一切得益于优秀的语法.框架设计. 2006年开始使用 .net 2.0,从 asp.net 到 winform 到 ...
- C# 替换Word文本—— 用文档、图片、表格替换文本
编辑文档时,对一些需要修改的字符或段落可以通过查找替换的方式,快速地更改.在C# 在word中查找及替换文本一文中,主要介绍了在Word中以文本替换文本的方法,在本篇文章中,将介绍如何用一篇Word文 ...
- 设计模式(Design Patterns)的简单讲解
模式的诞生与定义 模式(Pattern)起源于建筑业而非软件业(小本本记下来--) 模式之父--美国加利佛尼亚大学环境结构中心研究所所长Christopher Alexander博士; 模式 : -C ...
- 第一次JVM分析记录:Out of Memory Error (workgroup.cpp:96), pid=6196, tid=139999645685504
tomcat的catalina.out日志报错如下: Exception in thread "http-bio-8081-Acceptor-0" java.lang.OutOfM ...
- 2017-12-09 JavaScript实现ZLOGO子集: 测试用例
续前文JavaScript实现ZLOGO子集: 前进+转向. 在添加新功能之前, 先添加测试用例, 以应对日益复杂的代码. 选择使用QUnit编写运行测试用例. 暂时对比较复杂和I/O无关的部分进行测 ...
- 【原】无脑操作:Centos 7后台运行及终止jar包程序
1.后台运行jar包程序,输入:nohup java -jar /路径/程序.jar & 2.后台终止jar包程序,输入:ps -ef | grep java,查看使用java命令的进程,再输 ...
- 一些常用Java序列化框架的比较
概念 序列化:将Java对象转化为字节数组 反序列化:将字节数组转化为Java对象 在RPC应用中,进行跨进程远程调用的时候,需要使用特定的序列化技术,需要对进行网络传输的对象进行序列化和反序列化. ...
- dubbo-springboot入门级demo
1. dubbo-springboot入门级demo 1.1. 前言 最后一个做运维的朋友和我提起,他们公司想做个dubbo灰度发布的功能,而这个功能落到了他头上.在我的印象里,dubbo应该可以通过 ...
- 浅论各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别
JTAG协议 JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试.现在多数的高级器件都支持JTAG协 ...
- NavUtils【底部虚拟导航栏工具类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 获取底部虚拟导航栏的高度值 效果图 代码分析 checkDeviceHasNavigationBar(Context context ...