posts - 60, comments - 116, trackbacks - 1, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          3. 架構(gòu)概覽

          MVC 層在 Spring AbstractController 類基礎(chǔ)上進(jìn)行了繼承和重構(gòu),使整個(gè)框架僅使用單一的公共控制器,數(shù)據(jù)操作采用 Spring JdbcTemplate ,在邏輯層中直接集成了 Spring Jdbc 能力,可直接操作數(shù)據(jù),表現(xiàn)層 Jstl ,除此之外,未定義任何的表單對(duì)象、數(shù)據(jù)庫表映射對(duì)象和其他 ORM 的配置文件,在保留對(duì)關(guān)鍵功能的集成度的基礎(chǔ)上技術(shù)入門度極低,重點(diǎn)關(guān)注業(yè)務(wù)功能和優(yōu)化 SQL 語句

          請求處理流傳如圖所示:



          1)????? 用戶訪問 http://www.fyyk.com/a.do

          2)????? Web 應(yīng)用服務(wù)器(如 tomcat )解析擴(kuò)展名為 *.do 的請求,通過 Spring 分發(fā)器 org.springframework.web.servlet.DispatcherServlet 讀取 servlet-do.xml 中的配置,將請求轉(zhuǎn)發(fā)給公共控制器類 LogicController.java

          3)????? 公共控制器類 LogicController.java 根據(jù) servlet-do.xml 文件中的配置信息調(diào)用 DoLogicImpl.java 類中相對(duì)應(yīng)名稱的方法;

          4)????? DoLogicImpl.java 類中的方法在處理完成業(yè)務(wù)邏輯后,將數(shù)據(jù)內(nèi)容 ModelAndView 返回給公共控制器類 LogicController.java

          5)????? 公共控制器類 LogicController.java 處理 ModelAndView 信息,執(zhí)行 b.jsp 將結(jié)果數(shù)據(jù)顯示出來;

          3.1. 控制器 Controller




            控制器類配置在

          servlet-xxx.xml 文件中,封裝后的 Controller 特點(diǎn)如下:

          1)??? 繼承 AbstractController 類,便于調(diào)用應(yīng)用環(huán)境的 Web 特性;

          2)?? 只用控制器做請求的轉(zhuǎn)發(fā),業(yè)務(wù)實(shí)現(xiàn)全部在邏輯層;

          3)????? 采用反映射機(jī)制( reflect ),運(yùn)行期調(diào)用邏輯類中的方法,而請求 URI 、邏輯類和方法名之間的對(duì)應(yīng)關(guān)系只需要在 servlet-xxx.xml 中配置,這樣,控制器實(shí)現(xiàn)就只有唯一的一個(gè)類文件;

          3.2. 邏輯層 Logic




            邏輯層類在

          applicationContext-xxx.xml 文件配置 Bean 定義中,主要實(shí)現(xiàn)兩項(xiàng)功能:一是處理業(yè)務(wù)邏輯,二是操作數(shù)據(jù)庫;

          邏輯層類首先需要定義一個(gè)接口類,統(tǒng)一以 xxxLogic.java 命名,實(shí)現(xiàn)類命名為 xxxLogicImpl.java ,并繼承 JdbcDaoSupport 類,這樣邏輯類便具有了數(shù)據(jù)庫訪問能力。

          邏輯類的方法如果被公共控制器類 LogicController.java 的反映射機(jī)制直接調(diào)用,則其接口類需要繼承空的公共接口類 BasicLogic ,定義方法時(shí)參數(shù)和返回值是固定的,如果是被其他邏輯類調(diào)用則不需要。

          public ModelAndView initLogin(HttpServletRequest request, HttpServletResponse response, ServletContext servletContext);

          控制器層直接將請求的 request response servletContext 全部傳遞過來交由邏輯層自由控制,對(duì)于 request 中的表單數(shù)據(jù),未采用 SimpleFormController 的模式定義表單對(duì)象,建議手工獲取,從代碼量本身來將并不復(fù)雜,反而更加靈活。在業(yè)務(wù)處理完成后,必須構(gòu)造一個(gè) ModelAndView 對(duì)象,作為方法返回值回傳給控制器。

          范例代碼如下:

          public class AdminLogicImpl extends JdbcDaoSupport implements AdminLogic

          {

          ?

          public ModelAndView insertUser(HttpServletRequest request, HttpServletResponse response,

          ??? ServletContext servletContext) throws DataAccessException

          ??? {

          ? ???? ??String userId = request.getParameter("userId");

          ? ???? ??String userName = request.getParameter("userName");

          ? ???? ??int age = Integer.parseInt(request.getParameter("age"));

          ? ???? ??double weight = Double.parseDouble(request.getParameter("weight"));

          ?

          ? ???? ??String sqlStr = "insert into testuser (userId,username,age,weight,updatetime) values (?,?,?,?,?)";

          ?? ???? ?Object[] object = new Object[]{userId, userName, age, weight, new Date()};

          ?? ???? ?getJdbcTemplate().update(sqlStr, object);

          ?

          ? ???? ?Map<String, Object> model = new HashMap<String, Object>();

          ?? ???? ?model.put("msg", " 插入用戶成功! ");

          ??? ????model.put("url", "pageForm.user");

          ?? ???? ?String view = "admin/message.jsp";

          ?? ???? ?return new ModelAndView(view, model);

          ??? }

          }

          3.3. 表現(xiàn)層 Jstl

          表現(xiàn)層采用 Jstl taglib 1.2 ,在 *.jsp 頁面中加入 taglib 引用即可使用 Jstl 標(biāo)簽的大部分功能了,標(biāo)簽的具體使用方法請參考相關(guān)文檔。

          <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

          <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

          <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>


          評(píng)論

          # re: 單獨(dú)使用Spring建立簡易開發(fā)框架(二) [未登錄]  回復(fù)  更多評(píng)論   

          2007-09-11 18:19 by david
          你好, 可以給個(gè)例子看一下嗎?
          Email: wst0350@163.com
          QQ : 276527668

          # re: 單獨(dú)使用Spring建立簡易開發(fā)框架(二) [未登錄]  回復(fù)  更多評(píng)論   

          2007-09-11 21:10 by john
          en

          主站蜘蛛池模板: 云梦县| 黎川县| 九寨沟县| 任丘市| 民丰县| 澳门| 东安县| 绥中县| 金门县| 论坛| 新源县| 荔波县| 海城市| 出国| 东兴市| 通城县| 济宁市| 克山县| 新平| 集贤县| 辰溪县| 白朗县| 南安市| 乐业县| 红河县| 阳高县| 襄汾县| 九龙县| 双江| 互助| 黎城县| 吴桥县| 衡水市| 鄂托克旗| 彰武县| 吴堡县| 武定县| 韶关市| 肇源县| 胶南市| 洞头县|