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?
是的。另外,MVC是对架构的设计模式。绝大多数框架都支持这么做。
是的。另外也是推荐你两篇优秀的文章,可以加深你对Bean的理解。Java 帝国之Java bean (上) 和Java 帝国之Java bean(下)
严格意义上来说不是。
其他:
看到题主想求推荐一个框架入手,可以尝试SpringBoot,小而全,开箱即用。另外国内也已经有相应的书籍了。
1、MVC大都是框架,struts/spring
2、对
3、接口具体实现类是业务层
回答你的问题
1.是的,只不过不彻底。
2.是的。
3.按传统说法来讲,不是。但是在spring出现之后,尤其是对于IOC概念而已,这是一个bean
你的包名 不打马赛克吗?
感觉你看的东西都是好老的教材了,现在的做法,就算不上框架,servlet也只是负责接值传参,具体的业务逻辑抽出来做一个service层,dao层负责连接数据库。推荐学习一下springMVC吧