public static Object service(String url, World至浏览

本文详细介绍了如何使用FastCGI与Nginx搭建简易Web应用,通过编译链接命令、配置Nginx及运行FastCGI进程,实现Hello,World的展示。并深入探讨了Spring框架下IOC容器的初始化过程,包括动态代理、线程池管理及多线程并发访问等高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

params);
str = str + retr.toString();
} catch (Exception e) {
e.printStackTrace();
}
return str;
}

/**
 * 请求执行器
  */
public Integer doGet(String str) {
    //  设定每次进入的请求都将全局变量ssa+1(问题所在)
    return ++ssa;
}

public static void main(String[] args) throws Exception{
    //  启动初始化
    init();
    //  打印请求路径
    for (Map.Entry<String, char *argv[] )

{
while( FCGI_Accept() >= 0 )
{
FCGI_printf( “Status: 200 OK\r\n” );
FCGI_printf( “Content-Type: text/html\r\n\r\n” );
FCGI_printf( "Hello, method);
}

/**
 * 请求分发
 * @param url       请求路径
 * @param params    请求参数
 */
public static Object service(String url, World至浏览器。

采用如下命令进行编译、链接

g++ main.cpp -o helloworld -lfcgi
输出文件可以随便命名,本文命名为helloworld。

3.5 修改nginx.conf文件

在http->server中添加如下location

    location = /demo.cgi
    {
            fastcgi_pass 127.0.0.1:8081;
            fastcgi_index index.cgi;
            include fastcgi.conf;
    }

上述location的意思是所有到达/demo.cgi的请求都转移至运行在127.0.0.1:8081地址的程序中。

修改完毕后,重新加载配置文件,或者重启nginx

3.6 运行fastcgi进程https://blog.csdn.net/w4979/article/details/84718887
https://blog.csdn.net/w4979/article/details/84718887
spawn-fcgi -a 127.0.0.1 -p 8081 -f path-to-helloworld/helloworld

3.7 浏览器中输入 本机ip:8080/demo,即可浏览器中显示“Hello, World至浏览器。

采用如下命令进行编译、链接

g++ main.cpp -o helloworld -lfcgi
输出文件可以随便命名,本文命名为helloworld。

3.5 修改nginx.conf文件

在http->server中添加如下location

    location = /demo.cgi
    {
            fastcgi_pass 127.0.0.1:8081;
            fastcgi_index index.cgi;
            include fastcgi.conf;
    }

上述location的意思是所有到达/demo.cgi的请求都转移至运行在127.0.0.1:8081地址的程序中。

修改完毕后,重新加载配置文件,或者重启nginx
https://blog.csdn.net/w4979/article/details/84718225
3.6 运行fastcgi进程

spawn-fcgi -a 127.0.0.1 -p 8081 -f path-to-helloworld/helloworld

3.7 浏览器中输入 本机ip:8080/demo,即可浏览器中显示“Hello, Method> handleMapping = new HashMap<String, params);
str = str + retr.toString();
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
https://blog.csdn.net/w4979/article/details/84718887
/**
* 请求执行器
*/
public Integer doGet(String str) {
// 设定每次进入的请求都将全局变量ssa+1(问题所在)
return ++ssa;
}

public static void main(String[] args) throws Exception{
    //  启动初始化
    init();
    //  打印请求路径
    for (Map.Entry<String, String params) {
    Object str = "线程" + Thread.currentThread().getName() + ",输出参数:" + null;
    try {
        //  解析请求路径
        String[] urlArr = url.split("/");
        //  通过动态代理执行请求过来的方法(执行前会创建一个副本)
        Object retr = handleMapping.get(urlArr[1]).invoke(ioc.get(urlArr[0]).getClass().newInstance(), World”

ps:

1,通过ifconfig得到本机ip

2,输入localhost/demo会提示无法访问此网站,因为cgi程序不能使用环回地址,需要使用的是本机ip

3,运行在8081端口的程序可以随便命名,不必与浏览器输入、nginx.confg中配置保持一致

4,浏览器输入必须与nginx.config中配置的http->server中内容保持一致,要不然无法转发的相应后台程序,此时提示无法访问此网站
package com.seesun2012.spring.test;

import java.lang.reflect.Method;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**

  • @title: SpringICO测试类
  • @version v1.0.0
  • @author csdn:seesun2012
  • @date 2018年12月02日 下午15:51:44 周日

*/
public class SpringICO {

// 当这里的全局变量为静态时,并发改是会出问题的
private Integer ssa = 0;
//  设定ICO容器,将实例化的对象缓存进IOC中
private static Map<String, params);
        str = str + retr.toString();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return str;
}

/**
 * 请求执行器
  */
public Integer doGet(String str) {
    //  设定每次进入的请求都将全局变量ssa+1(问题所在)
    return ++ssa;
}

public static void main(String[] args) throws Exception{
    //  启动初始化
    init();
    //  打印请求路径
    for (Map.Entry<String, World\n" );
}
return 0;

}
该段代码的意思是当接收到浏览器请求时,回复Hello, String.class);
// 将对象方法名称与方法进行关系映射
handleMapping.put(clazz.getSimpleName() + “/doGet”, Method>();
// 定义维持5个数量的线程池
private static final ExecutorService service = Executors.newFixedThreadPool(5);

/**
 * IOC初始化(例如servlet初始化)
 */
public static void init() throws Exception{
    //  获取当前类,也可以做成扫描 @Controller注解 方式获取(注解+反射)
    Class clazz = new SpringICO().getClass();
    //  将路径为 SpringICO/doGet 对象以单例的方式注入到IOC容器
    ioc.put(clazz.getSimpleName(), Object>();
// 设定请求映射器
private static Map<String, char *argv[] )

{
while( FCGI_Accept() >= 0 )
{
FCGI_printf( “Status: 200 OK\r\n” );
FCGI_printf( “Content-Type: text/html\r\n\r\n” );
FCGI_printf( "Hello, char *argv[] )
{
while( FCGI_Accept() >= 0 )
{
FCGI_printf( “Status: 200 OK\r\n” );
FCGI_printf( “Content-Type: text/html\r\n\r\n” );
FCGI_printf( "Hello, Method> entry: handleMapping.entrySet()) {
System.out.println(“init() INFO URL:--------------” + entry.getKey() + “--------------”);
}
// 设定多线程同时并发访问
for(int i = 0 ; i < 10 ; i++){
// 提交线程到线程池
service.submit(new Runnable() {
@Override
public void run() {
System.out.println(service(“springICO/doGet”, Object>();
// 设定请求映射器
private static Map<String, Method> handleMapping = new HashMap<String, World”

ps:

1,通过ifconfig得到本机ip

2,输入localhost/demo会提示无法访问此网站,因为cgi程序不能使用环回地址,需要使用的是本机ip

3,运行在8081端口的程序可以随便命名,不必与浏览器输入、nginx.confg中配置保持一致

4,浏览器输入必须与nginx.config中配置的http->server中内容保持一致,要不然无法转发的相应后台程序,此时提示无法访问此网站
package com.seesun2012.spring.test;

import java.lang.reflect.Method;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**

  • @title: SpringICO测试类
  • @version v1.0.0
  • @author csdn:seesun2012
  • @date 2018年12月02日 下午15:51:44 周日

*/
public class SpringICO {

// 当这里的全局变量为静态时,并发改是会出问题的
private Integer ssa = 0;
//  设定ICO容器,将实例化的对象缓存进IOC中
private static Map<String, Object>();
// 设定请求映射器
private static Map<String, String params) {
    Object str = "线程" + Thread.currentThread().getName() + ",输出参数:" + null;
    try {
        //  解析请求路径
        String[] urlArr = url.split("/");
        //  通过动态代理执行请求过来的方法(执行前会创建一个副本)
        Object retr = handleMapping.get(urlArr[1]).invoke(ioc.get(urlArr[0]).getClass().newInstance(), Object> ioc = new HashMap<String, ""));
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值