MVC概念
百度:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
Model(模型)表示应用程序核心(比如数据库记录列表)。JavaBean
View(视图)显示数据(数据库记录)。Javaee中的Jsp
Controller(控制器)处理输入(写入数据库记录)。Javaee中的Servlet
模型(javaweb中的javaBean)
Model是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
视图(javaweb中的jsp)
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括等Adobe Flash和像XHTML,XML/XSL,WML一些标识语言和Web services.
控制器(javaweb中的Servlet)
控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
常见名词解释:
JavaBeans:就是简单的java类但是符合某种特殊规范的实体类。
例如:
package com.zyb.pojo;//实体类 public class User { private int uid; private String uname; private String pwd; private String sex; private int age; private String birth; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getBirth() { return birth; } public void setBirth(String birth) { this.birth = birth; } @Override public String toString() { return "User [uid=" + uid + ", uname=" + uname + ", pwd=" + pwd + ", sex=" + sex + ", age=" + age + ", birth=" + birth + "]"; } public User() { super(); // TODO Auto-generated constructor stub } public User(int uid, String uname, String pwd, String sex, int age, String birth) { super(); this.uid = uid; this.uname = uname; this.pwd = pwd; this.sex = sex; this.age = age; this.birth = birth; } }
Dao层
DAO(Data Access Object):数据访问接口。数据访问:顾名思义就是与数据库打交道,夹在业务逻辑与数据库资源中间。DAO模式是标准的J2EE设计模式之一,开发人员使用这个模式把底层的数据访问操作和上层的商务逻辑分开。
package com.zyb.dao; import java.util.List; import com.zyb.pojo.User; public interface UserDao { /** * 根据用户名密码查询用户信息 * @param uname用户名 * @param pwd密码 * @return 查询的用户信息 */ User checkUserloginDao(String uname,String pwd); /** * 修改用户密码 * @param newPwd * @param uid * @return */ int UserChagePwdDao(String newPwd, int uid); List<User> showUserDao(); }
Service
Service层是为了处理包含多个POJO对象(即对多个表的数据操作)时,进行事务等管理。所以Service层(其接口的实现类)被注入一个或多个DAO对象,以完成有意义的数据操作。
package com.zyb.sercvice; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.zyb.dao.UserDao; import com.zyb.pojo.User; public interface UserService { /** * 校验用户登录 * @param uname:用户名 * @param pwd:用户密码 * @return 返回查询到的用户信息 */ User checkUserloginService(String uname,String pwd); /** * * 根据uid修改用户密码 * @param newPwd * @param uid * @return */ int UserChagePwdService(String newPwd, int uid); /** * 查询所有用户信息 * @param req * @param resp * @return */ List<User> showUserService(); }
package com.zyb.sercvice.impl; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import com.zyb.dao.UserDao; import com.zyb.dao.impl.UserDaoImpl; import com.zyb.pojo.User; import com.zyb.sercvice.UserService; public class UserServiceImpl implements UserService{ //声明Dao层对象 UserDao ud = new UserDaoImpl(); //声明日志对象 Logger logger = Logger.getLogger(UserServiceImpl.class); //用户登录 public User checkUserloginService(String uname, String pwd) { //打印日志 logger.debug(uname+"发起登录请求"); User u = ud.checkUserloginDao(uname, pwd); //判断 if(u!=null){ logger.debug(uname+"登录成功"); }else{ logger.debug(uname+"登录失败"); } return u; } //修改用户密码 @Override public int UserChagePwdService(String newPwd, int uid) { // TODO Auto-generated method stub logger.debug(uid+"发起密码修改请求"); int mark= ud.UserChagePwdDao(newPwd,uid); if(mark>0){ logger.debug(uid+"密码修改成功"); }else{ logger.debug(uid+"密码修改失败"); } return mark; } @Override public List<User> showUserService() { // TODO Auto-generated method stub List<User> lu = new ArrayList<User>(); lu.addAll(ud.showUserDao()); for(int i=0;i<lu.size();i++){ logger.debug(lu.get(i).getUid()+" "+lu.get(i).getUname()+" "+lu.get(i).getPwd()+" "+lu.get(i).getAge()+" "+lu.get(i).getBirth()+lu.get(i).getSex()); } return lu; } }
工程目录:
简单介绍:从上往下进行处理,从下往上进行从传递。
User是存储对应Servlet
Service是业务层,Servlet告诉它该如何处理,返回给Serevlet处理结果
Pojo:模式(javaBean)存储用户信息
Dao:处理与数据库相关的操作,将结果返回给Service
MVC的好处就是在添加新功能是可以做到条例清晰,可扩展性强、代码逻辑清晰。