元数据

Meata data

描述数据的数据 String sql , 描述这份sql字符串的数据叫做元数据

数据库元数据 DatabaseMetaData
参数元数据 ParameterMetaData
结果集元数据 ResultSetMetaData

MVC设计模式

JSP的开发模式

16-MVC - 图1

三层架构&MVC练习

16-MVC - 图2

学生信息管理系统

数据库准备

  1. CREATE DATABASE stus;
  2. USE stus;
  3. CREATE TABLE stu (
  4. sid INT PRIMARY KEY AUTO_INCREMENT,
  5. sname VARCHAR (20),
  6. gender VARCHAR (5),
  7. phone VARCHAR (20),
  8. birthday DATE,
  9. hobby VARCHAR(50),
  10. info VARCHAR(200)
  11. );

查询

  1. 先写一个JSP 页面, 里面放一个超链接 。
    学生列表显示

  2. 写Servlet, 接收请求, 去调用 Service , 由service去调用dao

  3. 先写Dao , 做Dao实现。
    public interface StudentDao {

     /**
    
    • 查询所有学生

      • return List
        */
        List findAll() throws SQLException ;
        }



/**

         * 查询所有学生<br />
         * [throws ](/throws ) SQLException <br />
         */<br />
        [Override ](/Override ) <br />
        public List findAll() throws SQLException {<br />
            QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());<br />
            return runner.query("select * from stu", new BeanListHandler(Student.class));<br />
            }<br />
<br />
    }
  1. 再Service , 做Service的实现。

    /**
    * 这是学生的业务处理规范
    * @author xiaomi
    *
    */
    public interface StudentService {
    
      /**
       * 查询所有学生
       * @return  List<Student>
       */
      List<Student> findAll()  throws SQLException ;
    
    }
    
    ------------------------------------------
    
    /**
    * 这是学生业务实现
    * @author xiaomi
    *
    */
    public class StudentServiceImpl implements StudentService{
    
      @Override
      public List<Student> findAll() throws SQLException {
          StudentDao dao = new StudentDaoImpl();
          return dao.findAll();
      }
    }
    
  1. 在servlet 存储数据,并且做出页面响应。
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    



try {
//1. 查询出来所有的学生
StudentService service = new StudentServiceImpl();
List list = service.findAll();

//2. 先把数据存储到作用域中
request.setAttribute(“list”, list);
//3. 跳转页面
request.getRequestDispatcher(“list.jsp”).forward(request, response);

} catch (SQLException e) {
e.printStackTrace();
}
}

  1. 在list.jsp上显示数据
    EL + JSTL + 表格

增加

  1. 先跳转到增加的页面 , 编写增加的页面

  2. 点击添加,提交数据到AddServlet . 处理数据。

  3. 调用service

  4. 调用dao, 完成数据持久化。

  5. 完成了这些存储工作后,需要跳转到列表页面。 这里不能直接跳转到列表页面,否则没有什么内容显示。 应该先跳转到查询所有学生信息的那个Servlet, 由那个Servlet再去跳转到列表页面。

  6. 爱好的value 值有多个。
    request.getParameter(“hobby”);
    String[] hobby = request.getParameterValues(“hobby”) —-> String[]
    String value = Arrays.toString(hobby): // [爱好, 篮球, 足球]

删除

  1. 点击超链接,弹出一个询问是否删除的对话框,如果点击了确定,那么就真的删除。
    <a href="#" onclick="doDelete(${stu.sid})">删除</a>
    
  1. 让超链接,执行一个js方法