\x \[]=-\]eb应用分层与MVC设计模式

Web层设计目标

a.清晰的层次规划

清晰的层次是将Web层中控制流以及调用业务对象(由Java处理的控制对象)从表示(由JSP租组件处理)分离出来。

b.保持JSP页面代码纯净

保持JSP页面代码纯净是指JSP页面中不在是JAVA代码,而是必要的根据用户动作初始化业务流程与显示结果。他应该只包含控制逻辑,而不是业务逻辑。

Web层分成三个不同的对象:

a.控制对象:接收用户输入并引用业务逻辑来创建和修改模型对象。(C:Controller)

b.模型对象:提供业务逻辑方法以及业务数据。(M:Model)

b.视图对象:显示模型数据。(V:View)

MVC 将交互式应用程序组织成三个独立的模块:

应用程序模块,用于表示数据和业务逻辑

数据表示

控制器,用于发送请求和控制应用程序的流程

MVC设计模式原理:

a.视图:代表用户交互界面

b.模型:业务流程/状态的处理以及业务规则的制定

c.控制器:控制器可以理解为从用户接受请求,将模型与视图匹配在一起,共同完成用户的请求  

d.MVC 的优点

a.使用同一模型处理多个请求

b.模型层和视图层松散耦合

c.可以很灵活地设计 和实现模型对象

e.MVC 体系结构的各种对象包括:

a.模型对象 表示 Web 应用程序的数据元素,用户可与这些数据元素进行交互

b.视图对象 提供模型组件以开发用户界面

c.控制器对象 充当应用程序视图对象和模型对象之间的中间对象

f.MVC处理过程

首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图 来格式化模型返回的数据,并通过视图呈现给用户。 

 基于 MVC 体系结构的应用程序-用户登录

步骤一、新建表t_user,sql脚本如下:

...
CREATE TABLE t_user(
    name varchar(20) primary key,    -- 姓名
    pwd varchar(20) NOT NULL    -- 密码
)

...

步骤二、新建web工程ch12,在工程下建立四个包:com.bo,com.dao,com.vo,com.control,在vo包下新建Use.java实体类,代码如下:

public class User {
  String name;
  String pwd;
  public String getName() {     return name;   }   public void setName(String name) {     this.name = name;   }   public String getPwd() {     return pwd;   }   public void setPwd(String pwd) {     this.pwd = pwd;   }
}

步骤三、在dao包下编写数据访问类UserDAO.java,定义方法findById

public User findById(String name) {
  User user ;
  Connection conn;
  PreparedStatement ps;
  ResultSet rs;
  try {
    conn = DbUtil.getConn();
    String sql = “select * from t_user where name=?";
    ps = conn.prepareStatement(sql);
    ps.setString(1,name);
    rs = ps.executeQuery();
  while (rs.next()) {
    user = new User();
    user.setName(rs.getString("name"));
    user.setPwd(rs.getString("pwd"));}
  } catch (Exception ex) {
    ex.printStackTrace();
  }
     return user;
}

步骤四、在bo包下编写UserBO.java业务逻辑类

//业务逻辑层
public class UserBO {
     UserDAO userdao = new UserDAO();
    //检测用户有效性
    public boolean checkUser(String name,String pwd){
        boolean result = false;
        User user = userdao.findById(name);
        if(user!=null&&user.getPwd().equals(pwd))
        {
            result = true;
        }
        return result;
    }
}
    

步骤五、编写登录页面login.jsp

...
 <body>
      <center>
     <h3>用户登录</h3>
        <form action="userAction" method="post">
            用户名:<input type="text" name=“name"/><br/>
            密码:<input type="password" name=“pwd"/><br/>
            <input type="submit" value="登录"/><br/>
        </form>
    </center>
  </body>
...

步骤六、在com.control包下编写UserAction.java用于登录验证

..............
//获取数据
String uname = request.getParameter(“name");
String pwd =request.getParameter("pwd");
boolean validate = userbo.checkUser(uname,pwd);
if(validate)
{
   //获取用户
   User user = userdao.findById(uname);
   //把用户信息放到session中
   session.setAttribute("loginUser", user);
}
else
{
response.sendRedirect("login.jsp");
}
..............








































猜你喜欢

转载自www.cnblogs.com/Chordx/p/9281034.html
x