生活随笔
收集整理的這篇文章主要介紹了
MVC分层开发模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MVC
- 1. 什么是mvc開發模式
- 2. 基于servlet手寫mvc框架
1. 什么是mvc開發模式
- mvc不是一種技術,只是一種開發模式
- 使用分層開發模式能在大型項目中,讓開發人員更好的協同工作
- 便于項目的維護和擴展
- M: Model 模型層->數據庫層->dao
- V: View 視圖層->收集和展示用戶數據->html/jsp
- C: Controller->數據封裝->邏輯處理->流程控制->servlet/action/controller
2. 基于servlet手寫mvc框架
是一種標準或者規范,使用別人寫好的東西,按照他的制造好的輪子,他的流程,去開發我想要實現的功能,提高開發效率,降低開發成本。
前端框架分為功能性的和美觀性的功能性的:
jQuery,vue,angular 判斷數據合法性,dom操作美觀性的:
bootstrap,easyui,react,qucikui…
mvc是后端框架,專門用來解決controller與view層數據交互的問題,對這個交互過程中的各種操作進行規范和封裝,讓開發人員在開發web應用程序時對請求響應的控制更為方便(數據層的訪問不屬于mvc框架內)
規范開發流程對請求數據進行封裝(如頁面有100個表單 多個表單)流程跳轉的規范 (是轉發,重定向,還是js跳轉)
配置文件
<servlet><servlet
-name
>ActionServlet
</servlet
-name
><servlet
-class>com
.lovely
.mvc
.ActionServlet
</servlet
-class></servlet
><servlet
-mapping
><servlet
-name
>ActionServlet
</servlet
-name
><url
-pattern
>*.do</url
-pattern
> <!-- 如接收query
.do 的業務請求
--></servlet
-mapping
>
action接口,規范服務類
package com
.lovely
.mvc
;import javax
.servlet
.http
.HttpServletRequest
;
import javax
.servlet
.http
.HttpServletResponse
;public interface Action {public String
service(HttpServletRequest req
, HttpServletResponse resp
);}
創建配置文件(核心控制器根據業務請求,跳到對應的服務類完成業務)
控制器代碼
package com
.lovely
.mvc
;import java
.io
.IOException
;
import java
.io
.InputStream
;
import java
.util
.Properties
;import javax
.servlet
.ServletException
;
import javax
.servlet
.http
.HttpServlet
;
import javax
.servlet
.http
.HttpServletRequest
;
import javax
.servlet
.http
.HttpServletResponse
;public class ActionServlet extends HttpServlet {private static final long serialVersionUID
= 1L
;private Properties property
= null
;@Overridepublic void init() throws ServletException
{property
= new Properties();InputStream in
= this.getServletContext().getResourceAsStream("/WEB-INF/config.properties");try {property
.load(in
);} catch (IOException e
) {e
.printStackTrace();} finally {try {if (in
!= null
)in
.close();} catch (IOException e
) {e
.printStackTrace();}}}@Overrideprotected void service(HttpServletRequest req
, HttpServletResponse resp
)throws ServletException
, IOException
{String uri
= req
.getRequestURI();String key
= uri
.substring(uri
.lastIndexOf("/") + 1, uri
.lastIndexOf("."));System
.out
.println(uri
+ "\t" + key
);String value
= property
.get(key
).toString();try {Class
<?> c
= Class
.forName(value
);Action action
= (Action
) c
.newInstance();String result
= action
.service(req
, resp
);if (result
!= null
) {if (result
.startsWith("forward")) {String path
= result
.split(":")[1];req
.getRequestDispatcher(path
).forward(req
, resp
);} else if (result
.startsWith("redirect")) {String path
= result
.split(":")[1];resp
.sendRedirect(req
.getContextPath() + path
);} else {req
.getRequestDispatcher(result
).forward(req
, resp
);} }} catch (ClassNotFoundException e
) {e
.printStackTrace();} catch (InstantiationException e
) {e
.printStackTrace();} catch (IllegalAccessException e
) {e
.printStackTrace();}}}
提供服務對象類(以查詢為例)
package com
.lovely
.action
;import javax
.servlet
.http
.HttpServletRequest
;
import javax
.servlet
.http
.HttpServletResponse
;import com
.lovely
.dao
.CommonDao
;
import com
.lovely
.entity
.Ticket
;
import com
.lovely
.mvc
.Action
;public class QueryAction implements Action {@Overridepublic String
service(HttpServletRequest req
, HttpServletResponse resp
) {CommonDao dao
= new CommonDao();req
.setAttribute("list", dao
.queryAll(Ticket
.class));return "/list.jsp";}}
- 以上就算一個基于servlet實現的mvc框架了,別人已經有更牛的框架,這里只是拿來分析。
- 上面的代碼,離不開數據庫操作,請看
反射和注解對dao層操作
總結
以上是生活随笔為你收集整理的MVC分层开发模式的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。