MVC模式笔记【JavaWeb笔记二】

目录

MVC模式概念:

包结构:

         基于MVC模式的项目:

页面如下图:

项目包结构:

项目框图:

代码实现过程:

1、初始页面(index.jsp)

2、Servlet(XxxxxServlet.java)

=============================M (model) 模型部分 =========================================

3、实体类(javabean)(Student.java)

4、定义操作数据库的方法(接口) (StudentDao.java[interface])

4.5、添加数据库的依赖包,并完成配置

5、实现数据库操作的接口    继承 DruidUtil 工具类   覆写数据操作方法 (StudentDaoImpl.java)

===================================C (Controller) 控制器 ===============================

6、定义操作数据库的方法(接口)(StudentService.java[interface])

7、实现业务操作   实现数据操作接口    覆写数据操作方法 (StudentServiceImpl.java)

8、完成web.StudentServlet的逻辑

①StudentServlet.java

②AddStudentServlet.java

③DeleteStudentServlet.java

==============================V (View) 视图 =====================================

9、视图显示(show.jsp)


MVC模式概念:

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

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

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

包结构:

 

基于MVC模式的项目:

功能:查询、添加、删除学生信息。

页面如下图:

项目包结构:

项目框图:

 

代码实现过程:

1、初始页面(index.jsp)

<body>
    <h1><a href="/getallstudent">students</a></h1><br/><br/>

    <div style="display:inline-block">
    <fieldset style="width: 250px">
      <legend>添加学生</legend>
      <form action="/addstudent" method="post">
        学号:<input type="text" name="studentno"><br/><br/>
        姓名:<input type="text" name="stuname"><br/><br/>
        年龄:<input type="text" name="stuage"><br/><br/>
        年级:<input type="text" name="gradeid"><br/><br/>
        <input type="submit" value="添加" style="position:relative;left: 150px">
      </form>
    </fieldset>
    </div>

    <div style="display:inline-block">
    <fieldset style="width: 250px">
      <legend>删除学生</legend>
      <form action="/deletestudent" method="post">
        学号:<input type="text" name="studentno"><br/><br/>
        姓名:<input type="text" name="stuname"><br/><br/>
        年龄:<input type="text" name="stuage"><br/><br/>
        年级:<input type="text" name="gradeid"><br/><br/>
        <input type="submit" value="删除" style="position:relative;left: 150px">
      </form>
    </fieldset>
    </div>
</body>

 

2、Servlet(XxxxxServlet.java)

Servlet 里面包含三部分(相当于一种固定的执行模板)

//完成页面和后台映射
@WebServlet(value = "/getallstudent")
//继承 HTTPServlet
public class StudentServlet extends HttpServlet {
    //覆写service方法
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接受参数
        //2.调取service方法
        //3.跳转页面
    }
}

 

===============M (model) 模型部分 ============

3、实体类(javabean)(Student.java)

类名=表名  列名=属性名

public class Student {
    private int studentId;
    private String studentNo;
    private String stuName;
    private int StuAge;

    public Student() {
    }
    public Student(int studentId, String studentNo, String stuName, int stuAge) {
        this.studentId = studentId;
        this.studentNo = studentNo;
        this.stuName = stuName;
        StuAge = stuAge;
    }
    public int getStudentId() {return studentId;}
    public void setStudentId(int studentId) {this.studentId = studentId;}
    public String getStudentNo() {return studentNo;}
    public void setStudentNo(String studentNo) {this.studentNo = studentNo;}
    public String getStuName() {return stuName;}
    public void setStuName(String stuName) {this.stuName = stuName;}
    public int getStuAge() {return StuAge;}
    public void setStuAge(int stuAge) {StuAge = stuAge;}
}

 

4、定义操作数据库的方法(接口) (StudentDao.java[interface])

public interface StudentDao {
    //查询所有的学生
    public List<Student> getall();
    //增加学生
    public void addStudent(String studentno,String stuname,String stuage,String gradeid) throws SQLException, ClassNotFoundException;
    //删除学生
    public void deleteStudent(String studentno,String stuname,String stuage,String gradeid) throws SQLException, ClassNotFoundException;
}

 

4.5、添加数据库的依赖包,并完成配置

(druid.jar   mysql-connector.jar   standard.jar)  配置druid.properties

 

5、实现数据库操作的接口    继承 DruidUtil 工具类   覆写数据操作方法 (StudentDaoImpl.java)

