1.进一步整合,将所有对博文类别的操作,例如添加,修改,删除等等都放在一个Servlet中,这个时候为了让Servlet知道到底是进行哪个操作,可以在调用的时候参入一个参数method=?.例如,method=add的话就是添加博文类别,调用添加博文类别的方法
这里,又可以有两种方式,第一种方式是自己将method的值添加到url地址的后面,例如:
<a href="http://localhost:8080/blog/servlet/AdminCategoryServlet?method=delete&cid=<%=category.getId()%>" onclick="return confirm('Do you want to delete this category?')">Delete</a>
第二种方式是将method放在一个隐藏的input中,作为一个表单项传过去然后获取,例如:
<form id="form1" name="form1" method="get" action="/blog/servlet/AdminCategoryServlet">
<input name="method" id="method" type="hidden" value="postModify"/>
<input name="cid" id="cid" type="hidden" value="<%=category.getId() %>" />
</form>
然后后台的获取和处理方法:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String method = request.getParameter("method");
if (method == null) {
method = "list";
}
if (method.equalsIgnoreCase("add")) {
addCategory(request, response);
} else if (method.equalsIgnoreCase("delete")) {
deleteCategory(request, response);
} else if (method.equalsIgnoreCase("preModify")) {
preModifyCategory(request, response);
} else if (method.equalsIgnoreCase("postModify")) {
postModifyCategory(request, response);
} else if (method.equalsIgnoreCase("list")) {
listCategory(request, response);
}
}
2.修改一下添加博文中的类别列表选项,由于列表是动态的,根据数据库取出来的,所以这里就涉及到了数据库操作,但是这样就不符合MVC的设计模式了,所以,最好是在添加博文之前首先获取出类别列表,所以新建一个servlet-PreAddBlogServlet!
最终前台如下:
<td>
<label for="category"></label>
<select name="category" id="category">
<%
List list = (List) request.getAttribute("categorylist");
Category c = null;
for (int i = 0, size = list.size(); i < size; i++) {
c = (Category) list.get(i);
%>
<option value="<%=c.getId()%>">
<%=c.getName()%>
</option>
<%
}
%>
</select>
</td>