JavaWeb应用MVC开发模式(一)
学生用户模块-查询
为了对学生用户实体进行管理,首先要创建一个JavaBean类Stu,然后创建一个数据库访问类StuDao。
1.模型层
在StuDao类内增加查询全部学生用户的方法findAll(),因为需要返回多个Stu对象,因此返回值设为ArrayList类型的列表,代码如下:
//查找所有学生用户,返回Stu列表对象
public ArrayList<Stu> findAll(){
ArrayList<Stu> stus=new ArrayList<Stu>();
java.sql.Connection conn=null;
java.sql.PreparedStatement pre=null;
java.sql.ResultSet rs=null;
try{
conn=DBUtil.getConnection();
String sql="select * from stu";
pre=conn.prepareStatement(sql);
rs=pre.executeQuery();
while(rs.next()){
Stu stu=new Stu();
stu.setUserid(rs.getInt("userid"));
stu.setUsername(rs.getString("username"));
stu.setPassword(rs.getString("password"));
stu.setRegip(rs.getString("regip"));
stu.setRegtime(rs.getString("regtime"));
stus.add(stu);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs!=null)
rs.close();
if(pre!=null)
pre.close();
if(conn!=null)
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
return stus;
}
如果需要按照用户名进行查询,可以设计一个findByusername(String username)方法,具体实现可以参照上面的例子进行修改。
2.控制层
控制层可以用一个Servlet来实现,doget()方法主要部分示例代码如下:
String webroot=request.getContextPath();
StuDao studao=new StuDao();
Stu stu=new Stu();
ArrayList<Stu> stus=studao.findAll();
request.setAttribute("stus", stus);
request.getRequestDispatcher("Admin/manage.jsp").forward(request, response);
3.视图层
视图层在Admin目录下新建一个manage.jsp页面,接收servlet转发的请求中携带的stus属性,其值是一个保存了所有学生用户JavaBean对象的列表,manage.jsp页面将这些对象展现出来,其中用到了JSTL标签,使用方法可以参考菜鸟教程JSTL标签库的介绍。
页面主要代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>MVC</title>
</head>
<body>
<h3><a href="StuHandle.do">查询全部用户</a></h3>
<p>总计 ${stus.size()} 位学生:</p>
<table border="1">
<tr>
<td>用户名</td>
<td>注册ip</td>
<td>注册时间</td>
<td>操作</td>
</tr>
<c:forEach items="${stus}" var="stu" varStatus="rows">
<tr>
<td>${stu.username}</td>
<td>${stu.regip}</td>
<td>${stu.regtime}</td>
</tr>
</c:forEach>
</table>
</body>
</html>