public class StudentDaoImpl extends DruidUtil implements StudentDao {
    @Override
    public List<Student> 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();
                student.setStudentId(resultSet.getInt("studentid"));
                student.setStudentNo(resultSet.getString("studentno"));
                student.setStuName(resultSet.getString("stuname"));
                student.setStuAge(resultSet.getInt("stuage"));
                list.add(student);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            close(connection,preparedStatement,resultSet);
        }
        return list;
    }

    @Override
    public void addStudent(String studentno,String stuname,String stuage,String gradeid) throws SQLException, ClassNotFoundException {
        int stuageInt = Integer.parseInt(stuage);
        int gradeidInt = Integer.parseInt(gradeid);
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mytest?useUnicode=true&characterEncoding=utf-8","root","123465");
        Statement state = conn.createStatement();
        String sql="insert into student value (null,'"+studentno+"','"+stuname+"','"+stuageInt+"','"+gradeidInt+"')";
        state.executeUpdate(sql);
        state.close();
        conn.close();
    }

    @Override
    public void deleteStudent(String studentno, String stuname, String stuage, String gradeid) throws SQLException, ClassNotFoundException {
        int stuageInt = Integer.parseInt(stuage);
        int gradeidInt = Integer.parseInt(gradeid);
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mytest?useUnicode=true&characterEncoding=utf-8","root","123465");
        Statement state = conn.createStatement();
        String sql="delete from student where studentno = '"+studentno+"' and stuname = '"+stuname+"' and stuage = "+stuage+" and gradeid = "+gradeid;
        state.executeUpdate(sql);
        state.close();
        conn.close();
    }
}

 

=============C (Controller) 控制器 ===========

6、定义操作数据库的方法(接口)(StudentService.java[interface])

public interface StudentService {
    //查询所有的学生
    public List<Student> getall();
    //增加学生
    public void addStudent(String studentno,String stuname,String stuage,String gradeid) throws SQLException, ClassNotFoundException;
    //删除学生
    public void deleteStudent(String studentno,String stuname,String stuage,String gradeid) throws SQLException, ClassNotFoundException;
}

 

7、实现业务操作   实现数据操作接口    覆写数据操作方法 (StudentServiceImpl.java)

public class StudentServiceImpl implements StudentService {

    private StudentDao dao=new StudentDaoImpl();

    @Override
    public List<Student> getall() {
        return dao.getall();
    }

    @Override
    public void addStudent(String studentno,String stuname,String stuage,String gradeid) throws SQLException, ClassNotFoundException {
        dao.addStudent(studentno,stuname,stuage,gradeid);
    }

    @Override
    public void deleteStudent(String studentno, String stuname, String stuage, String gradeid) throws SQLException, ClassNotFoundException {
        dao.deleteStudent(studentno,stuname,stuage,gradeid);
    }
}

 

8、完成web.StudentServlet的逻辑

①StudentServlet.java

@WebServlet(value = "/getallstudent")
public class StudentServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接受参数
        //此请求为查询所有学生信息,所以没有参数
        //2.调取service中 查询所有学生的方法 返回一个学生集合
        StudentService studentService=new StudentServiceImpl();
        List<Student> students = studentService.getall();
        //3.跳转页面
        //设值,后面页面使用
        req.setAttribute("students",students);
        req.getRequestDispatcher("show.jsp").forward(req,resp);
    }
}

②AddStudentServlet.java

@WebServlet(value = "/addstudent")
public class AddStudentServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1、接收参数
        req.setCharacterEncoding("UTF-8");
        String studentno = req.getParameter("studentno");
        String stuname = req.getParameter("stuname");
        String stuage = req.getParameter("stuage");
        String gradeid = req.getParameter("gradeid");
        System.out.println("studentno="+studentno+";stuname="+stuname+";stuage="+stuage+";gradeid="+gradeid);
        //2、调取service方法
        StudentService studentService=new StudentServiceImpl();
        try {
            studentService.addStudent(studentno,stuname,stuage,gradeid);
        } catch (Exception throwables) {
            throwables.printStackTrace();
        } 
        //3、跳转页面
        //由后台给前台返回一段js代码 弹框显示添加学生成功
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.print("<script>alert('添加学生成功');location.href='/index.jsp'</script>");
    }
}

③DeleteStudentServlet.java

@WebServlet(value = "/deletestudent")
public class DeleteStudetnServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1、接收参数
        req.setCharacterEncoding("UTF-8");
        String studentno = req.getParameter("studentno");
        String stuname = req.getParameter("stuname");
        String stuage = req.getParameter("stuage");
        String gradeid = req.getParameter("gradeid");
        System.out.println("studentno="+studentno+";stuname="+stuname+";stuage="+stuage+";gradeid="+gradeid);
        //2、调取service方法
        StudentService studentService=new StudentServiceImpl();
        try {
            studentService.deleteStudent(studentno,stuname,stuage,gradeid);
        } catch (Exception throwables) {
            throwables.printStackTrace();
        } 
        //3、跳转页面
        //由后台给前台返回一段js代码  弹框显示删除学生成功
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.print("<script>alert('删除学生成功');location.href='/index.jsp'</script>");
    }
}

 

=============V (View) 视图 ==============

9、视图显示(show.jsp)

<body>
<h1>show.jsp</h1>
<table border="1" cellspacing="0" width="800px">
    <tr>
        <td>学生编号</td>
        <td>学生姓名</td>
        <td>学生年龄</td>
    </tr>
<c:forEach items="${students}" var="stu">
    <tr>
        <td>${stu.studentNo}</td>
        <td>${stu.stuName}</td>
        <td>${stu.stuAge}</td>
    </tr>
</c:forEach>
</table>
</body>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值