如下是我自工做以來,結合對C/S項目的認知,對B/S項目的一些理解。
若有不足或者錯誤,請各位指正。
因爲我的一開始入門時是ASP.NET MVC,是一個比較完善、完整的框架,下面僅對JAVA的web應用框架進行簡單介紹。
對於JEE Servlet
每寫一個功能,都須要寫一個servlet,而後執行servlet的service方法,對邏輯進行處理,而後返回結果。
大量的重複性工做。
一個servlet只能作一個功能,是否是有點太浪費了。
咱們能夠對Servlet進行功能增長。
首先,咱們看HttpServlet(如今寫的servlet大都繼承這個類)的方法
繼承這個類的servlet只要重寫
doGet(
HttpServletRequest req, HttpServletResponse resp)
doPost(
HttpServletRequest req, HttpServletResponse resp)
方法便可處理頁面請求的Get跟Post請求。
HttpServlet的service()方法,默認實現的是經過獲取request裏面的httpMethod,判斷頁面訪問方式是Get仍是Post 來執行doGet或者doPost方法。
ASP.NET MVC在controller上面寫[HttpGet]、[HttpPost]的聲明,本質上也是對方法進行聲明,分別處理Get 、Post請求。
參考HttpServlet的service()方法的實現,咱們也能夠嘗試從request裏面拿參數,而後根據參數,咱們去執行咱們本身的方法,從而實現對servlet的屢次利用,功能擴充。
Struts 作的就是這樣的工做,獲取url,而後按照約定好的配置,獲得要執行的servlet及執行的servlet的方法。
<action name="userAdd" class="com.demo.user.action.UserAction" method="add">
<result>/user_add_success.jsp</result>
</action>
<action name="userDel" class="com.demo.user.action.UserAction" method="del" >
<result>/user_del_success.jsp</result>
</action>
同時進行了擴充,不用再在代碼裏面進行視圖的返回,能夠根據方法處理結果的不一樣,返回不一樣的視圖,進一步實現頁面與視圖的解耦
<action name = "LoginAction" class = "com.demo.login.LoginServlet" >
<result name = "input">/login.jsp</result>
<result name = "error">/error.jsp</result>
<result name = "success">/main.jsp</result>
</action>