MVC编程模式
1.关于MVC
①.M:Model
②.V:View
③.C:Controller
MVC是Model-View-Controller的简称,即模型-视图-控制器。
MVC是一种设计模式,它把应用程序分成三个核心模块:模型、视图、控制器,它们各自处理自己的任务。
2.好处:对一个请求不使用MVC,Servlet、JSP都可以实现,但是这样的缺点就是需要在Servlet中拼写html代码,在JSP中书写处理请求的代码
MVC的处理过程
下述代码不足之处:没有使用数据库连接池、DBUtils、DAO等等,一个请求一个Servlet,应该是多个请求(一个模块)一个Servlet,删除时候没有加入jquery。只是为了呈现例子。
此处使用
M(DAO)
V(JSP)在页面上填写java代码实现显示
C(Servlet):受理请求,获取请求参数,调用DAO方法,把DAO的返回值放入request中,转发(重定向)页面。
来呈现。
3.代码呈现
创建学生表:id ,name ,hiredatemvc_query.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> <!-- 注意servlet-mapp一致 --> <a href="getAllStudent">获取所有学生信息</a> </body> </html>
mvc_query_servlet.java
/** * Servlet implementation class mvc_query_servlet */ @WebServlet("/getAllStudent") public class mvc_query_servlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("/mvc_query_show.jsp") .forward(request, response); } }
mvc_query_show.jsp
<%@page import="xixihaha.StudentDAO"%> <%@page import="xixihaha.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> <table border="1" cellpadding="10" cellspacing="0"> <tr> <th>IDCard</th> <th>Name</th> <th>Hire_Date</th> <th>Delete</th> </tr> <% StudentDAO dao = new StudentDAO(); List<Student> ls = dao.getAll(); for(Student s : ls){ %> <tr> <td> <%=s.getIdCard() %> </td> <td> <%=s.getStuName() %> </td> <td> <%=s.getHireDate().toString() %> </td> <td> <!-- get请求,区分删的是哪条信息 --> <a href="deleteStu?id=<%=s.getIdCard() %>">Delete</a> </td> </tr> <% } %> </table> </body> </html>studentDAO.java
public class StudentDAO { private Connection getConnection(){ Connection conn = null; String driverClass = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://127.0.0.1:3306/mydatabase"; String user = "root"; String password = "qiaolezi"; try { Class.forName(driverClass); conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace(); } return conn; } /** * 删除指定id的学生 * @param id */ public void deleteId(Integer id){ PreparedStatement ps = null; String sql = "delete from students where id = ?"; try { ps = getConnection().prepareStatement(sql); ps.setInt(1, id); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } /** * 获取所有学生信息 * @return */ public List<Student> getAll(){ PreparedStatement ps = null; ResultSet rs = null; List<Student> students = new ArrayList<Student>(); try { String sql = "select id ,stu_name,hire_date from students"; ps = getConnection().prepareStatement(sql); rs = ps.executeQuery(); while(rs.next()){ int id = rs.getInt(1); String name = rs.getString(2); Date date = (Date)rs.getObject(3); students.add(new Student(id,name,date)); } } catch (Exception e) { e.printStackTrace(); } return students; } }
关于什么时候重定向?
若目标的响应页面,不需要从request读取任何值,则可以使用重定向。还可以防止表单的重复提交。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。