来写一些细节吧
- 修改博文(注意:原博文分类的默认选中显示)
- 权限问题(一般人浏览,博主增删改查)
- 问题简要分析(前台接收不到后台数据)
- 分页(未完成、待定)
一、修改博文
修改分为两个部分:1、查询出原来的。2、提交修改之后的
问题描述:表category和blog(含外键category_id,但是并没有分类的name)
blog实体中
private int id;
private String title;
private String content;
private String createdTime;
private String category;
private int categoryId;
分类实体中
private int id;
private String name;
.....
在博文管理页面传入当前blog的id,访问
href="${pageContext.request.contextPath }/PreEditBlogServlet?id=${blog.id}"
在 PreEditBlogServlet中,查询出当前博文和所有分类的信息,存到域中
// 查询博文
try {
sql = "select id,title,content,category_id as categoryId from blog where id="+ id;
blog = qr.query(sql, new BeanHandler<Blog>(Blog.class));
} catch (Exception e) {
e.printStackTrace();
}
//查询分类
try {
sql = "SELECT * FROM category ORDER BY LEVEL DESC,id DESC";
list = qr.query(sql, new BeanListHandler<Category>(Category.class)); //
} catch (SQLException e) {
e.printStackTrace();
}
前台获取数据时,使文章的分类默认选中
<td>类别:</td>
<td><select name="category" id="select">
<c:forEach items="${list}" var="listlist">
<c:if test="${blog.categoryId==listlist.id}">
<option value="${listlist.id }" selected>${listlist.name }</option>
</c:if>
<c:if test="${!(blog.categoryId==listlist.id)}">
<option value="${listlist.id }" >${listlist.name }</option>
</c:if>
</c:forEach>
</select></td>
然后就提交博客吧,感觉这些简单点的操作相对来说都是考察sql语句的
二、权限问题
这里使用到了session,根据session域中是否有User数据来判断,用户是否具有权限,如果没有那就跳转到登录界面(小提示:可以做成一个jsp页面,在需要权限的地方,顶部引入这个页面即可)
HttpSession session=request.getSession();
User user=(User) session.getAttribute("user");
if(user==null){
response.sendRedirect("/blog/admin/login.jsp");
}
三、问题分析
我们在做这些东西的时候,烦什么 写了一堆代码,前台数据接收不到,瞬间懵比。
这里我写下自己目前的排查方式吧(应该适合新手 =.=!,毕竟我算是个新手)
排查错误,是不是这个bean对象的所有数据都接受不到?还是部分数据接收不到
在bean中 toString() 然后在相应的Servlet中输出,查看具体的属性值
如果是部分数据接收不到 查看sql语句 看具体起的什么别名(别名和bean属性相对应)
另外bean属性的类型 和 数据库表中字段的类型 要一致
最后关于手写分页:待定。