在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 關(guān)于servlet與service分離,自己在寫小項目練習時的困惑

關(guān)于servlet與service分離,自己在寫小項目練習時的困惑

為了解耦,學(xué)習到要求 servlet 要與 Service 分離( jsp/servlet 表現(xiàn)層; service 業(yè)務(wù)邏輯層; Dao 持久化層),但自己在寫小項目實踐練習時感覺很難受,比如:
用戶登錄成功之后,應(yīng)該向 request 域中注入登錄成功的 msg,即

request.setAttribute("msg","登錄成功");

因為在 jsp 中會有

${requestScope.msg}

可這件事不應(yīng)該屬于業(yè)務(wù)邏輯嗎?而 Service 層中不應(yīng)該拿到 request 這個東西,只能交給 servlet 去完成嗎?
如果說這件事最終影響的是 jsp 層,也就是表示層,所以可以把它交給 servlet 來處理,好吧。那現(xiàn)在我碰上這么一個情況,網(wǎng)站的會員還有不同的權(quán)限。登錄成功之后我想要把用戶的權(quán)限信息注入到 session 中

request.getSession.setAttribute("authority","admin");

這該是業(yè)務(wù)邏輯層的事情了吧?可 Service 層理論上不能接收 request 對象的話應(yīng)該完成不了這種任務(wù)。
而且如果要交給 Servlet 去做的話,相當于 login 方法還要返回一個 User 對象,然后 Servlet 中得到這個 User 對象再獲取其 authority 屬性值,注入 session 中。。。這個怎么想都覺得是業(yè)務(wù)邏輯啊??!怎么能讓 Servlet 來處理呢!!
就頭大,望有前輩能解答一下,謝謝!

回答
編輯回答
挽歌

一直看你在強調(diào)業(yè)務(wù)邏輯,自己怎么方便怎么來才是最重要的,沒必要嚴格遵守那些規(guī)范.

2017年8月28日 08:49
編輯回答
呆萌傻

代碼分層的目的是讓你邏輯更清晰,不是強制的割裂,這是一種代碼組織方式。

實際中,service 層要處理最復(fù)雜的業(yè)務(wù)本來就是處理輸入輸出的,必然牽扯到 通過 request,response 獲取和輸出數(shù)據(jù)。

如果讓你在service層看起來更獨立一點,你完全可以把 request和response的能力做一個封裝,作為當前上下文的輸入輸出接口實現(xiàn),而不是直接操作它們

servlet 是一種程序語言提供的原生手段,不是代碼組織方式。 你把代碼分層和 servlet 做對比,本身就是不合適的。 servlet 為java的web開發(fā)提供了非常方便的封裝(不然你還得自己實現(xiàn)http協(xié)議), 你如果閱讀了解主流框架,spring mvc之類的, 并不是脫離servlet,只是把 request和response的能力做一個封裝 當然還有一些CI的事情。

2018年7月4日 15:45