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