文章目录
准备工作
在前面更新的系统内容上进行代码演示,如果不了解的朋友们,可以看一下之前的帖子,传送门
本文主要思路,将查询结果用list保存并层层传递,通过session方法在jsp展示
1、在UserDaoImpl类中完善queryAll方法
public ArrayList<User> queryAll() {
String sql="select * from user";
getConn(DRIVER,URL,USERNAME,PASSWORD);
query(sql);
ArrayList<User> list=new ArrayList();
try {
while (getRs().next()){
User u=new User();
u.setUser_name(getRs().getString("user_name"));
u.setUser_id(getRs().getInt("user_id"));
u.setPassword(getRs().getString("password"));
list.add(u);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
2、在UserServiceImpl中完善queryAll方法
这里只做简单的演示,为了更加清晰,不做其他情况判断了
public ArrayList<User> queryAll() {
return dao.queryAll();
}
3、在UserServlet中完善service方法和query方法
void query(HttpServletRequest req, HttpServletResponse resp){
ArrayList<User> users = service.queryAll();
req.getSession().setAttribute("1",users);
try {
resp.sendRedirect("/login/query.jsp");
} catch (IOException e) {
e.printStackTrace();
}
}
4、新建queryAll.jsp文件
用来触发请求
<html>
<head>
<title>点击查询页面</title>
</head>
<body>
<form action="/queryAll">
<p><input type="text" name="type" value="query" hidden></p>
<p><input type="submit"></p>
</form>
</body>
</html>
5、新建query.jsp文件
用来展示最后的数据
<html>
<head>
<title>客户信息显示</title>
</head>
<body>
<%
Object users = session.getAttribute("1");
if (null!=users && users instanceof ArrayList){
ArrayList<User> list = (ArrayList<User>) users;
for(User user:list){
%>
<tr>
<td><%=user.getUser_id()%></td>
<td><%=user.getUser_name()%></td>
<td><%=user.getPassword()%></td>
</tr>
<%
}
}
%>
</body>
</html>
6、web.xml中对应新增映射
<servlet-mapping>
<servlet-name>queryAll</servlet-name>
<url-pattern>/queryAll</url-pattern>
</servlet-mapping>
总结
从前台发送请求,到后台接收,再执行完指定功能,最后将返回值传给前台的执行顺序
1、Web层/Servlet层(前、后台交互层)
2、Service层(业务层:业务代码层)
3、Dao层(持久化层:逻辑代码处理层)
4、实体类(例如:User类等)
5、工具类(例如:Property等)
对应上面的新增代码序号,流转的逻辑为:4–>3–>2–>1–>2–>3–>5的顺序