Java与PHPweb开发比较

78 篇文章 1 订阅

一直很想写一篇这样的文章。Java和PHP作为web开发的2个主流语言,他们之间有什么不同呢?在项目开发时,我们应该怎么去做选择。

1.运行方式

1.1 PHP的运行方式

客户端发送http请求到nginx,nginx通过fastcgi与php-fpm进程通信。php-fpm执行完成后把结果返回给nginx,最终输出到客户端浏览器。

参考fastcgi:https://baike.baidu.com/item/fastcgi/10880685?fr=aladdin

1.2 Java的运行方式

Servlet容器,比如Tomcat和Jetty等。一个Servlet容器可以运行多个Servlet实例。

当客户端第一次请求某个Servlet时,Servlet容器将会根据web.xml配置文件实例化这个Servlet类,此时它贮存于内存中。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。每一个请求都是一个线程,而不是进程,因此,Servlet对请求的处理的性能非常高。

参考:https://www.ibm.com/developerworks/cn/java/j-lo-servlet/

总结:PHP是以多进程的方式运行,并且使用fastcgi与web通讯;Java需要依赖Tomcat等Servlet容器,以多线程的方式运行。

2.接受请求,GET/POST参数处理

 JAVAPHP
GET

均是通过HttpServletRequest.getParameter方法获取

GET/POST根据方法名定义doGet/doPost,如果是spring,使用RequestMapping定义

使用$_GET全局变量获取
POST使用$_POST全局变量获取
原始请求体BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
String body = reader.readLine();
file_get_contents("php://input");
请求来源IPHttpServletRequest.getRemoteAddr方法$_SERVER["REMOTE_ADDR"]

3.响应请求

 JAVAPHP
自定义状态码HttpServletResponse.setStatus(404);header("HTTP/1.1 404 Not Found"); 
重定向response.sendRedirect("/hello");header("location: [url]"); 

4.Cookies & Session

 JAVAPHP
Session存储

默认存储在heap中,创建的cookies默认名称是JSESSIOINID。servlet.destory()方法会导致session丢失。

默认使用文件方式,存储在/tmp目录下,创建的cookies默认名称是PHPSESSID。

重启php-fpm并不会丢失数据。

调用方式

读取:HttpServletRequest.getSession().getValue(name);

写入:

HttpServletRequest.getSession().setAttribute(name, value);

读取:$_SESSION['key']

写入:$_SESSION['key'] = mixed

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值