嵌入班级信息到System页面
这一部分要实现班级信息的相关操作。
还是在名为servlet的package下创建一个显示班级列表的Servlet——ClazzServlet。这样取名字是避免与系统关键字class起冲突,以免出现不必要的麻烦。
public class ClazzServlet extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException{
doPost(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
}
}
接下来还是要在web.xml中对这个Servlet进行配置,建立与访问路径的一个映射。
<servlet>
<description>班级信息管理</description>
<servlet-name>ClazzServlet</servlet-name>
<servlet-class>com.ischoolbar.programmer.servlet.ClazzServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ClazzServlet</servlet-name>
<url-pattern>/ClazzServlet</url-pattern>
</servlet-mapping>
第三步,我们打开素材文件,找到clazzList.jsp,将其复制到view目录下。
打开里面部分代码如下面所示,我们之前已经将左边的菜单栏布置好了,当用户点击菜单栏中的班级列表时,我们需要将clazzList.jsp在右边显示出来。
public class ClazzServlet extends HttpServlet {
private static final long serialVersionUID = -7264164305513332635L;
public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException{
doPost(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException{
String method = req.getParameter("method");
if("toClazzListView".equals(method)){
clazzList(req,res);
}
}
private void clazzList(HttpServletRequest req, HttpServletResponse res) throws IOException {
// TODO Auto-generated method stub
try {
req.getRequestDispatcher("view/clazzList.jsp").forward(req, res);
} catch (ServletException e) {
e.printStackTrace();
}
}
从system.jsp中有这样一行代码,这个请求就是发往ClazzServlet的,并且传入了一个参数 toClazzListView,我们根据这个参数实现了请求转发。
{
"menuid":"42","menuname":"班级列表","icon":"icon-house","url":"ClazzServlet?method=toClazzListView"},
现在已经将班级列表页面,即clazzList.jsp能够动态的嵌入到System.jsp中了,打开clazzList.jsp,有这样的几行代码:功能是显示班级列表,通过传递getClazzList来显示班级列表。
$('#dataList').datagrid({
....
....(部分代码省略)
method: "post",
// 给服务器发送请求
url:"ClazzServlet?method=getClazzList&t="+new Date().getTime(),
idField:'id',
....
....(部分代码省略)
})
我们按照这里给出的url在ClazzServlet中进行参数的传递,ClazzServlet的doPost方法就成了下面的样子。我们通过调用的getClazzList()方法来显示从数据库中读取的数据。
public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException{
String method = req.getParameter("method");
if("toClazzListView".equals(method)){
clazzList(req,res);
}else if("getClazzList".equals(method)){
getClazzList(req, res);
}
}
读取数据库的信息
但是我们还没有实现从数据库中读取列表的方法。
接下来我们要创建一个班级列表的model类——Clazz.java,并且附上相应的get和set方法。
public class Clazz {
private int id;
private String name;
private String info;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
....(部分代码省略)
}
有了model,我们就可以相应的在dao的package下创建一个dao——ClazzDao。
我们还要根据显示的页面来实现数据的分页显示,在这之前我们创建一个Page的model,但是这个类并没有在数据库中对应存在的数据表,只是方便在分页的时候做处理。
public class Page {
private int start; // 起始页
private int currentPage; // 当前页
private int pageSize; // 每页显示的数量
public Page(int curruntPage,int pageSize){
this.start = (curruntPage-1)*pageSize;
this.currentPage = curruntPage;
this.pageSize = pageSize;
}
public int getStart() {
return start;
}
....(部分代码省略)
从这个类的的构造函数中可以看出,每一页的起始页都是当前的页数减一再乘以每一页的数目,这一点不难理解。
有了page之后,可以在ClazzDao中实现查询班级列表的方法。
public List<Clazz> getClazzList(Clazz clazz,Page page){
List<Clazz> ret = new ArrayList<Clazz>();
String sql = "select * from s_clazz";
if(!StringUtil.isEmpty(clazz.getName())){
sql += " where name like '%" + clazz.getNam