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

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?

天蓬老师
天蓬老师

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

répondre à tous(5)
迷茫
  1. Oui. De plus, MVC est un modèle de conception pour l’architecture. La plupart des frameworks le prennent en charge.

  2. Oui. De plus, je vous recommande également deux excellents articles pour approfondir votre compréhension de Bean. Beans Java dans Java Empire (Partie 1) et Beans Java dans Java Empire (Partie 2)

  3. Non à proprement parler.

Autres :
J'ai vu que la personne qui a posé la question voulait recommander un framework pour commencer. Vous pouvez essayer SpringBoot, qui est petit mais complet et peut être utilisé immédiatement. De plus, il existe déjà des livres correspondants en Chine.

Peter_Zhu

1. MVC est principalement un framework, struts/spring
2 Oui
3. La classe d'implémentation spécifique de l'interface est la couche métier

.
Peter_Zhu

Pour répondre à vos questions
1. Oui, mais pas complètement.
2.Oui.
3. Selon le dicton traditionnel, non. Mais après l'émergence du printemps, notamment pour le concept IOC, c'est un haricot

阿神

Le nom de votre package n'est-il pas en mosaïque ?

左手右手慢动作

On a l'impression que ce que vous lisez est un vieux manuel. L'approche actuelle, même s'il ne s'agit pas d'un framework, est que le servlet est uniquement responsable de la réception des valeurs et de la transmission des paramètres. La logique métier spécifique est extraite. créez une couche de service et la couche dao est responsable de la connexion à la base de données. Il est recommandé d'apprendre springMVC

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal