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