servlet - 在MVC模式中 Javabean只是充当值对象的角色吗
天蓬老师
天蓬老师 2017-04-18 10:25:15
0
5
593

Javaweb新手,尝试用MVC模式做一个购物网站,但是今天看一本书里面提到的业务逻辑和Servlet与JavaBean的关系让我对自己之前的做法有了疑惑。

我之前实现各个功能的流程都是这样的(以商品搜索为例):
(GoodDAO是商品相关的数据库操作接口,Good是商品的值对象)
用户从JSP页面发送请求 -> Servlet接收请求 -> Servlet调用GoodDAO中的query方法 -> 该方法返回一个ArrayList<Good>的查询结果 -> Servlet将该ArrayList交给JSP(通过session或者request之类的) -> JSP用EL读取并显示搜索结果

但是今天看到的那本书说要把业务逻辑从Servlet中拿出来,我搜索了一下发现还有一种做法是创建一种叫xxxManager的类(在这里可以叫GoodManager),由Servlet调用该类,该类再调用GoodDAO,Manager最终将数据填入Good实体中返回给Servlet。这就和我做的方法感觉有出入了……

我的Servlet部分代码如下(这个Servlet不是我举例的那个,代码少点但结构类似):

        request.setCharacterEncoding("UTF-8");
        int gid = Integer.parseInt(request.getParameter("gid"));
        Good good = null;
        GoodDAO goodDAO = DAOFactory.getGoodDAOInstance();
        HttpSession session = request.getSession(true);

        try {
            good=goodDAO.queryByID(gid);
            session.setAttribute("good", good);
            response.sendRedirect("goodupdate.jsp");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

我的网站后台结构如下图(省略了很多Servlet):

我的问题是,
我现在的做法是MVC模式吗?
JavaBean在这里仅仅指Good这一个类吗?(它的属性是私有的,提供了getter/setter,可序列化)
GoodDAO的具体实现类算不算是JavaBean?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(5)
迷茫
  1. 是的。另外,MVC是對架構的設計模式。絕大多數框架都支持這麼做。

  2. 是的。另外也是推薦你兩篇優秀的文章,可以加深你對Bean的理解。 Java 帝國之Java bean (上) 與Java 帝國之Java bean(下)

  3. 嚴格意義上來說不是。

其他:
看到題主想求推薦一個框架入手,可以嘗試SpringBoot,小而全,開箱即用。另外國內也已經有相應的書籍了。

Peter_Zhu

1、MVC大都是框架,struts/spring
2、對
3、介面具體實作類別是業務層

Peter_Zhu

回答你的問題
1.是的,只不過不徹底。
2.是的。
3.按傳統說法來講,不是。但是在spring出現之後,尤其是IOC概念而已,這是一個bean

阿神

你的包名 不打馬賽克嗎?

左手右手慢动作

感覺你看的東西都是好老的教材了,現在的做法,就算不上框架,servlet也只是負責接值傳參,具體的業務邏輯抽出來做一個service層,dao層負責連接數據庫。推薦學習一下springMVC吧

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板