• MVC设计模式-查询与删除


    MVC是Model-View-Controller的简称,即模型-视图-控制器。
    MVC是一种设计模式,它把应用程序分成三个核心模块:

                                                 模型:模型是应用程序的主体部分,模型表示业务数据和业务逻辑。

                                                         一个模型能为多个视图提供数据。

                                                 视图: 视图是用户看到并与之交互的界面,作用如下:

                                                                                                                    视图向用户显示相关的数据。

                                                                                                                    接受用户的输入。

                                                                                                                    不进行任何实际的业务处理。

                                                 控制器: 控制器接受用户的输入并调用模型和视图去完成用户的需求。

                                                              控制器接收请求并决定调用哪个模型组件去处理请求,

                                                              然后决定调用哪个视图来显示模型处理返回的数据。

    粗糙的MVC设计模式- 查询与删除

    1.创建examstudent表

    Model模型

    StudentDao.java

    package com.aff.javaweb.mvc;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.aff.bean.Student;
    import com.aff.util.JDBCUtilsC3P0;
    
    public class StudentDao {
        public void deleteByFlowId(Integer flowId) {
            Connection conn = null;
            PreparedStatement ps = null;
            try {
                conn = JDBCUtilsC3P0.getConnection();
                String sql = "delete from examstudent where flow_Id = ?";
                ps = conn.prepareStatement(sql);
                ps.setInt(1, flowId);
                ps.executeUpdate();
            } catch (Exception e) {
            } finally {
                JDBCUtilsC3P0.closeResource(conn, ps, null);
            }
        }
    
        public List<Student> getAll() {
    
            List<Student> students = new ArrayList<>();
            Connection conn = null;
            PreparedStatement ps = null;
            ResultSet rs = null;
            try {
                conn = JDBCUtilsC3P0.getConnection();
                String sql = "select flow_id  flowId,Type, id_card  idCard, examCard, student_name studentName, Location, Grade from examstudent";
                ps = conn.prepareStatement(sql);
                rs = ps.executeQuery();
                while (rs.next()) {
                    int flowId = rs.getInt(1);
                    int type = rs.getInt(2);
                    String idCard = rs.getString(3);
                    String examCard = rs.getString(4);
                    String studentName = rs.getString(5);
                    String location = rs.getString(6);
                    int grade = rs.getInt(7);
    
                    Student student = new Student(flowId, type, idCard, examCard, studentName, location, grade);
                    students.add(student);
                }
            } catch (Exception e) {
            } finally {
                JDBCUtilsC3P0.closeResource(conn, ps, rs);
            }
            return students;
        }
    }

    Controller 控制器

    ListAllStudentsServlet.java

    package com.aff.javaweb.mvc;
    
    import java.io.IOException;
    import java.util.List;
    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 com.aff.bean.Student;
    
    @WebServlet("/listAllStudents")
    public class ListAllStudentsServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            StudentDao studentDao = new StudentDao();
            List<Student> students = studentDao.getAll();
            request.setAttribute("students", students);
            request.getRequestDispatcher("/students.jsp").forward(request, response);
        }
    }

    DeleteStudentServlet.java

    package com.aff.javaweb.mvc;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @WebServlet("/deleteStudent")
    public class DeleteStudentServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String flowId = request.getParameter("flowId");
            
            StudentDao studentDao = new StudentDao();
            studentDao.deleteByFlowId(Integer.parseInt(flowId));// 把传来的string类型强转为int类型
    
            request.getRequestDispatcher("/success.jsp").forward(request, response);
        }
    
    }

    VIEW 视图

    test

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <a href="listAllStudents">ListAllStudents</a>
    </body>
    </html>

    students.jsp

    <%@page import="com.aff.bean.Student"%>
    <%@page import="java.util.List"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
        <%
            List<Student> stus = (List<Student>) request.getAttribute("students");
        %>
    
        <table border="1" cellpadding="10" cellspacing="0">
            <tr>
                <td>FlowId</td>
                <td>Type</td>
                <td>IdCard</td>
                <td>ExamCard</td>
                <td>StudentName</td>
                <td>Location</td>
                <td>Grade</td>
                <td >Delete</td>
            </tr>
    
            <%
                for (Student student : stus) {
            %>
            <tr>
                <td><%=student.getFlowId()%></td>
                <td><%=student.getType()%></td>
                <td><%=student.getIdCard()%></td>
                <td><%=student.getExamCard()%></td>
                <td><%=student.getStudentName()%></td>
                <td><%=student.getLocation()%></td>
                <td><%=student.getGrade()%></td>
                <td ><a href="deleteStudent?flowId=<%=student.getFlowId()%>">Delete</a></td>
                
            </tr>
    
            <%
                }
            %>
    
        </table>
    
    </body>
    </html>

    success.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <h3>Success Page</h3>
        <a href="listAllStudents">List All Students</a>
    </body>
    </html>

    javabean

    Student.java

    package com.aff.bean;
    
    public class Student {
        private Integer flowId;
        private int type;
        private String idCard;
        private String examCard;
        private String studentName;
        private String location;
        private int grade;
    
        public Student() {
            super();
        }
    
        public Student(Integer flowId, int type, String idCard, String examCard, String studentName, String location,
                int grade) {
            super();
            this.flowId = flowId;
            this.type = type;
            this.idCard = idCard;
            this.examCard = examCard;
            this.studentName = studentName;
            this.location = location;
            this.grade = grade;
        }
    
        public Integer getFlowId() {
            return flowId;
        }
    
        public void setFlowId(Integer flowId) {
            this.flowId = flowId;
        }
    
        public int getType() {
            return type;
        }
    
        public void setType(int type) {
            this.type = type;
        }
    
        public String getIdCard() {
            return idCard;
        }
    
        public void setIdCard(String idCard) {
            this.idCard = idCard;
        }
    
        public String getExamCard() {
            return examCard;
        }
    
        public void setExamCard(String examCard) {
            this.examCard = examCard;
        }
    
        public String getStudentName() {
            return studentName;
        }
    
        public void setStudentName(String studentName) {
            this.studentName = studentName;
        }
    
        public String getLocation() {
            return location;
        }
    
        public void setLocation(String location) {
            this.location = location;
        }
    
        public int getGrade() {
            return grade;
        }
    
        public void setGrade(int grade) {
            this.grade = grade;
        }
    
        @Override
        public String toString() {
            return "Student [flowId=" + flowId + ", type=" + type + ", idCard=" + idCard + ", examCard=" + examCard
                    + ", studentName=" + studentName + ", location=" + location + ", grade=" + grade + "]";
        }
    
    }

    小结:

    关于 MVC:
               M: Model. Dao
               V: View. JSP, 在页面上填写 Java 代码实现显示
              C: Controller. Serlvet:
                                           受理请求
                                           获取请求参数
                                           调用 DAO 方法
                                           可能会把 DAO 方法的返回值放入 request 中
                                           转发(或重定向)页面
    什么时候转发,什么时候重定向 ? 若目标的响应页面不需要从 request 中读取任何值,则可以使用重定向。(还可以防止表单的重复提交)

    不足:
    使用DBUtils,JDBCUtils 工具类,DAO 基类
    一个请求一个 Serlvet 不好!一个模块使用一个 Serlvet,即多个请求可以使用一个 Servlet
    在页面上加入 jQuery 提示

    All that work will definitely pay off
  • 相关阅读:
    UIWebvView 解决onClick 延迟相应问题
    MySQL 5.6.x 配置数据库主从复制
    SDWebImage 常用方法
    OSX/iOS 播放系统声音
    UIView 设置阴影(属性说明)
    Response的Content-Type一览
    Linux查看端口占用情况并释放端口占用
    Windows安装配置Anaconda2/PyCharm
    bui框架nav导航图标一览
    服务器验证码乱码问题记录(字体库添加)
  • 原文地址:https://www.cnblogs.com/afangfang/p/12724669.html
Copyright © 2020-2023  润新知