元数据
Meata data
描述数据的数据 String sql , 描述这份sql字符串的数据叫做元数据
数据库元数据 DatabaseMetaData
参数元数据 ParameterMetaData
结果集元数据 ResultSetMetaData
MVC设计模式
JSP的开发模式
![]()
三层架构&MVC练习
![]()
学生信息管理系统
数据库准备
CREATE DATABASE stus;USE stus;CREATE TABLE stu (sid INT PRIMARY KEY AUTO_INCREMENT,sname VARCHAR (20),gender VARCHAR (5),phone VARCHAR (20),birthday DATE,hobby VARCHAR(50),info VARCHAR(200));
查询
先写一个JSP 页面, 里面放一个超链接 。
学生列表显示写Servlet, 接收请求, 去调用 Service , 由service去调用dao
先写Dao , 做Dao实现。
public interface StudentDao {
/**查询所有学生
- return List
*/
List findAll() throws SQLException ;
}
- return List
/**
* 查询所有学生<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 />
}
再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(); } }
- 在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();
}
}
- 在list.jsp上显示数据
EL + JSTL + 表格
增加
先跳转到增加的页面 , 编写增加的页面
点击添加,提交数据到AddServlet . 处理数据。
调用service
调用dao, 完成数据持久化。
完成了这些存储工作后,需要跳转到列表页面。 这里不能直接跳转到列表页面,否则没有什么内容显示。 应该先跳转到查询所有学生信息的那个Servlet, 由那个Servlet再去跳转到列表页面。
爱好的value 值有多个。
request.getParameter(“hobby”);
String[] hobby = request.getParameterValues(“hobby”) —-> String[]
String value = Arrays.toString(hobby): // [爱好, 篮球, 足球]
删除
- 点击超链接,弹出一个询问是否删除的对话框,如果点击了确定,那么就真的删除。
<a href="#" onclick="doDelete(${stu.sid})">删除</a>
- 让超链接,执行一个js方法
