JavaWeb之MVC设计模式

JavaWeb之MVC设计模式

写Java Web项目时会发现,一个中型或者大型项目 随着代码的增多,会发现:代码既可以写在src目录下,也可以

写在WebContent目录下。src下可以建很多包 ,WebContent下可以建很多文件夹。

所以问题就来了:一个新的类 到底往哪个目录下的哪个文件夹里写?

此时解决办法就是:需要一个模式去规范,到底哪个类该往哪里写。

1.mvc

JavaWeb之MVC设计模式_第1张图片

在Web MVC模式下,模型无法主动推数据给视图,如果用户想要视图更新,需要再发送一次请求(即请求-响应模

型)。

M(Model) 模型 : 应用程序的核心功能,管理这个模块中用的数据和值(bean,dao);

V(View )视图: 视图提供模型的展示,管理模型如何显示给用户,它是应用程序的外观;(jsp/html)

C(Controller)控制器: 对用户的输入做出反应,管理用户和视图的交互,是连接模型和视图的枢纽。

(servlet/service)

2.三层架构

三层架构 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层

(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。 jsp/html

2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

servlet,service

3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。dao

表现层实现的代表作品是Struts,springmvc框架,

业务层实现的代表作品是Spring,

持久层实现的代表作品是Hibernate,mybatis。

层就相当于一个黑盒子,我们不用知道它内部怎么实现,只需要知道如何去调用它就行了。每层只与上下相邻的两

层打交道。当一层内部由于技术变迁发生变化时,只要接口不变,其他层不用做任何改变。分层之后灵活性提高,

也便于团队分工开发。

3.三层架构和MVC的区别和联系

JavaWeb之MVC设计模式_第2张图片

设计demo

1.包结构

SRC目录下

创建com.java.web包,下面存放对应的servlet的代码。

创建com.java.service包,下面存放业务逻辑的代码。servlet和dao的衔接层,servlet调取service,service调取dao。

创建com.java.dao包,下面放数据库的操作信息。

创建com.java.bean包,下面放实体类。

创建com.java.util包,下面放工具类。

2.DemoM-model,模型层,bean包和dao包

查询数据库学生表中学生的所有信息

1.创建上述包

2.部署

2.1.页面上加入请求指令

student

2.2.在web包新建一个类,存放servlet

1.创建xxServlet类

2.继承与 HttpServlet

3.重写service方法

package com.java.web;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(value = "/getallstudent")//通过注解去接收页面的指令
class StudentServlet extends HttpServlet {//继承HttpServlet。这里如果找不到,需要导入jar包,在tomcat的lib目录下
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//重写service方法
        
        //1.接受参数
        //2.调取service方法
        //3.跳转页面
    }
}

3.bean包中创建实体类

实体类,又称为javabean

1.类名尽量等于表名,列名等于属性名

2.构造方法

package com.java.bean;
//类名要等于表明,列明要等于属性名
public class Student {
    private String sname;
    private String sid;
        //.
        //.
        //.
        //.
        //.
        //生成get,set,全参,无参方法
}

4.dao包

4.1.创建接口,StudentDao。定义操作数据库的方法

ackage com.java.dao;

import com.java.bean.Student;

import java.util.List;

public interface StudentDao {
    public List<Student> getall();

}

4.2.在dao包下创建impl.StudentDaoImpl

实现dao接口,连接数据库

1.首先在WEB-INF文件夹下创建lib包,把德鲁伊的jar包放进去

2.然后在src下放德鲁伊的属性文件

url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
username=root
password=123
driverClassName=com.mysql.jdbc.Driver
initialSize=5
maxActive=10
minIdle=5
maxWait=3000

3.德鲁伊的工具类放到util目录下,里面有获取连接和关闭资源的方法

4.StudentDaoImpl实现类,实现dao中的方法,进行数据库的连接

package com.java.dao.impl;

import com.java.bean.Student;
import com.java.dao.StudentDao;
import com.java.util.DruidUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class StudentDaoImpl extends DruidUtil implements StudentDao {

    @Override
    public List<Login> getall() {
        List list = new ArrayList();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            connection = getConnection();
            String sql = "select * from Student";
            preparedStatement = connection.prepareStatement(sql);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()){
                Student student = new Student();
                login.setsname(resultSet.getString("sname"));
                login.setsid(resultSet.getString("sid"));
                list.add(studetn);

            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            close(connection,preparedStatement,resultSet);
        }

        return null;
    }
}

5.Service

1.复制Dao到Service,并改名为StudentService

2.创建实现类,impl.StudentServiceImpl,接口是StudentService

public class StudentServiceImpl implements StudentService {
    private StudentDao dao = new StudentDaoImpl();
    @Override
    public List<Student> getall() {
        return dao.getall();
    }
}

6.Servlet

@WebServlet(value = "/Student")
class StudentServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接受参数
        //2.调取service方法
        StudentService studentService = new StudentServiceImpl();
        List<Studnet> students = studentService.getall();
        //3.跳转页面
		req.setAttribute("lgoins",logins);
        req.getRequestDispatcher("show.jsp").forward(req,resp);
    }
}

servlet里面调取service,service里面调取dao,dao里面调取数据库。数据放到实体类里面保存

);
List students = studentService.getall();
//3.跳转页面
req.setAttribute(“lgoins”,logins);
req.getRequestDispatcher(“show.jsp”).forward(req,resp);
}
}


servlet里面调取service,service里面调取dao,dao里面调取数据库。数据放到实体类里面保存

### 7.导入jstl标签库,编写show页面,展示信息

你可能感兴趣的:(JAVA基础知识,java)