java - 對(duì)于jsp技術(shù),aspx技術(shù)的困惑
問題描述
最近接觸了一個(gè)c#的項(xiàng)目,基本上是MVC結(jié)構(gòu),是基于asp.net的web項(xiàng)目。view層是多個(gè)cshtml文件構(gòu)成(基本可以認(rèn)為是以前的aspx文件),controller層由多個(gè)cs文件(c#代碼)組成,數(shù)據(jù)層這里暫不討論。
這個(gè)項(xiàng)目是這樣的,我大概看了一下,view層的cshtml文件里面比如某個(gè)按鈕會(huì)鏈接到j(luò)s文件中的某個(gè)函數(shù),然后這個(gè)函數(shù)會(huì)提交post請求或者get請求,然后就會(huì)鏈接到controller層的cs文件中的那個(gè)對(duì)應(yīng)的函數(shù)了,之后就是數(shù)據(jù)處理然后返回。
現(xiàn)在有以下幾個(gè)困惑:
1,我不知道上面講的這個(gè)流程是不是現(xiàn)在web開發(fā)中主流的一個(gè)前后端交互過程?
2,基于java web的jsp技術(shù)是不是也是類似于上面.net這么一個(gè)流程?jsp文件是不是就是對(duì)應(yīng)于.net中的cshtml文件?不過網(wǎng)上說,jsp文件會(huì)包含java代碼,但我在cshtml文件中完全沒找到c#的代碼,要么就是html,要么就是js
3,如果jsp文件中會(huì)夾雜著大量的java代碼,那這個(gè)view層和controller層豈不是粘在一塊了?難道不應(yīng)該是jsp文件調(diào)用js,然后js調(diào)用服務(wù)器端controller層中的java文件這樣一個(gè)流程嗎?
4,如果說3問題中的確是jsp文件中包含大量java代碼,那的確是沒有很好的解耦,那我剛剛說的那個(gè).net的項(xiàng)目,這樣的一個(gè)流程是不是意味著前后端解耦的還不錯(cuò)?
5,我有點(diǎn)納悶的是,為什么那個(gè).net項(xiàng)目中,我一個(gè)html文件都找不到,全都是cshtml文件,然后還有大量的js文件,和cs文件(c#代碼)。
謝謝各位了,我其實(shí)是個(gè)剛進(jìn)入web開發(fā)這個(gè)大海里的一個(gè)菜鳥
問題解答
回答1:謝邀,以下是個(gè)人愚見,要噴請輕噴:
算是。不過現(xiàn)在還有前后端分離
是;不是,cshtml應(yīng)該對(duì)應(yīng)是java中的velocity
如果夾雜著,就會(huì)。可以使jsp對(duì)應(yīng)一個(gè)servlet
是的,已經(jīng)算不錯(cuò)了
這是一種模板,簡單來說會(huì)使html的開發(fā)對(duì)我們的后端人員更加友好
回答2:是這樣的,因?yàn)橛薪?jīng)驗(yàn)我做個(gè)回答:1,你所說的鏈接到某個(gè)js文件包括css文件是因?yàn)樵赾#中定義了識(shí)別路徑,不然是無法識(shí)別的。2,cshtml為Razor語法,要求文件名稱后綴為這個(gè)。3,我并沒碰到過混雜著java的.net項(xiàng)目。不過還是建議既然是.net就用純c#構(gòu)建吧,也方便維護(hù)。4,你現(xiàn)在所有的疑惑都源自于你對(duì)后臺(tái)不太了解,作為前端有時(shí)間可以學(xué)習(xí)一下Node的express框架或者koa都可以,用一下模板語法,你就會(huì)理解你現(xiàn)在的疑惑了。
回答3:是一個(gè)經(jīng)典的前后端交互架構(gòu),但目前主流已經(jīng)向 spa 方向遷移,前端負(fù)責(zé)處理更多的路由和邏輯,后端只負(fù)責(zé)提供 api 和 數(shù)據(jù);
jsp 與 cshtml 在這個(gè)意義上可以說是一致,但細(xì)節(jié)不同;至于為什么 cshtml 里面沒有 c#,是因?yàn)槲④浺?guī)定 View 層使用 razor 引擎,后綴是 cshtml, 里面除了標(biāo)準(zhǔn) html 和 js ,還可以使用 razor 語法 (注意并不是 C# ), 但是按當(dāng)前的趨勢,越來越多人不使用后端生成頁面,而是直接在前端處理,所以很多 cshtml 里面沒有 razor 語句;
jsp 夾雜 java 是類比與 asp ,屬于淘汰技術(shù), 題主已經(jīng)接受了 mvc 的理念, 提出的疑問是對(duì)的,所以現(xiàn)在沒人這么干了;
是的;
因?yàn)槭俏④浺?guī)定的,具體原因看2;html 文件也是可以存在的,但用 cshtml 可以默認(rèn)與 controller 綁定,更方便;
回答4:這個(gè)問題是前后端的分離。現(xiàn)在主流的都是MVC三層分離。至于你說的JSP其實(shí)是java早起的在html里面嵌入java代碼的一種表現(xiàn)形式。現(xiàn)在已經(jīng)慢慢弱化這種使用方法。
