GoAhead_UserGuide_1
文章目录
- 1.Embedded Javascript
- 2.User’s Guider学习
- 2.1. Request Routing
- 2.2.Route Processing
- 2.3. Request Handlers
1.Embedded Javascript
查看了https://www.embedthis.com/goahead/doc/users/jst.html 官方的User Guider,发现GoAhead使用一种Embedded JavaScript 去支持动态网页。该脚本是Javascript的子集,因为可能嵌入式WebServer不能支持全部的javascript特性。
GoAhead javascript 支持如下Javascript元素
- Javascript Templates (JST)
JST Handler(JST 句柄)
一个JST文件后缀为.jst。然后被jst句柄处理。JST句柄执行JST脚本,然后用处理后的内容替换脚本。用户见到的是一个HTML网页,但是是由JST句柄生成的。 - JST Delimiters(JST定界符)
在JST文件中,使用<% and %>界定符。
Today is <%write (“Hello”+”world”); %>, 网页输出时,< >尖括号内的内容会被Hello World代替 - Scripting Execution(脚本执行)
当用户浏览器请求JST文件时,JST句柄被执行,去响应该请求。当从文件系统中读取JST文件时,采用的单遍扫描模式(one-pass operation). 文件中的文本内容将直接拷贝到客户端(其实就是浏览器),如果找到带有JST界定符,界定符里的内容会被执行被将执行结果返回到客户端。该进程直到文件的末尾。 - 标准函数(Standard Functions)
JST 定义了一个标准函数:write. 该函数直接写数据到客户端,当JST脚本文件中的界定符内为该函数时。 - 定义JST函数(Defining JST functions)
新的JST函数通过websDefinejst创建。并且和一个C函数绑定(This binds a C function to a javascript functions).
定义后,JST 网页就可以使用新的data( )函数
Today’s data is:<% date( ); % >
2.User’s Guider学习
2.1. Request Routing
Overview
强劲的route 引擎,由一系列在route.txt文件中生产的配置构成route.该文件在GoAhead启动时被加载。当接收到客户端的请求,router测试多种路由,并选择最优的路由去处理请求。在处理过程中,路径也许会被重定向或重写。
典型的,在route.txt中存在多种routes.在请求URL之前,配置文件中的路径顺序被测试,去匹配URI格式。总是存在一个catch-all 的路由,去处理请求,当所有之前的路由失败的情况下。
- Route Configuration
在route.txt中通过”route” directives定义了相关的路径。
每一行定义了一个新的路径。当route 指令有多个可选的参数时,每条route 会议’uri’关键字打头。如果客户端URI请求不带有route中的URI前缀,该route 将被跳过。 - Route Ordering
当定义了许多条route在route.txt中,router会顺序去测试每一条路径。因此顺序非常重要。具有相同前导字符串的路径,较长的URI放在前面。 - Route KeyWords.
一条路由指令,由一系列keywords = value pairs决定。所有的routes都必须包含’uri’关键字,其他关键字可选。如下为支持的关键字:
- Keyword Value Separators
有些关键字可能包含多个值(abilities, extensions, methods).在这种情况下,value通过’|’或’,’分隔开。当所有的values都生效规定使用’,’。当只需要其中之一的values生效,则使用’|’。特别的,abilities使用’,’进行分隔,extensions和methods使用’|’。
2.2.Route Processing
处理一个请求,GoAhead 路由引擎检查每一条配置的routes, 从而决定与请求最匹配的路径。因此路由顺序特别重要,每一条路由将被测试。如果某一条路径匹配失败,该路径被丢弃转向下一条路径。
Routing Steps
– Protocol Matching – 测试请求协议是否匹配
– Method Matching – 测试请求方法是否匹配
– Extension Matching—测试请求扩展名是否匹配
– URI Matching –测试请求URI是否匹配Protocol Matching
可选步骤。Method Macthing
可选步骤Extension Macthing
可选步骤。路径能被配置为只匹配特定文件的扩展。扩展匹配会测试实际的请求文件名,在支持路径扩展前。默认情况下。路径支持所有扩展。URI Matching
强制。Route Example
Redirecting Requests
将旧的文件重定向至新的文件
Redirecting HTTP to SSL
重定向所有的连接通过SSL
Controlling Access with Digest Authentication
Digest 认证
Enable the TRACE and OPTIONS methods
TRACE和 OPTIONS方法默认关闭,以增强安全性。不能对所有的routes开发,只能对特定的route开放。
Define a New Extension
为了确保带有文件扩展的内容的请求由特殊的Handler去处理, 可以使用externions和handler关键字:
Catch-All Route
2.3. Request Handlers
GoAhead Handlers
用户可以扩展自定的handler去处理Http请求,从而处理自己想要的内容。详情内容请查看Developer’s Guide内的Creating Handlers内容。
Request Processing
– 当接收到客户端请求,GoAhead解析HTTP 头然后由GoAhead路由决定最优路径。一条route包含全部的信息,这些信息能决定如何处理一个请求,包括请求处理程序和请求认证。GoAhead按顺序匹配route,然后选择最先匹配到的route。
– 选择route的最后一步是调用理想的处理程序的match( )回调函数。如果match返回true,该处理程序则被选中。如果返回flase, 该handler随同该route会被跳过,然后route 选择处理流程将继续执行。Standard Handlers
GoAhead有一套处理程序处理标准的内容Action Handler
Action 处理程序将URLs映射到简单的C函数。提供C函数服务的处理程序绑定到URLs。举例:配置URLs的action 处理程序,通过以’/action’为开头
查看GoActions获取更多信息Continue Handler
File Handler
JST Handler
为动态内容相关的Javascript templates服务的处理程序。详见 Javascript Templates.
当请求的URI 扩展为asp/jst时,会使用JST 处理程序。注意:可以创建多重routes ,这些routes使用相同的处理请求程序。Redirect Handler
处理route重定向。重定向处理,将处理客户端的请求导向其他内容。登录认证时导向login,logout,logged页面。
HTTP请求使用SSL.Upload Handler
上传处理程序。该处理程序是一种特殊的情况,会过滤上传的文件。不是一个“终端”处理程序(not a “terminal” handler),可以和其他处理程序一起应用。Upload 处理程序自动配置,不需要在路由表中定义。
GoAhead_UserGuide_1相关推荐
最新文章
- 2022-2028年中国儿童保健品行业市场研究及前瞻分析报告
- SILK 的 Delay Decision 和 Dither
- java集合类——Stack栈类与Queue队列
- java日期大小比较(亲测)
- 拼多多11.11:无定金、不预售,“好牌子、好实惠”底价直降
- android之XmlSerializer序列化XML(写入) android之XmlSerializer序列化XML(写入)...
- Androrid Studio Debug Warning:debug info can be unavailable
- 使用R包qpdf用一行代码将多个pdf合并为一个pdf
- 哪些版本linux支持arm,腾讯QQ Linux版本正式回归 支持x64 ARM64 MIPS64架构
- spark安装以及hive on spark和spark on hive 的配置
- Unity中实现列表中元素随机排序
- 五笔字型初学者常见问题答疑
- 吴翰清:云计算安全是“皇帝的新装”么?
- 键盘没有Home键和End键的完美解决办法
- 幻方解法之horse法生成奇阶幻方
- Java基础知识(八) Java平台与内存管理
- 2019CVPR单目深度估计综述
- KUKA youbot机械臂与Moveit工具包(2)
- 知识总结--性能优化总结(摘录+转载)
- IDEA中java文件出现小黄色的J
热门文章
- 用MSYS2安装mingw
- Echarts不显示X轴Y轴网格线
- 使用PyQT进行可视化编程
- 微信公众号支付,iframe跨域
- 第106篇 Compound 中的 Governance
- PCB相关知识-PCB各层的用途
- 各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式
- “数学界的诺贝尔奖”出炉,4人获奖
- 诺贝尔经济学奖计算机,诺贝尔经济学奖获得者克鲁格曼曾经指出:在经历数千年之后,现代社会运用大型计算机,对成千上万的因素进行...
- Editor.md安装使用(markdown)