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 ...
随机推荐
- Android6.0 源码修改之 Contacts应用
一.Contacts应用的主界面和联系人详情界面增加顶部菜单添加退出按钮 通过Hierarchy View 工具可以发现 主界面对应的类为 PeopleActivity 联系人详情界面对应的类为 Qu ...
- windows下,读取快捷方式lnk所指向的路径
BOOL GetLnkFileName( OUT PWSTR pLnkName, OUT PWSTR OepnFileNameBuufer, IN DWORD OpenFileNameBufferSi ...
- 基于Servlet+jsp的web计算器
基于Servlet+jsp的web计算器 这次老大为了让我们自己复习web中页面的跳转给布置得任务 天下代码一大抄,关键看你怎么抄 首先我想到的计算算法不是什么堆栈,是简单的(其实很复杂,但是我就只需 ...
- 设计模式之行为类模式PK
行为类模式包括: 责任链模式 命令模式 解释器模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式 策略模式 模板方法模式 访问者模式 行为型模式涉及到算法和对象间职责的分配 行为类模式关注 ...
- 一起学Android之Http访问
概述 在Android开发中,一般通过网络进行访问服务器端的信息(存储和检索网络中的数据),如API接口,WebService,网络图片等.今天主要讲解Http访问的常用方法,仅供学习分享使用. 涉及 ...
- sql server replace的替换字符,replace的使用
sql server replace的替换字符,replace的使用 select REPLACE(name,'张','') * from entity_5c7a578c05c7042958d9148 ...
- 一键解决更改计算机名后无法启动MSSQLSERVER服务问题
问题版本:SQL Server 2012. 解决办法:打开服务,Win + R运行services.msc,找到 SQL SERVER(MSSQLSERVER)服务右键->属性,切换至登录选项卡 ...
- CAP 2.4版本发布,支持版本隔离特性
前言 自从上次 CAP 2.3 版本发布 以来,已经过去了几个月的时间,这几个月比较忙,所以也没有怎么写博客,趁着2019年到来之际(现在应该是2019年开始的时候),CAP也发布了2018年的最后一 ...
- MVC详解:mvc是什么?为什么要用MVC?MVC工作原理以及MVC优缺点
一.什么是MVC Model:模型层 View:视图层 Controller:控制层 MVC (Modal View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户 ...
- Oracle AWRSQRPT报告生成和性能分析
我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315 对于局部的,比如某个页面列表sql,我们可以使用Oracle的 ...