1.VisualBasic编程典型实例解析内容提要
2.Python 进阶指南(编程轻松进阶):五、编程编程发现代码异味
3.Adobe Flash 11 Stage3D(Molehill)游戏编程初学者指南图书目录
4.WebGL编程指南笔记-第二章 WebGL入门
5.Python的指南指南10大集成开发环境和代码编辑器(指南)
6.C语言经典编程282例作者:明日科技
VisualBasic编程典型实例解析内容提要
本书详细解析了VisualBasic编程的典型实例,分为三个章节,源码源码以便读者根据实际应用深入学习。下载首先,编程编程第1章关注基础与编程实践,指南指南源码 ip头精心挑选的源码源码个实例旨在引导初学者快速掌握VisualBasic的编程技巧,通过实际操作,下载让编程入门变得更加直观易懂。编程编程 紧接着,指南指南第2章专为图形图像与数据库编程提供指导。源码源码这里有个实用的下载实例,展示了如何利用VisualBasic进行图形操作和数据库管理,编程编程帮助编程人员更好地理解和应用这些功能。指南指南 最后,源码源码第3章深入探讨网络与通信以及计算机安全与维护的编程实例。通过个实例,读者将了解到如何使用VisualBasic实现这些高级领域的编程,无论你是初学者还是有一定经验的开发者,都能从中获益匪浅。 全书结构严谨,内容易于理解,实例既典型又实用,无论你是初学者寻求入门指南,还是有一定基础的开发者寻求参考,这本书都将是你学习VisualBasic编程的强大工具。扩展资料
本书是VisualBasic编程人员的经验之作,通过一个个典型实例解析总结了VisualBasic编程难点和关键技术,详尽而具体地解说了VisualBasic编程的思路、方法和技巧,浓缩了VisualBasic应用程序设计的精华。全书每个实例都按照设计思路、编程原理以及实例详解方法和步骤来解说。尤其是对实例的核心源代码进行了注释,每一个实例都具有很强的实用性、针对性和代表性。书中实例源程序代码可到网上下载。Python 进阶指南(编程轻松进阶):五、国家查溯源码发现代码异味
导致程序崩溃的代码显然存在错误,但并非唯一识别问题的方式。其他迹象表明程序可能包含更微妙的错误或难以阅读的代码。就像气体的味道可指示气体泄漏,烟雾的味道可指示火灾,代码异味同样指示潜在的源代码模式错误。代码异味不等于问题,但它确实提示您应关注程序。本章列举了常见的代码异味,理解并预防一个 bug 比遇到后调试并修复要节省时间。程序中重复代码是一个典型异味,通过将其放入函数或循环,确保将来的更改只在一处进行。魔术数字,即代码中无法解释的数值,通过替换为具有描述性名称的常量,增强代码可读性。注释掉的代码和僵尸代码,尽管不被运行,可能误导后来的开发者,最好移除,并利用版本控制系统如 Git 跟踪变更。打印调试使用 print() 函数显示调试信息,尽管简便,但依赖调试和日志诊断错误通常更为有效。带有数字后缀的变量,如 x1、x2、x3 等,通常最好替换为包含列表的单个变量。Python 中使用模块而非类来组合函数,类仅包含静态方法或仅有一个方法是一种异味,应将代码移入模块。列表表达式简洁,但嵌套列表推导式不易阅读。处理异常的空 except 块,以及简短、抓妖将军源码晦涩的错误消息,都是代码异味。最后,过时或误导性的编程建议,如每个函数仅有一个 return 语句或 try-except 块,从不使用标志参数或全局变量,以及认为注释无用,不再适用。代码异味定理提供了考虑的问题,但最佳实践并非绝对标准,会随经验增长而变化。
Adobe Flash Stage3D(Molehill)游戏编程初学者指南图书目录
第1 章 让我们用Molehill制作游戏吧!
1.1 你的史诗级探险一触即发!
1.2 什么是Molehill?
1.3Molehill不能做什么?
1.4 你需要具备哪些知识?
1.5 基本的3D术语
1.6 常见3D显像术语
网格(Mesh)
多边形(Polygon)
顶点(Vertex)
纹理(Texture)
着色器(Shader)
顶点着色器(Vertex...Program)
片段着色器(Fragment...Program)
3D显像等级已达成!
1.7 常见3D编码术语
向量(Vector)
法线(Normal)
矩阵(Matrix)
3D编码等级已达成!
1.8 小 结
1.9 第1级,达成!
第2 章 Molehill蓝图
2.1 旧式渲染方法
2.2Molehill渲染法:Stage3D
2.3 使用2DFlash文字和Sprite
2.4 为什么Stage3D这么快?
2.5Molehill应用的结构
Stage
Stage3D
Context3D
VertexBuffer3D
IndexBuffer3D
Program3D
建立Molehill程序的流程
2.6 小 结
2.7 第2级,达成!
第3 章 启动引擎!
3.1 第1步:从Adobe下载Flash(Molehill)
Stage3D设置好了!
3.2 第2步:开始编码
任务完成——收获的时间到了
祝贺你!
3.3 完整的源代码
3.4 小 结
3.5 第3级,达成
第4 章 基础着色器:我能看到东西了!
4.1 AGAL:Adobe图形汇编语言
4.2 基础AGAL着色器示例
顶点着色器
片段着色器
4.3 编译AGAL源码
4.4 该渲染了!
4.5 创作一个着色器演示文件
4.6 添加FPS计数器
任务完成——收获的时间到了
祝贺你!
4.7 小 结
4.8 第4级,达成!
第5 章 构建一个3D世界
5.1 创建顶点缓冲
将3D模型导入Flash
我们的网格解析类完成了!
5.2 渲染循环
任务完成——收获的时间到了
5.3 文件夹结构
5.4 小 结
5.5 第5级,达成!
第6 章 纹理:让世界更好看
6.1 制订计划的时间:创造一个“真正”的游戏
6.2 在Stage3D中使用纹理
2的幂
u,…v坐标
透明纹理
在着色器中改动u,…v坐标
纹理图集
动画纹理
操作纹理数据
6.3 渲染状态
背面剔除(Backface...Cull)
深度测试(Depth...Test)
混合模式(Blend...Mode)
6.4 增加性能
不透明的更快
避免重复绘制
避免状态改变
使用简单着色器
绘制更少的网格
6.5 给演示文件添加纹理效果
6.6 你的演示文件已经升级了!
6.7 小 结
6.8 第6级,达成!
第7 章 计时器、输入、实体:游戏性元素!翻倍选股源码
7.1 我们目前的任务
保持简洁
让它可以重用
7.2 让我们的游戏更富有交互性
添加HUD叠加层
持续跟踪时间:游戏计时类
游戏输入类
一个抽象的实体类
7.3 使用get和set函数隐藏复杂的代码
7.4 为我们新改良的游戏世界设计美术资源
7.5 升级我们的游戏
7.6 让我们在运行中看看这一切吧!
7.7 小 结
7.8 第7级,达成!
第8 章 丰富的视效!
8.1 我们目前的任务
性能设计
可重用性设计
使用AGAL进行动画
8.2 一个基础的粒子实体类
8.3 关键帧顶点动画着色器
8.4 粒子系统管理类
8.5 关键帧化粒子网格
选择粒子纹理
8.6 将粒子系统类整合到游戏中
8.7 让我们在运行中领略粒子系统吧!
8.8 小 结
8.9 第8级,达成!
第9 章 充满动作的世界
9.1 为“角色”扩展实体类
实现人工智能
9.2 碰撞检测
9.3 一个“角色重用池”系统
9.4 为了提升帧频,让游戏只显示邻近的角色
9.5 使用映射图的简单关卡编辑器
9.6 升级输入程序
9.7 小 结
9.8 第9级,达成!
第 章 3, 2, 1, 启动!
.1 我们的最终任务
.2 抵达终点线
.3 为游戏添加新变量
.4 为游戏添加美术资源
.5 升级最终的游戏源代码
.6 定义游戏专用事件
.7 发布,扩散,收益!
.8 小 结
.9 第级达成,宇宙得救了!
. 之后该怎么办?
作者寄语
附录AAGAL操作码参考
A.1 一行AGAL代码是什么样的?
A.2 AGAL着色器可用的寄存器
A.3 复制数据
A.4 代数操作码
A.5 数学操作码
A.6 三角学操作码
A.7 条件操作码
A.8 向量和矩阵操作码
A.9 纹理采样寄存器
附录 B突击测验答案
WebGL编程指南笔记-第二章 WebGL入门
WebGL程序是JavaScript代码的核心部分,由一系列WebGL函数组成,构建WebGL应用程序的基础。早期网页仅能显示静态,后来HTML5引入了canvas元素,允许通过JavaScript调用canvas提供的绘图函数绘制基本图形。
运行简单的代码,能看到一个蓝色的矩形在网页上绘制出来。canvas的坐标系统定义了绘图区域,使开发者能够精确控制图形的位置和大小。
学习WebGL程序入门,首先了解如何使用canvas的clear方法来清空绘图区域。接着,探索gl.clear(buffer)函数的参数类型和默认值,理解如何控制绘图区域的状态。
在WebGL中绘制点的操作与绘制矩形相似,但增加了着色器程序的概念。通过着色器,WebGL可以实现高度灵活的绘图效果,如光线模拟、视角变化和颜色过渡等。gm1源码
WebGL需要两种着色器:顶点着色器和片元着色器。顶点着色器处理顶点数据,如坐标和颜色,而片元着色器负责处理像素的最终颜色。着色器使用OpenGL ES着色器语言编写,遵循类C的语法。
着色器程序的初始化过程涉及将源代码传递给WebGL系统。通过调用特定函数,将顶点着色器和片元着色器代码组合成一个程序对象,以便WebGL系统能够理解并执行。
学习WebGL坐标系统,其采用三维坐标系,遵循右手规则。在canvas中,坐标轴范围在[-1,1]内,而WebGL坐标系则不同,需要进行映射以确保图形正确绘制。
绘制一个点的练习帮助理解JavaScript与着色器之间的数据传输机制。attribute变量用于从外部向顶点着色器传递数据,而uniform变量则用于存储全局变量或常量。通过这些变量,开发者能够控制图形的位置、背景和颜色。
鼠标绘制功能通过uniform变量实现,允许用户在界面上直接绘制图形。综合练习整合了前面的学习内容,鼓励开发者自行探索和实践。
总结WebGL程序入门阶段的学习,包括画线、点的绘制,以及顶点和片元着色器的基本理解。了解JavaScript如何与着色器交互,为后续学习WebGL高级功能打下基础。
Python的大集成开发环境和代码编辑器(指南)
集成开发环境(IDE)和代码编辑器是编程过程中不可或缺的工具。它们能够显著提高编程效率和质量。为了选择适合的工具,本文将介绍大Python集成开发环境和代码编辑器,并详细分析其优缺点。
首先,让我们了解集成开发环境和代码编辑器的区别。集成开发环境是专为软件开发设计的程序,集成了多种工具如代码编辑器、构建、执行、调试工具和源代码控制。相比之下,代码编辑器通常只提供基础的代码编辑功能,如语法高亮和自动补全,但它可以执行代码和控制调试器,并且能够与源代码控制系统进行交互。优秀的代码编辑器体积更小,运行更迅速,但功能相对较少。
一个出色的Python编程环境应具备以下核心功能:保存和加载工作状态、运行代码、逐步运行代码、标识关键词、变量和符号、识别缩进和冒号等。在选择IDE或编辑器时,考虑是否具备这些功能至关重要。
接下来,我们将介绍支持Python开发的通用编辑器和集成开发环境。首先是Eclipse + PyDev,作为一款开源集成开发环境,它兼容多种语言,并通过PyDev插件支持Python开发。Sublime Text是一款流行的代码编辑器,支持Python代码编辑,兼容所有平台,但需要额外安装Python扩展。Atom也是一个开源编辑器,提供了Python语言的支持,具有良好的兼容性和快速的启动速度。GNU Emacs是一款可扩展、可定制的编辑器,拥有强大的Lisp编程语言支持,适合进行Python开发。VI/VIM是一款经典的模型编辑器,支持Python开发,提供强大的功能和定制脚本支持。Visual Studio和Visual Studio Code分别是由Microsoft开发的全功能集成开发平台和代码编辑器,它们均支持Python开发,但需要安装相应的插件或扩展。PyCharm是一个专门面向Python的全功能集成开发环境,提供了丰富的功能和支持。Spyder是专门为数据科学设计的Python集成开发环境,支持Python数据科学库。Thonny是一款针对新手的集成开发环境,适合初学者使用。
在选择适合自己的Python集成开发环境或代码编辑器时,需要考虑个人需求、编程经验、项目类型等因素。不同的工具适用于不同的场景,因此选择时应根据自身需求和偏好进行选择。希望本文的介绍能帮助您找到最适合自己的Python开发工具。
C语言经典编程例作者:明日科技
《C语言经典编程例》是一本详细实用的编程指南,ISBN为,定价为.8元。本书以C语言为基础,通过个章节深入浅出地介绍和解析了各种编程知识点,包括初识C语言、数据类型、运算符、输入输出、结构设计、循环、数组、函数、指针、数据结构、位运算、存储管理、预处理、文件操作、图形图像处理等。
书中精心挑选的实例来源于实际开发项目,经过技术解析,提供了详细的实现过程,旨在帮助读者快速提升编程技能。除了丰富的源代码和学习资源,如模块库、案例库和题库,还提供微博、QQ、论坛等在线支持,便于读者在学习过程中获取帮助。
本书适合C语言编程新手、有一定基础的提升者、大中专院校师生、软件开发人员以及编程爱好者阅读。通过实例讲解,从基础的输出名言到复杂的图形图像处理,每个实例分为实例说明、实现过程和技术要点,使学习者能够系统掌握C语言的方方面面。
对于想要提高编程效率的读者,书中强调了利用已有代码修改来解决问题的重要性。通过学习本书,无论是编程初学者还是有经验的开发人员,都能找到适合自己的学习路径,提升C语言编程能力。
Flex完全自学手册编辑推荐
本文为Flex编程的全面指南,精心编排,旨在帮助初学者快速掌握。课程内容分为三个部分: 首先,我们从基础概念出发,系统地介绍了Flex的核心原理和基础知识,确保每一位学习者对这项技术有深入的理解。 接着,核心语法部分深入浅出,通过多个精心设计的典型实例,使读者能够实践并熟练运用Flex的关键语法和功能。这些实例覆盖了六个主要模块,每个模块都围绕一个具体的应用场景进行讲解。 为了让学习更加生动直观,我们特别提供了超值的资源包。其中包括源代码、视频演示和电子教案(以PPT形式),总计超过页的编程技术文档,全部免费赠送。此外,还有个深入浅出的编程专题视频讲座,帮助你更全面地掌握 Flex 的实战应用。 无论你是Flex的新手还是进阶者,这个自学手册都能满足你的学习需求,轻松带你步入Flex的世界。立即开始你的学习旅程,掌握Flex编程的精髓吧!扩展资料
《Flex完全自学手册》运用由浅入深、循序渐进的方式,以例子讲述了Flex实现常用的网页模块,Flex开发RIA。全书内容包括了解RIA和Flex、环境配置和开发工具安装、MXML和ActionScript基本语法、事件机制、使用Flex组件、Flex中的数据、数据服务、XML处理、Flex应用的开发部署。《Flex完全自学手册》最后给出了一个完整的Flex应用实例—在线书店系统,具体讲解系统的整体设计思想以及模块。本书适合广大Web应用开发人员、网站管理维护人员和大专院校学生阅读,尤其适合于从事企业级应用开发的技术人员阅读,也为相关工程技术人员的参考书。<c:out value="${ buttons}" escapeXml="false" />
è¿æ¯JSTLæ ç¾çç¨æ³
JSTLç®ä»
JSTLæ¯ä¸ä¸ªä¸æå®åçå¼æ¾æºä»£ç çJSPæ ç¾åºï¼æ¯ç±apacheçjakartaå°ç»æ¥ç»´æ¤çãJSTLåªè½è¿è¡å¨æ¯æJSP1.2åServlet2.3è§èç容å¨ä¸ï¼å¦tomcat 4.xãä½æ¯å¨å³å°æ¨åºçJSP 2.0ä¸æ¯ä½ä¸ºæ åæ¯æçã
JSTLç®åçææ°çæ¬ä¸º1.ï¼æç»åå¸ç为1.0ãJSTLå å«ä¸¤ä¸ªé¨åï¼æ ç¾åºåELï¼Expression Language表达å¼è¯è¨ï¼è¯è¨ãæ ç¾åºç®åæ¯æåç§æ ç¾ï¼
æ ç¾ URIå ç¼ ç¤ºä¾
Core /jstl/core c <c:tagname ...> XML processing /jstl/xml x <x:tagname ...> IN capable formatting /jstl/fmt fmt <fmt:tagname ...> Database access (SQL) /jstl/sql sql <sql:tagname ...>
Coreæ¯æJSPä¸çä¸äºåºæ¬çæä½ï¼
XML processingæ¯æXMLææ¡£çå¤çï¼
IN capable formattingæ¯æ对JSP页é¢çå½é åï¼
Database access (SQL)æ¯æJSP对æ°æ®åºçæä½ã
ç±äºæ¬äººæ°´å¹³æéï¼æ¬æä» ä»ç»Coreæ ç¾ï¼å¦æå ´è¶£ï¼å¯ä¸èµ·æ¢è®¨å ¶å®ä¸ç§æ ç¾ç使ç¨ä¸æ©å ã
ELè¯è¨ä»ç»
ELè¯è¨æ¯JSTLè¾åºï¼è¾å ¥ï¼ä¸ä¸ªJAVA表达å¼ç表示形å¼ã
å¨JSTLä¸ï¼ELè¯è¨åªè½å¨å±æ§å¼ä¸ä½¿ç¨ãELè¯è¨åªè½éè¿å»ºç«è¡¨è¾¾å¼æ¥è¿è¡è°ç¨ãå¨å±æ§å¼ä¸ä½¿ç¨è¡¨è¾¾å¼æä¸ç§æ¹å¼ã
1ã valueå±æ§å å«ä¸ä¸ªè¡¨è¾¾å¼
<some:tag value=""/>
å¨è¿ç§æ åµä¸ï¼è¡¨è¾¾å¼å¼è¢«è®¡ç®åºæ¥å¹¶æ ¹æ®ç±»å转æ¢è§åèµå¼ç»valueå±æ§ãæ¯å¦ï¼<c:out value="" />ä¸çå°±æ¯ä¸ä¸ªELï¼å®ç¸å½äºJSPè¯å¥<%=request.getAttribute(âusernameâ)%>æ<% =session.getAttribute(âusernameâ)%>
2ã valueå±æ§å å«ä¸ä¸ªæå¤ä¸ªå±æ§ï¼è¿äºå±æ§è¢«ææ¬åå²æå´ç»
<some:tag value="sometext"/>
å¨è¿ç§æ åµä¸ï¼è¡¨è¾¾å¼ä»å·¦å°å³è¿è¡è®¡ç®ï¼å¹¶å°ç»æ转æ¢ä¸ºå符串åï¼æ ¹æ®ç±»å转æ¢è§åï¼ï¼å¹¶å°ç»æèµå¼ç»valueå±æ§
3ã valueå±æ§ä» ä» å å«ææ¬
<some:tag value="sometext"/>
å¨è¿ç§æ åµä¸ï¼å符串åå±æ§valueå°æ ¹æ®ç±»å转æ¢è§å转æ¢ä¸ºæ ç¾æå¸æçç±»åã
ELè¯è¨çæä½ç¬¦
åå¾æ个对象æéåä¸çå±æ§å¼
为äºè·å¾éåä¸çå±æ§ï¼ELæ¯æ以ä¸ä¸¤ç§æä½
1ï¼ä½¿ç¨.æä½ç¬¦æ¥è·å¾æååçå±æ§ãä¾å¦è¡¨è¾¾å¼è¡¨æ对象userçusernameå±æ§
2ï¼ ä½¿ç¨[]æä½ç¬¦æ¥è·å¾æååæææ°åæåçå±æ§ã
表达å¼å表达å¼å«ä¹ç¸å
è¡¨è¾¾å¼ è¡¨ærowéåç第ä¸ä¸ªæ¡ç®ã
å¨è¿éuseræ¯ä¸ä¸ªç±»ç对象ï¼å®çå±æ§usernameå¿ é¡»ç¬¦åæ åJavaBeançè§èï¼å³å¿ 须为usernameå±æ§å®ä¹ç¸åºçgetterãsetteræ¹æ³ã
Emptyæä½ç¬¦(空å¼æ£æ¥)
使ç¨emptyæä½ç¬¦æ¥å³å®å¯¹è±¡ãéåæå符串åéæ¯å¦ä¸ºç©ºænullãä¾å¦ï¼
true
å¦ærequestçåæ°å表ä¸çusernameå¼ä¸ºnullï¼å表达å¼çå¼ä¸ºtrueã ELä¹å¯ä»¥ç´æ¥ä½¿ç¨æ¯è¾æä½ç¬¦ä¸nullè¿è¡æ¯è¾ãå¦trueã
æ¯è¾æä½ç¬¦ æä½ç¬¦ æè¿°
==æeq ç¸çæ£æ¥
!=æne ä¸çæ£æ¥
<ælt å°äºæ£æ¥
>ægt 大äºæ£æ¥
<=æle å°äºçäºæ£æ¥
>=æge 大äºçäºæ£æ¥
æ°åè¿ç®ç¬¦ä¸é»è¾è¿ç®ç¬¦åä¸JAVAè¯è¨ç¸åï¼ä¸åå表ã
Coreæ ç¾åº
1ã éç¨æ ç¾
<c:out>
<c:out>æ ç¾ç¨äºå¨JSPä¸æ¾ç¤ºæ°æ®ï¼å®æå¦ä¸å±æ§ å± æ§ æ è¿°æ¯å¦å¿ é¡» 缺çå¼
value è¾åºçä¿¡æ¯ï¼å¯ä»¥æ¯EL表达å¼æ常é æ¯ æ
default value为空æ¶æ¾ç¤ºä¿¡æ¯ å¦ æ
escapeXml 为trueåé¿å¼ç¹æ®çxmlå符é å¦ true
ä¾å: æ¨çç¨æ·åæ¯: <c:out value=ââ default=âguestâ/>
æ¾ç¤ºç¨æ·çç¨æ·åï¼å¦ä¸ºç©ºåæ¾ç¤ºguest
<c:out value=""/>
æå®ä»sessionä¸è·åusernameçå¼æ¾ç¤ºï¼
<c:out value="" />
æ¾ç¤ºusernameçå¼ï¼é»è®¤æ¯ä»request(page)ä¸åï¼å¦ærequestä¸æ²¡æå为usernameç对象åä»sessionä¸åï¼ sessionä¸æ²¡æåä»application(servletContext)ä¸åï¼å¦æ没æåå°ä»»ä½å¼åä¸æ¾ç¤ºã
<c:set>
<c:set>æ ç¾ç¨äºä¿åæ°æ®ï¼å®æå¦ä¸å±æ§ å± æ§ æ è¿° æ¯å¦å¿ 须缺çå¼
value è¦ä¿åçä¿¡æ¯ï¼å¯ä»¥æ¯EL表达å¼æ常é å¦
target éè¦ä¿®æ¹å±æ§çåéåï¼ä¸è¬ä¸ºjavabeançå®ä¾ å¦ æ
property éè¦ä¿®æ¹çjavabeanå±æ§ å¦ æ
var éè¦ä¿åä¿¡æ¯çåé å¦ æ
scope ä¿åä¿¡æ¯çåéçèå´ å¦ page
å¦ææå®äºtargetå±æ§, é£ä¹propertyå±æ§ä¹å¿ é¡»æå®ã
ä¾åï¼ <c:set value="" var="test2" scope=âsessionâ />
å°test.testinfoçå¼ä¿åå°sessionçtest2ä¸ï¼å ¶ä¸testæ¯ä¸ä¸ªjavabeançå®ä¾ï¼testinfoæ¯test对象çå±æ§ã
<c:set target="" property="city" value=""/>
å°å¯¹è±¡cust.addressçcityå±æ§å¼ä¿åå°åécityä¸
<c:remove>
<c:remove>æ ç¾ç¨äºå é¤æ°æ®ï¼å®æå¦ä¸å±æ§ å± æ§ æ è¿° æ¯å¦å¿ 须缺çå¼
var è¦å é¤çåé æ¯ æ
scope 被å é¤åéçèå´ å¦ææèå´ï¼å æ¬pageãrequestãsessionãapplicationç
ä¾å: <c:remove var="test2" scope="session"/>
ä»sessionä¸å é¤test2åéã
2ã æµæ§å¶æ ç¾
<c:if>
<c:if>æ ç¾æå¦ä¸å±æ§ å± æ§ æ è¿° æ¯å¦å¿ é¡» 缺çå¼
test éè¦è¯ä»·çæ¡ä»¶ï¼ç¸å½äºif (...){ }è¯å¥ä¸çæ¡ä»¶ æ¯ æ
var è¦æ±ä¿åæ¡ä»¶ç»æçåéå å¦ æ
scope ä¿åæ¡ä»¶ç»æçåéèå´ å¦ page
<c:choose>
è¿ä¸ªæ ç¾ä¸æ¥åä»»ä½å±æ§
<c:when>
<c:when>æ ç¾æ以ä¸å±æ§ å± æ§ æ è¿° æ¯å¦å¿ é¡» 缺çå¼
test éè¦è¯ä»·çæ¡ä»¶ æ¯ æ
<c:otherwise>
è¿ä¸ªæ ç¾åæ ·ä¸æ¥åä»»ä½å±æ§
ä¾åï¼ <c:if test="">
user.wealthy is true.
</c:if>
å¦æuser.wealthyå¼trueï¼åæ¾ç¤ºuser.wealthy is true.
<c:choose>
<c:when test="">
user.generous is true.
</c:when>
<c:when test="">
user.stingy is true.
</c:when>
<c:otherwise>
user.generous and user.stingy are false.
</c:otherwise>
</c:choose>
åªæå½æ¡ä»¶user.generousè¿åå¼æ¯trueæ¶ï¼ææ¾ç¤ºuser.generous is true.
åªæå½æ¡ä»¶user.stingyè¿åå¼æ¯trueæ¶ï¼ææ¾ç¤ºuser.stingy is true.
å ¶å®ææçæ åµï¼å³user.generousåuser.stingyçå¼é½ä¸ä¸ºtrueï¼å ¨é¨æ¾ç¤ºuser.generous and user.stingy are false.
ç±äºJSTL没æå½¢å¦if (){ â¦} else { â¦}çæ¡ä»¶è¯å¥ï¼æ以è¿ç§å½¢å¼çè¯å¥åªè½ç¨<c:choose>ã<c:when>å<c:otherwise>æ ç¾å ±åæ¥å®æäºã
3ã 循ç¯æ§å¶æ ç¾
<c:forEach>
<c:forEach>æ ç¾ç¨äºéç¨æ°æ®ï¼å®æ以ä¸å±æ§ å± æ§ æ è¿°æ¯å¦å¿ é¡» 缺çå¼
items è¿è¡å¾ªç¯çé¡¹ç® å¦ æ
begin å¼å§æ¡ä»¶ å¦ 0
end ç»ææ¡ä»¶ å¦ éåä¸çæåä¸ä¸ªé¡¹ç®
step æ¥é¿ å¦ 1
var 代表å½å项ç®çåéå å¦ æ
varStatus æ¾ç¤ºå¾ªç¯ç¶æçåé å¦ æ
ä¾åï¼ <c:forEach items="" var="vector">
<c:out value=""/>
</c:forEach>
ç¸å½äºjavaè¯å¥ for (int i=0;i<vectors.size();i++) {
out.println(vectors.get(i));
}
å¨è¿évectorsæ¯ä¸ä¸ªjava.util.Vector对象ï¼éé¢åæ¾çæ¯Stringæ°æ®ï¼vectoræ¯å½å循ç¯æ¡ä»¶ä¸String对象ãå®é ä¸è¿éçvectorså¯ä»¥æ¯ä»»ä½å®ç°äºjava.util. Collectionæ¥å£ç对象ã
<c:forEach begin="0" end="" var="i" step="1">
count=<c:out value=""/><br>
</c:forEach>
è¾åº:
count=0
count=
<c:forTokens>
<c:forTokens>æ ç¾æ以ä¸å±æ§ å± æ§ æ è¿° æ¯å¦å¿ é¡» 缺çå¼
items è¿è¡å¾ªç¯çé¡¹ç® æ¯ æ
delims åå²ç¬¦ æ¯ æ
begin å¼å§æ¡ä»¶ å¦ 0
end ç»ææ¡ä»¶ å¦ éåä¸çæåä¸ä¸ªé¡¹ç®
step æ¥é¿ å¦ 1
var 代表å½å项ç®çåéå å¦ æ
varStatus æ¾ç¤ºå¾ªç¯ç¶æçåé å¦ æ
ä¾å
<c:forTokens items="a:b:c:d" delims=":" var="token">
<c:out value=""/>
</c:forTokens>
è¿ä¸ªæ ç¾ç使ç¨ç¸å½äºjava.util.StringTokenizerç±»ãå¨è¿éå°å符串a:b:c:d以ï¼åå¼å¾ªç¯å次ï¼tokenæ¯å¾ªç¯å°å½ååå²å°çå符串ã
4.å¯¼å ¥æ件åURL
JSTLæ ¸å¿æ ç¾åºæ¯æ使ç¨<c:import>æ¥å å«æ件ï¼ä½¿ç¨<c:url>æ¥æå°åæ ¼å¼åURL,使ç¨<c:redirect>æ¥éå®åURLã
<c:import>
<c:import>æ ç¾å å«å¦å¤ä¸ä¸ªé¡µé¢ä»£ç å°å½å页ï¼å®æ以ä¸å±æ§ å±æ§ æ è¿° æ¯å¦å¿ é¡» 缺çå¼
url éè¦å¯¼å ¥é¡µé¢çurl æ¯ æ
context /åè·æ¬å°webåºç¨ç¨åºçåå å¦ å½ååºç¨ç¨åº
charEncoding ç¨äºå¯¼å ¥æ°æ®çå符é å¦ ISO--1
var æ¥åå¯¼å ¥ææ¬çåéå å¦ page
scope æ¥åå¯¼å ¥ææ¬çåéçåéèå´ å¦ 1
varReader ç¨äºæ¥åå¯¼å ¥ææ¬çjava.io.Readeråéå å¦ æ
varStatus æ¾ç¤ºå¾ªç¯ç¶æçåé å¦ æ
<c:url>
<c:url>æ ç¾è¾åºä¸ä¸ªurlå°åï¼å®æ以ä¸å±æ§ å± æ§ æ è¿° æ¯å¦å¿ 须缺çå¼
url urlå°å æ¯ æ
context /åè·æ¬å°webåºç¨ç¨åºçåå å¦ å½ååºç¨ç¨åº
charEncoding ç¨äºå¯¼å ¥æ°æ®çå符é å¦ ISO--1
var æ¥åå¤çè¿çurlåéåï¼è¯¥åéåå¨url å¦ è¾åºå°é¡µ
scope åå¨urlçåéåçåéèå´ å¦ page
ä¾åï¼
<c:import url="/edit.js" var="newsfeed"/>
å°url /edit.jså å«å°å½å页çå½åä½ç½®ï¼å¹¶å°urlä¿åå°newsfeedåéä¸
<a href="<c:url url="/index.jsp"/>"/>
å¨å½å页çå½åä½ç½®è¾åº<a href="/index.jsp"/>ï¼æ¯å½å页çæå¨çä½ç½®ã
<c:redirect>
<c:redirect>æ ç¾å°è¯·æ±éæ°å®åå°å¦å¤ä¸ä¸ªé¡µé¢ï¼å®æ以ä¸å±æ§ å±æ§ æ è¿° æ¯å¦å¿ é¡» 缺çå¼
url urlå°å æ¯ æ
context /åè·æ¬å°webåºç¨ç¨åºçåå å¦ å½ååºç¨ç¨åº
ä¾åï¼
<c:redirect url="/login.jsp"/>
å°è¯·æ±éæ°å®åå°/login.jsp页ï¼ç¸å½äºresponse.setRedirect("/login.jsp");
<c:param>
<c:param>æ ç¾ç¨æ¥ä¼ éåæ°ç»ä¸ä¸ªéå®åæå å«é¡µé¢ï¼å®æ以ä¸å±æ§å± æ§ æ è¿° æ¯å¦å¿ é¡» 缺çå¼
name å¨requeståæ°ä¸è®¾ç½®çåéå æ¯ æ
value å¨requeståæ°ä¸è®¾ç½®çåéå¼ å¦ æ
ä¾åï¼
<c:redirect url="login.jsp">
<c:param name="id" value=""/>
</c:redirect>
å°åæ°ä»¥id为ååä¼ éå°login.jsp页é¢ï¼ç¸å½äºlogin.jsp?id=
JSTLçä¼ç¹
1ãå¨åºç¨ç¨åºæå¡å¨ä¹é´æä¾äºä¸è´çæ¥å£ï¼æ大ç¨åºå°æé«äºWEBåºç¨å¨ååºç¨æå¡å¨ä¹é´ç移æ¤ã
2ã ç®åäºJSPåWEBåºç¨ç¨åºçå¼åã
3ã以ä¸ç§ç»ä¸çæ¹å¼åå°äºJSPä¸çscriptlet代ç æ°éï¼å¯ä»¥è¾¾å°æ²¡æä»»ä½scriptlet代ç çç¨åºãå¨æä»¬å ¬å¸ç项ç®ä¸æ¯ä¸å 许æä»»ä½çscriptlet代ç åºç°å¨JSPä¸ã
4ãå 许JSPè®¾è®¡å·¥å ·ä¸WEBåºç¨ç¨åºå¼åçè¿ä¸æ¥éæãç¸ä¿¡ä¸ä¹ å°±ä¼ææ¯æJSTLçIDEå¼åå·¥å ·åºç°ã
æ»ç»
ä¸é¢ä»ç»çä» ä» æ¯JSTLçä¸é¨åï¼å¦æè¦ä½¿ç¨JSTLï¼åå¿ é¡»å°jstl.jarå standard.jaræ件æ¾å°classpathä¸ï¼å¦æä½ è¿éè¦ä½¿ç¨XML processingåDatabase access (SQL)æ ç¾ï¼è¿è¦å°ç¸å ³JARæ件æ¾å°classpathä¸ï¼è¿äºJARæä»¶å ¨é¨åå¨äºä¸è½½åæ¥çzipæ件ä¸ãè¿ä¸ªzipæ件å¯ä»¥ä»/products/jsp/jstl/
sunå ¬å¸çJSTLç«ç¹
2ã /bayern/appendixA.pdf
JSTLçåèææ¡£ï¼æ¬æå¾å¤å 容é½æ¯ä»è¿ä¸ªPDFæ件éç¿»è¯çã
4ã ï¼ï¼J2EEç¼ç¨æåï¼1.3çï¼ï¼ï¼
ä»ç»äºJSTLçéå½¢ï¼wroxç书é½æ¯ç²¾åã
全网最适合入门的面向对象编程教程: 类和对象的Python实现-可视化阅读代码神器Sourcetrail的安装使用
入门面向对象编程的最佳指南:利用Sourcetrail的Python实现与可视化教程
Sourcetrail,这个强大的代码可视化神器,为初学者提供了一套完整的Python面向对象编程教程。本文详细介绍了如何下载、安装和使用Sourcetrail,以及它在PyCharm插件中的应用。尤其适合对Python有一定了解,特别是希望在嵌入式上位机开发中运用面向对象编程的读者。
通过Sourcetrail,你可以直观地看到类和对象的结构,如SerialClass、SensorClass和MasterClass之间的继承关系,以及每个类的方法和属性。安装Sourcetrail的过程简单易行,只需下载msi文件并进行安装,遇到问题也有相应的解决策略。
在Sourcetrail中,你可以新建工程,添加源码组,并对Python文件进行分析,所有这些操作都旨在帮助你更好地理解和阅读他人的代码。它还支持与PyCharm等编辑器的无缝集成,让你在编辑过程中就能进行上下文的可视化查阅。
此外,Sourcetrail并非唯一选择,Source Insight和Understand也是同类工具,各有特色。无论是初学者还是有一定经验的开发者,都可以通过这个教程提升代码阅读和理解能力,快速上手面向对象编程。