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

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 Empire의 Java Bean(1부) 및 Java Empire의 Java Bean(2부)

  3. 엄밀히 말하면 아니다.

기타:
질문자가 처음부터 프레임워크를 추천하고 싶어하는 것을 보았습니다. 작지만 포괄적이고 즉시 사용할 수 있는 SpringBoot를 사용해 볼 수 있습니다. 게다가 중국에는 이미 해당 서적이 나와 있다.

Peter_Zhu

1. MVC는 대부분 스트럿츠/스프링입니다
2. 예
3. 인터페이스의 특정 구현 클래스는 비즈니스 계층입니다

Peter_Zhu

질문에 답변하려면
1. 하지만 완전히는 아닙니다.
2.네.
3. 전통적인 속담에 따르면 그렇지 않습니다. 하지만 봄이 등장한 이후, 특히 IOC 컨셉에서는 이것이 빈입니다

阿神

패키지명이 모자이크 아닌가요?

左手右手慢动作

지금 읽고 있는 내용이 오래된 교과서처럼 느껴지네요. 프레임워크는 아니더라도 서블릿은 특정 비즈니스 로직을 추출하는 역할만 담당합니다. 서비스 레이어를 생성하고 dao 레이어는 데이터베이스 연결을 담당합니다. springMVC를 배우는 것을 추천합니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