新建java第一種方法:

保定網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái)到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
1。首先右擊鼠標(biāo),新建一個(gè)文本文檔。
2。更改文本文檔的后綴名為
.java
。注意文件名必須和類(lèi)名相同。
如果你的電腦沒(méi)有顯示后綴名的話(huà)需要對(duì)電腦進(jìn)行一定的設(shè)置。
3。打開(kāi)計(jì)算機(jī)——組織——文件夾選項(xiàng)——查看——將隱藏文件夾選項(xiàng)取消勾選即可。
建議將這個(gè)選項(xiàng)取消勾選,有很多的惡意程序會(huì)侵入我們的電腦,取消勾選可以很好的查看病毒等文件的類(lèi)型。
4。右擊建好的文檔,選擇編輯即可進(jìn)行java的編寫(xiě)。
在編寫(xiě)的時(shí)候我們有一定的格式,java語(yǔ)言的格式是為了我們?nèi)蘸蟾某绦蚍奖愣?guī)定的,我們一定要遵循這種格式編寫(xiě)。
第二種方法:
1直接新建一個(gè)記事本文檔,然后選擇保存。
注意保存時(shí)額位置,不要等到保存完卻找不到文件到哪了。
2在選擇保存的窗口中輸入后綴“.java”,然后保存即可。注意文件名必須和類(lèi)名相同。
3同樣右擊文件,選擇編輯即可在文件中進(jìn)行編輯了。
前兩個(gè)大括號(hào)之間回車(chē),第二對(duì)大括號(hào)有一個(gè)間隔,直接按TAb鍵即可。
測(cè)試運(yùn)行java程序:
打開(kāi)運(yùn)行命令,也可以直接在開(kāi)菜單中輸入CMD調(diào)用命令窗口。
你的文件保存在哪里就將你的文件目錄輸入到命令提示符窗口中,例如我的是D盤(pán)根目錄,所以我輸入“d:”。
編譯java文件,生成class文件:
在命令提示符中輸入“javac
文件名.java”,我的文件名為A,所以輸入javac
A.java然后回車(chē),等待編譯。
運(yùn)行文件:
繼續(xù)輸入“java
文件名”然后回車(chē)就可以運(yùn)行我們寫(xiě)好的文件了。
Java代碼編寫(xiě)的30條實(shí)踐建議,很多人認(rèn)為學(xué)習(xí)java需要較好的計(jì)算機(jī)語(yǔ)言基礎(chǔ),而事實(shí)上高中學(xué)歷的學(xué)習(xí)java,月薪過(guò)萬(wàn)的比比皆是,Java代碼編寫(xiě)的30條實(shí)踐建議,java知識(shí)點(diǎn)學(xué)習(xí)貴在積累。
Java代碼編寫(xiě)的30條實(shí)踐建議:
(1) 類(lèi)名首字母應(yīng)該大寫(xiě)。字段、方法以及對(duì)象(句柄)的首字母應(yīng)小寫(xiě)。對(duì)于所有標(biāo)識(shí)符,其中包含的所有單詞都應(yīng)緊靠在一起,而且大寫(xiě)中間單詞的首字母。
例如:
ThisIsAClassName
thisIsMethodOrFieldName
若在定義中出現(xiàn)了常數(shù)初始化字符,則大寫(xiě)static final基本類(lèi)型標(biāo)識(shí)符中的所有字母。這樣便可標(biāo) 志出它們屬于編譯期的常數(shù)。
Java包(Package)屬于一種特殊情況:它們?nèi)际切?xiě)字母,即便中間的單詞亦是如此。對(duì)于域名擴(kuò)展名稱(chēng),如com,org,net或者edu等,全部都應(yīng)小寫(xiě)(這也是Java 1.1和Java 1.2的區(qū)別之一)。
(2) 為了常規(guī)用途而創(chuàng)建一個(gè)類(lèi)時(shí),請(qǐng)采取"經(jīng)典形式",并包含對(duì)下述元素的定義:
equals()
hashCode()
toString()
clone()(implement Cloneable)
implement Serializable
(3) 對(duì)于自己創(chuàng)建的每一個(gè)類(lèi),都考慮置入一個(gè)main(),其中包含了用于測(cè)試那個(gè)類(lèi)的代碼。為使用一個(gè)項(xiàng)目中的類(lèi),我們沒(méi)必要?jiǎng)h除測(cè)試代碼。若進(jìn)行了任何形式的改動(dòng),可方便地返回測(cè)試。這些代碼也可作為如何使用類(lèi)的一個(gè)示例使用。
(4) 應(yīng)將方法設(shè)計(jì)成簡(jiǎn)要的、功能性單元,用它描述和實(shí)現(xiàn)一個(gè)不連續(xù)的類(lèi)接口部分。理想情況下,方法應(yīng)簡(jiǎn)明扼要。若長(zhǎng)度很大,可考慮通過(guò)某種方式將其分割成較短的幾個(gè)方法。這樣做也便于類(lèi)內(nèi)代碼的重復(fù)使用(有些時(shí)候,方法必須非常大,但它們?nèi)詰?yīng)只做同樣的一件事情)。
(5) 設(shè)計(jì)一個(gè)類(lèi)時(shí),請(qǐng)?jiān)O(shè)身處地為客戶(hù)程序員考慮一下(類(lèi)的使用方法應(yīng)該是非常明確的)。然后,再設(shè)身處地為管理代碼的人考慮一下(預(yù)計(jì)有可能進(jìn)行哪些形式的修改,想想用什么方法可把它們變得更簡(jiǎn)單)。
(6) 使類(lèi)盡可能短小精悍,而且只解決一個(gè)特定的問(wèn)題。下面是對(duì)類(lèi)設(shè)計(jì)的一些建議:
■一個(gè)復(fù)雜的開(kāi)關(guān)語(yǔ)句:考慮采用"多形"機(jī)制
■數(shù)量眾多的方法涉及到類(lèi)型差別極大的操作:考慮用幾個(gè)類(lèi)來(lái)分別實(shí)現(xiàn)
■許多成員變量在特征上有很大的差別:考慮使用幾個(gè)類(lèi)
(7) 讓一切東西都盡可能地"私有"--private。可使庫(kù)的某一部分"公共化"(一個(gè)方法、類(lèi)或者一個(gè)字段等等),就永遠(yuǎn)不能把它拿出。若強(qiáng)行拿出,就可能破壞其他人現(xiàn)有的代碼,使他們不得不重新編寫(xiě)和設(shè)計(jì)。若只公布自己必須公布的,就可放心大膽地改變其他任何東西。
在多線(xiàn)程環(huán)境中,隱私是特別重要的一個(gè)因素--只有private字段才能在非同步使用的情況下受到保護(hù)。
(8) 謹(jǐn)惕"巨大對(duì)象綜合癥"。對(duì)一些習(xí)慣于順序編程思維、且初涉OOP領(lǐng)域的新手,往往喜歡先寫(xiě)一個(gè)順序執(zhí)行的程序,再把它嵌入一個(gè)或兩個(gè)巨大的對(duì)象里。根據(jù)編程原理,對(duì)象表達(dá)的應(yīng)該是應(yīng)用程序的概念,而非應(yīng)用程序本身。
(9) 若不得已進(jìn)行一些不太雅觀的編程,至少應(yīng)該把那些代碼置于一個(gè)類(lèi)的內(nèi)部。
(10) 任何時(shí)候只要發(fā)現(xiàn)類(lèi)與類(lèi)之間結(jié)合得非常緊密,就需要考慮是否采用內(nèi)部類(lèi),從而改善編碼及維護(hù)工作(參見(jiàn)第14章14.1.2小節(jié)的"用內(nèi)部類(lèi)改進(jìn)代碼")。
(11) 盡可能細(xì)致地加上注釋?zhuān)⒂胘avadoc注釋文檔語(yǔ)法生成自己的程序文檔。
(12) 避免使用"魔術(shù)數(shù)字",這些數(shù)字很難與代碼很好地配合。如以后需要修改它,無(wú)疑會(huì)成為一場(chǎng)噩夢(mèng),因?yàn)楦静恢?100"到底是指"數(shù)組大小"還是"其他全然不同的東西"。所以,我們應(yīng)創(chuàng)建一個(gè)常數(shù),并為其使用具有說(shuō)服力的描述性名稱(chēng),并在整個(gè)程序中都采用常數(shù)標(biāo)識(shí)符。這樣可使程序更易理解以及更易維護(hù)。
(13) 涉及構(gòu)建器和異常的時(shí)候,通常希望重新丟棄在構(gòu)建器中捕獲的任何異常--如果它造成了那個(gè)對(duì)象的創(chuàng)建失敗。這樣一來(lái),調(diào)用者就不會(huì)以為那個(gè)對(duì)象已正確地創(chuàng)建,從而盲目地繼續(xù)。
(14) 當(dāng)客戶(hù)程序員用完對(duì)象以后,若你的類(lèi)要求進(jìn)行任何清除工作,可考慮將清除代碼置于一個(gè)良好定義的方法里,采用類(lèi)似于cleanup()這樣的名字,明確表明自己的用途。除此以外,可在類(lèi)內(nèi)放置一個(gè)boolean(布爾)標(biāo)記,指出對(duì)象是否已被清除。在類(lèi)的finalize()方法里,請(qǐng)確定對(duì)象已被清除,并已丟棄了從RuntimeException繼承的一個(gè)類(lèi)(如果還沒(méi)有的話(huà)),從而指出一個(gè)編程錯(cuò)誤。在采取象這樣的方案之前,請(qǐng)確定finalize()能夠在自己的系統(tǒng)中工作(可能需要調(diào)用System.runFinalizersOnExit(true),從而確保這一行為)。
(15) 在一個(gè)特定的作用域內(nèi),若一個(gè)對(duì)象必須清除(非由垃圾收集機(jī)制處理),請(qǐng)采用下述方法:初始化對(duì)象;若成功,則立即進(jìn)入一個(gè)含有finally從句的try塊,開(kāi)始清除工作。
(16) 若在初始化過(guò)程中需要覆蓋(取消)finalize(),請(qǐng)記住調(diào)用super.finalize()(若Object屬于我們的直接超類(lèi),則無(wú)此必要)。在對(duì)finalize()進(jìn)行覆蓋的過(guò)程中,對(duì)super.finalize()的調(diào)用應(yīng)屬于最后一個(gè)行動(dòng),而不應(yīng)是第一個(gè)行動(dòng),這樣可確保在需要基礎(chǔ)類(lèi)組件的時(shí)候它們依然有效。
(17) 創(chuàng)建大小固定的對(duì)象集合時(shí),請(qǐng)將它們傳輸至一個(gè)數(shù)組(若準(zhǔn)備從一個(gè)方法里返回這個(gè)集合,更應(yīng)如此操作)。這樣一來(lái),我們就可享受到數(shù)組在編譯期進(jìn)行類(lèi)型檢查的好處。此外,為使用它們,數(shù)組的接收者也許并不需要將對(duì)象"造型"到數(shù)組里。
(18) 盡量使用interfaces,不要使用abstract類(lèi)。若已知某樣?xùn)|西準(zhǔn)備成為一個(gè)基礎(chǔ)類(lèi),那么第一個(gè)選擇應(yīng)是將其變成一個(gè)interface(接口)。只有在不得不使用方法定義或者成員變量的時(shí)候,才需要將其變成一個(gè)abstract(抽象)類(lèi)。接口主要描述了客戶(hù)希望做什么事情,而一個(gè)類(lèi)則致力于(或允許)具體的實(shí)施細(xì)節(jié)。
(19) 在構(gòu)建器內(nèi)部,只進(jìn)行那些將對(duì)象設(shè)為正確狀態(tài)所需的工作。盡可能地避免調(diào)用其他方法,因?yàn)槟切┓椒赡鼙黄渌烁采w或取消,從而在構(gòu)建過(guò)程中產(chǎn)生不可預(yù)知的結(jié)果(參見(jiàn)第7章的詳細(xì)說(shuō)明)。
(20) 對(duì)象不應(yīng)只是簡(jiǎn)單地容納一些數(shù)據(jù);它們的行為也應(yīng)得到良好的定義。
(21) 在現(xiàn)成類(lèi)的基礎(chǔ)上創(chuàng)建新類(lèi)時(shí),請(qǐng)首先選擇"新建"或"創(chuàng)作"。只有自己的設(shè)計(jì)要求必須繼承時(shí),才應(yīng)考慮這方面的問(wèn)題。若在本來(lái)允許新建的場(chǎng)合使用了繼承,則整個(gè)設(shè)計(jì)會(huì)變得沒(méi)有必要地復(fù)雜。
(22) 用繼承及方法覆蓋來(lái)表示行為間的差異,而用字段表示狀態(tài)間的區(qū)別。一個(gè)非常極端的例子是通過(guò)對(duì)不同類(lèi)的繼承來(lái)表示顏色,這是絕對(duì)應(yīng)該避免的:應(yīng)直接使用一個(gè)"顏色"字段。
(23) 為避免編程時(shí)遇到麻煩,請(qǐng)保證在自己類(lèi)路徑指到的任何地方,每個(gè)名字都僅對(duì)應(yīng)一個(gè)類(lèi)。否則,編譯器可能先找到同名的另一個(gè)類(lèi),并報(bào)告出錯(cuò)消息。若懷疑自己碰到了類(lèi)路徑問(wèn)題,請(qǐng)?jiān)囋囋陬?lèi)路徑的每一個(gè)起點(diǎn),搜索一下同名的.class文件。
(24) 在Java 1.1 AWT中使用事件"適配器"時(shí),特別容易碰到一個(gè)陷阱。若覆蓋了某個(gè)適配器方法,同時(shí)拼寫(xiě)方法沒(méi)有特別講究,最后的結(jié)果就是新添加一個(gè)方法,而不是覆蓋現(xiàn)成方法。然而,由于這樣做是完全合法的,所以不會(huì)從編譯器或運(yùn)行期系統(tǒng)獲得任何出錯(cuò)提示--只不過(guò)代碼的工作就變得不正常了。
(25) 用合理的設(shè)計(jì)方案消除"偽功能"。也就是說(shuō),假若只需要?jiǎng)?chuàng)建類(lèi)的一個(gè)對(duì)象,就不要提前限制自己使用應(yīng)用程序,并加上一條"只生成其中一個(gè)"注釋。請(qǐng)考慮將其封裝成一個(gè)"獨(dú)生子"的形式。若在主程序里有大量散亂的代碼,用于創(chuàng)建自己的對(duì)象,請(qǐng)考慮采納一種創(chuàng)造性的方案,將些代碼封裝起來(lái)。
(26) 警惕"分析癱瘓"。請(qǐng)記住,無(wú)論如何都要提前了解整個(gè)項(xiàng)目的狀況,再去考察其中的細(xì)節(jié)。由于把握了全局,可快速認(rèn)識(shí)自己未知的一些因素,防止在考察細(xì)節(jié)的時(shí)候陷入"死邏輯"中。
(27) 警惕"過(guò)早優(yōu)化"。首先讓它運(yùn)行起來(lái),再考慮變得更快--但只有在自己必須這樣做、而且經(jīng)證實(shí)在某部分代碼中的確存在一個(gè)性能瓶頸的時(shí)候,才應(yīng)進(jìn)行優(yōu)化。除非用專(zhuān)門(mén)的工具分析瓶頸,否則很有可能是在浪費(fèi)自己的時(shí)間。
性能提升的隱含代價(jià)是自己的代碼變得難于理解,而且難于維護(hù)。
(28) 請(qǐng)記住,閱讀代碼的時(shí)間比寫(xiě)代碼的時(shí)間多得多。思路清晰的設(shè)計(jì)可獲得易于理解的程序,但注釋、細(xì)致的解釋以及一些示例往往具有不可估量的價(jià)值。無(wú)論對(duì)你自己,還是對(duì)后來(lái)的人,它們都是相當(dāng)重要的。如對(duì)此仍有懷疑,那么請(qǐng)?jiān)囅胱约涸噲D從聯(lián)機(jī)Java文檔里找出有用信息時(shí)碰到的挫折,這樣或許能將你說(shuō)服。
(29) 如認(rèn)為自己已進(jìn)行了良好的分析、設(shè)計(jì)或者實(shí)施,那么請(qǐng)稍微更換一下思維角度。試試邀請(qǐng)一些外來(lái)人士--并不一定是專(zhuān)家,但可以是來(lái)自本公司其他部門(mén)的人。請(qǐng)他們用完全新鮮的眼光考察你的工作,看看是否能找出你一度熟視無(wú)睹的問(wèn)題。采取這種方式,往往能在最適合修改的階段找出一些關(guān)鍵性的問(wèn)題,避免產(chǎn)品發(fā)行后再解決問(wèn)題而造成的金錢(qián)及精力方面的損失。
(30) 良好的設(shè)計(jì)能帶來(lái)最大的回報(bào)。簡(jiǎn)言之,對(duì)于一個(gè)特定的問(wèn)題,通常會(huì)花較長(zhǎng)的時(shí)間才能找到一種最恰當(dāng)?shù)慕鉀Q方案。但一旦找到了正確的方法,以后的工作就輕松多了,再也不用經(jīng)歷數(shù)小時(shí)、數(shù)天或者數(shù)月的痛苦掙扎。我們的努力工作會(huì)帶來(lái)最大的回報(bào)(甚至無(wú)可估量)。而且由于自己傾注了大量心血,最終獲得一個(gè)出色的設(shè)計(jì)方案,成功的快感也是令人心動(dòng)的。堅(jiān)持抵制草草完工的誘惑--那樣做往往得不償失。
一、獲取code
將code作為參數(shù)傳遞過(guò)來(lái)
//如果有code,說(shuō)明是微信小程序,根據(jù)code獲取openId
//classify用于標(biāo)識(shí)是哪個(gè)小程序
if (!CheckUtil.checkNulls( keUser.getCode(),keUser.getClassify())){
//
String openid = OpenIdUtil.oauth2GetOpenid(keUser.getCode(),keUser.getClassify());
printParamsLog(openid, logger);
keUser.setUserId(openid);
}1234567812345678
二、工具類(lèi)
package com.util;
import net.sf.json.JSONObject;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import java.util.HashMap;
import java.util.Map;
/**
* @author xsx
*/
public class OpenIdUtil {
public static String oauth2GetOpenid(String code,String classify) {
String appid="";
String appsecret="";
switch (classify){
case "1":
//自己的配置appid
appid = "**********";
//自己的配置APPSECRET;
appsecret = "**********";
break;
case "2":
appid = "**********";
appsecret = "************";
break;
case "3":
appid = "**********";
appsecret = "************";
break;
case "4":
appid = "**********";
appsecret = "************";
break;
case "5":
appid = "**********";
appsecret = "************";
}
//授權(quán)(必填)
String grant_type = "authorization_code";
//URL
String requestUrl = "";
//請(qǐng)求參數(shù)
String params = "appid=" + appid + "secret=" + appsecret + "js_code=" + code + "grant_type=" + grant_type;
//發(fā)送請(qǐng)求
String data = HttpUtil.get(requestUrl, params);
//解析相應(yīng)內(nèi)容(轉(zhuǎn)換成json對(duì)象)
JSONObject json = JSONObject.fromObject(data);
//用戶(hù)的唯一標(biāo)識(shí)(openid)
String Openid =String.valueOf(json.get("openid"));
//System.out.println(Openid);
return Openid;
}
}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
三、發(fā)送請(qǐng)求的工具類(lèi)
package com.util;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
/**
* @author xsx
*/
public class HttpUtil {
/**
* 向指定URL發(fā)送GET方法的請(qǐng)求
*
* @param url
* 發(fā)送請(qǐng)求的URL
* @param param
* 請(qǐng)求參數(shù),請(qǐng)求參數(shù)應(yīng)該是 name1=value1name2=value2 的形式。
* @return String 所代表遠(yuǎn)程資源的響應(yīng)結(jié)果
*/
public static String get(String url,String param){
String result = "";
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
//System.out.println(urlNameString);
URL realUrl = new URL(urlNameString);
// 打開(kāi)和URL之間的連接
URLConnection connection = realUrl.openConnection();
// 設(shè)置通用的請(qǐng)求屬性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立實(shí)際的連接
connection.connect();
// 獲取所有響應(yīng)頭字段
MapString, ListString map = connection.getHeaderFields();
// 遍歷所有的響應(yīng)頭字段
/*for (String key : map.keySet()) {
System.out.println(key + "---" + map.get(key));
}*/
// 定義 BufferedReader輸入流來(lái)讀取URL的響應(yīng)
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("發(fā)送GET請(qǐng)求出現(xiàn)異常!" + e);
e.printStackTrace();
}
// 使用finally塊來(lái)關(guān)閉輸入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
}
jsp傳值給另一個(gè)jsp頁(yè)面,主要的方式是將數(shù)據(jù)放在request對(duì)象中,然后通過(guò)GetParameter方法即可在另一個(gè)頁(yè)面拿到這個(gè)數(shù)據(jù),代碼如下:
B頁(yè)面通過(guò)如下代碼接收
%
String name=request.getParameter("name");
%
說(shuō)明:request.getParameter()取得是通過(guò)容器的實(shí)現(xiàn)來(lái)取得通過(guò)類(lèi)似post,get等方式傳入的數(shù)據(jù)
使用一些已有的組件幫助我們實(shí)現(xiàn)這種上傳功能。常用的上傳組件:Apache的CommonsFileUploadJavaZoom的UploadBeanjspSmartUpload以下,以FileUpload為例講解1、在jsp端要注意enctype="multipart/form-data"然后只需要放置一個(gè)file控件,并執(zhí)行submit操作即可2、web端核心代碼如下:publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding("UTF-8");DiskFileItemFactoryfactory=newDiskFileItemFactory();ServletFileUploadupload=newServletFileUpload(factory);try{Listitems=upload.parseRequest(request);Iteratoritr=items.iterator();while(itr.hasNext()){FileItemitem=(FileItem)itr.next();if(item.isFormField()){System.out.println("表單參數(shù)名:"+item.getFieldName()+",表單參數(shù)值:"+item.getString("UTF-8"));}else{if(item.getName()!=null!item.getName().equals("")){System.out.println("上傳文件的大小:"+item.getSize());System.out.println("上傳文件的類(lèi)型:"+item.getContentType());System.out.println("上傳文件的名稱(chēng):"+item.getName());FiletempFile=newFile(item.getName());Filefile=newFile(sc.getRealPath("/")+savePath,tempFile.getName());item.write(file);request.setAttribute("upload.message","上傳文件成功!");}else{request.setAttribute("upload.message","沒(méi)有選擇上傳文件!");}}}}catch(FileUploadExceptione){e.printStackTrace();}catch(Exceptione){e.printStackTrace();request.setAttribute("upload.message","上傳文件失敗!");}request.getRequestDispatcher("/uploadResult.jsp").forward(request,response);}
最簡(jiǎn)單的,后臺(tái)用servlet寫(xiě),然后客戶(hù)端通過(guò)Http協(xié)議向服務(wù)器端發(fā)送請(qǐng)求,服務(wù)器端通過(guò)tomcat容器接受HttpRequest請(qǐng)求,然后向客戶(hù)端反饋HttpResponse響應(yīng)。我看您還是把servlet學(xué)完在搞吧
分享標(biāo)題:java后臺(tái)代碼怎么寫(xiě) java編寫(xiě)后端
轉(zhuǎn)載注明:http://chinadenli.net/article10/doopido.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、域名注冊(cè)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、云服務(wù)器、小程序開(kāi)發(fā)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)