Java與PHPweb開發比較 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 網站建設 >

Java與PHPweb開發比較

發表時(shí)間:2018-11-1

發布人(rén):融晨科技

浏覽次數:39

一直很想寫一篇這(zhè)樣的(de)文章。Java和(hé / huò)PHP作爲(wéi / wèi)web開發的(de)2個(gè)主流語言,他(tā)們之(zhī)間有什麽不(bù)同呢?在(zài)項目開發時(shí),我們應該怎麽去做選擇。

1.運行方式

1.1 PHP的(de)運行方式

客戶端發送http請求到(dào)nginx,nginx通過fastcgi與php-fpm進程通信。php-fpm執行完成後把結果返回給nginx,最終輸出(chū)到(dào)客戶端浏覽器。

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

1.2 Java的(de)運行方式

Servlet容器,比如Tomcat和(hé / huò)Jetty等。一個(gè)Servlet容器可以(yǐ)運行多個(gè)Servlet實例。

當客戶端第一次請求某個(gè)Servlet時(shí),Servlet容器将會根據web.xml配置文件實例化這(zhè)個(gè)Servlet類,此時(shí)它貯存于(yú)内存中。當有新的(de)客戶端請求該Servlet時(shí),一般不(bù)會再實例化該Servlet類,也(yě)就(jiù)是(shì)有多個(gè)線程在(zài)使用這(zhè)個(gè)實例。每一個(gè)請求都是(shì)一個(gè)線程,而(ér)不(bù)是(shì)進程,因此,Servlet對請求的(de)處理的(de)性能非常高。

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

總結:PHP是(shì)以(yǐ)多進程的(de)方式運行,并且使用fastcgi與web通訊;Java需要(yào / yāo)依賴Tomcat等Servlet容器,以(yǐ)多線程的(de)方式運行。

2.接受請求,GET/POST參數處理

JAVAPHPGET

均是(shì)通過HttpServletRequest.getParameter方法獲取

GET/POST根據方法名定義doGet/doPost,如果是(shì)spring,使用RequestMapping定義

使用$_GET全局變量獲取POST使用$_POST全局變量獲取原始請求體BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
String body = reader.readLine();file_get_contents("php://input");請求來(lái)源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

JAVAPHPSession存儲

默認存儲在(zài)heap中,創建的(de)cookies默認名稱是(shì)JSESSIOINID。servlet.destory()方法會導緻session丢失。

默認使用文件方式,存儲在(zài)/tmp目錄下,創建的(de)cookies默認名稱是(shì)PHPSESSID。

重啓php-fpm并不(bù)會丢失數據。

調用方式

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

寫入:

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

讀取:$_SESSION['key']

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

相關案例查看更多