列表查询——初级
该案例很好地运用了MVC设计模式的思路,值得借鉴
最下面这张图画的很好,思路思路就很清晰了,首先要查询用户信息,跳转到UserListServlet中去,这里面的功能是把数据库中查询到的消息封装成包含一个个User对象的容器,这就需要先定义一个UserService接口,同时UserServiceImpl类实现该接口,之后调用就是UserService service = new UserServiceImpl();这是面向接口思想。然后调用service中的findAll方法,能返回数据库查询到的所有对象,把它们封装成一个集合List,返回的是List容器,接下来进行dao层的编写,先用数据库连接池连接数据库,引入相应的Druid的jar包,这一步要烂熟于胸!然后在UserDao接口中定义一个findAll方法,类UserDaoImpl去实现该接口,在该类中建立JdbcTemplate对象,重写接口中的findAll方法,在该方法中进行数据查找,建立sql语句,然后:
List<User> users = template.query(sql, new BeanPropertyRowMapper<User>(User.class));
查询到数据库中的对象,这里我没有加筛选条件,查到的是全部表中数据,查询后返回一个容器,该方法在UserService中的findAll方法中被调用,又返回该容器,其实个类里面的方法最好别起名为findAll,容易被人误解,而且他们又都要是public的,不能改成private,子类的访问权限是不能比父类小的,因为要被别的类访问,friendly是同一个包里的其他类才可以访问,明显就不满足了。
接下来调用返回的容器到了UserListServlet中,这里面负责将该集合放到request域中,转发到list.jsp页面显示,list.jsp页面要通过编写JSTL(ferEach)和EL(${user.name}…)表达式遍历该容器所有对象,输出到页面,要使用JSTL,先导入jar包,然后:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
循环操作:
<c:forEach items="${users}" var="user" varStatus="s" >
然后输入每个元素:
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.gender}</td>
<td>${user.age}</td>
<td>${user.address}</td>
<td>${user.qq}</td>
<td>${user.email}</td>
下面是案例的思维导图:
至此,案例完成。