生活随笔
收集整理的這篇文章主要介紹了
MVC分层开发模式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
MVC
- 1. 什么是mvc開發(fā)模式
- 2. 基于servlet手寫mvc框架
1. 什么是mvc開發(fā)模式
- mvc不是一種技術(shù),只是一種開發(fā)模式
- 使用分層開發(fā)模式能在大型項(xiàng)目中,讓開發(fā)人員更好的協(xié)同工作
- 便于項(xiàng)目的維護(hù)和擴(kuò)展
- M: Model 模型層->數(shù)據(jù)庫層->dao
- V: View 視圖層->收集和展示用戶數(shù)據(jù)->html/jsp
- C: Controller->數(shù)據(jù)封裝->邏輯處理->流程控制->servlet/action/controller
2. 基于servlet手寫mvc框架
是一種標(biāo)準(zhǔn)或者規(guī)范,使用別人寫好的東西,按照他的制造好的輪子,他的流程,去開發(fā)我想要實(shí)現(xiàn)的功能,提高開發(fā)效率,降低開發(fā)成本。
前端框架分為功能性的和美觀性的功能性的:
jQuery,vue,angular 判斷數(shù)據(jù)合法性,dom操作美觀性的:
bootstrap,easyui,react,qucikui…
mvc是后端框架,專門用來解決controller與view層數(shù)據(jù)交互的問題,對(duì)這個(gè)交互過程中的各種操作進(jìn)行規(guī)范和封裝,讓開發(fā)人員在開發(fā)web應(yīng)用程序時(shí)對(duì)請(qǐng)求響應(yīng)的控制更為方便(數(shù)據(jù)層的訪問不屬于mvc框架內(nèi))
規(guī)范開發(fā)流程對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行封裝(如頁面有100個(gè)表單 多個(gè)表單)流程跳轉(zhuǎn)的規(guī)范 (是轉(zhuǎn)發(fā),重定向,還是js跳轉(zhuǎn))
配置文件
<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 的業(yè)務(wù)請(qǐng)求
--></servlet
-mapping
>
action接口,規(guī)范服務(wù)類
package com
.lovely
.mvc
;import javax
.servlet
.http
.HttpServletRequest
;
import javax
.servlet
.http
.HttpServletResponse
;public interface Action {public String
service(HttpServletRequest req
, HttpServletResponse resp
);}
創(chuàng)建配置文件(核心控制器根據(jù)業(yè)務(wù)請(qǐng)求,跳到對(duì)應(yīng)的服務(wù)類完成業(yè)務(wù))
控制器代碼
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();}}}
提供服務(wù)對(duì)象類(以查詢?yōu)槔?#xff09;
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";}}
- 以上就算一個(gè)基于servlet實(shí)現(xiàn)的mvc框架了,別人已經(jīng)有更牛的框架,這里只是拿來分析。
- 上面的代碼,離不開數(shù)據(jù)庫操作,請(qǐng)看
反射和注解對(duì)dao層操作
總結(jié)
以上是生活随笔為你收集整理的MVC分层开发模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。