最近,我已经用c语言实现了HTTP Server。当请求客户端请求服务时,它很好地服务于静态资源。现在,我希望它为Java(tomcat)中的jsp等动态资源提供服务,这意味着某些代码段可以在服务器端执行,并且应该发送响应。我已经在Java中使用反射,注释和其他核心库完成了这种事情,但是我以前从未在c中完成过。
有人可以提前在c.Thanks中指导我这样做。
虽然没有与C中的反射API或注释类似的等效功能,仍然可以实现您所需要的功能,但是需要您做一些繁重的工作。
主要是我想得到的是:
弄清楚资源的类型是
取决于类型,您想使用一些脚本执行它并发送其输出。
对于第1部分,您可以基于资源的扩展。您可以使用系统MIME类型,也可以像这样创建自己的映射:
struct Mapping {
char *extension;
char *command;
};
struct Mapping mapping[] = {
{"jsp", "<command to run jsp>"},
{"sh", "/bin/bash %1"}
};
对于第2部分,服务器收到请求时,它需要提取资源的扩展名,并检查映射以查看与扩展名匹配的条目,获取command
字段并执行命令(在替换参数之后(如果有的话)使用system()
调用。
注意,作为一项作业,这是学习很多东西的好方法,但是如果将其投入生产,这将是一个巨大的安全漏洞!