1.VisualBasic编程典型实例解析内容提要
2.Python 进阶指南(编程轻松进阶):五、编程编程发现代码异味
3.Adobe Flash 11 Stage3D(Molehill)游戏编程初学者指南图书目录
4.WebGL编程指南笔记-第二章 WebGL入门
5.Python的指南指南10大集成开发环境和代码编辑器(指南)
6.C语言经典编程282例作者:明日科技
VisualBasic编程典型实例解析内容提要
本书详细解析了VisualBasic编程的典型实例,分为三个章节,源码源码以便读者根据实际应用深入学习。下载首先,编程编程第1章关注基础与编程实践,指南指南超低狂牛源码精心挑选的源码源码个实例旨在引导初学者快速掌握VisualBasic的编程技巧,通过实际操作,下载让编程入门变得更加直观易懂。编程编程 紧接着,指南指南第2章专为图形图像与数据库编程提供指导。源码源码这里有个实用的下载实例,展示了如何利用VisualBasic进行图形操作和数据库管理,编程编程帮助编程人员更好地理解和应用这些功能。指南指南 最后,源码源码第3章深入探讨网络与通信以及计算机安全与维护的编程实例。通过个实例,读者将了解到如何使用VisualBasic实现这些高级领域的编程,无论你是初学者还是有一定经验的开发者,都能从中获益匪浅。 全书结构严谨,内容易于理解,实例既典型又实用,无论你是初学者寻求入门指南,还是有一定基础的开发者寻求参考,这本书都将是你学习VisualBasic编程的强大工具。扩展资料
本书是VisualBasic编程人员的经验之作,通过一个个典型实例解析总结了VisualBasic编程难点和关键技术,详尽而具体地解说了VisualBasic编程的思路、方法和技巧,浓缩了VisualBasic应用程序设计的精华。全书每个实例都按照设计思路、编程原理以及实例详解方法和步骤来解说。尤其是对实例的核心源代码进行了注释,每一个实例都具有很强的实用性、针对性和代表性。书中实例源程序代码可到网上下载。Python 进阶指南(编程轻松进阶):五、c 聊天源码发现代码异味
导致程序崩溃的代码显然存在错误,但并非唯一识别问题的方式。其他迹象表明程序可能包含更微妙的错误或难以阅读的代码。就像气体的味道可指示气体泄漏,烟雾的味道可指示火灾,代码异味同样指示潜在的源代码模式错误。代码异味不等于问题,但它确实提示您应关注程序。本章列举了常见的代码异味,理解并预防一个 bug 比遇到后调试并修复要节省时间。程序中重复代码是一个典型异味,通过将其放入函数或循环,确保将来的更改只在一处进行。魔术数字,即代码中无法解释的数值,通过替换为具有描述性名称的常量,增强代码可读性。注释掉的代码和僵尸代码,尽管不被运行,可能误导后来的开发者,最好移除,并利用版本控制系统如 Git 跟踪变更。打印调试使用 print() 函数显示调试信息,尽管简便,但依赖调试和日志诊断错误通常更为有效。带有数字后缀的变量,如 x1、x2、x3 等,通常最好替换为包含列表的单个变量。Python 中使用模块而非类来组合函数,类仅包含静态方法或仅有一个方法是一种异味,应将代码移入模块。列表表达式简洁,但嵌套列表推导式不易阅读。处理异常的空 except 块,以及简短、stp协议源码分析晦涩的错误消息,都是代码异味。最后,过时或误导性的编程建议,如每个函数仅有一个 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 章 计时器、输入、实体:游戏性元素!jni.h 源码
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可以实现高度灵活的绘图效果,如光线模拟、视角变化和颜色过渡等。为知笔记 源码
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也是同类工具,各有特色。无论是初学者还是有一定经验的开发者,都可以通过这个教程提升代码阅读和理解能力,快速上手面向对象编程。