1.我们可以在列表文章列中直接快速的查看内容,但是这样做,当文章中的内容过多时,直接在列表查看文章中显示内容会让排版出现问题,如此下图
2.完善articleDao中的功能
思路:通过文章的ID去到数据库中查询文章的详细内容,类似之前写的获取全部文章的代码思路
首先定义sql语句通过文章id查询到文章内容
然后拿到数据库连接
再定义一个article对象
接下来执行sql语句
定义ps对象的第一个值为id
再通过ps.executeQuery()方法,拿到文章内容,放到结果集rs中
最后释放资源
public Article getArticleById(int id){
String sql = "select * from t_article where id=?";
Connection conn = DBUtil.getConnection();
Article article = null;
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1,id);
ResultSet rs = ps.executeQuery();
while(rs.next()){
article = new Article();
article.setId(rs.getInt("id"));
article.setTitle(rs.getString("title"));
article.setContent(rs.getString("content"));
}
DBUtil.release(rs,null,ps,conn);
} catch (SQLException e) {
e.printStackTrace();
}
return article;
}
3.新建ArticleDetialServlet,详细展示内容功能的servlet
首先在dopost方法中,调用doget方法
接下来写doget方法
首先应该拿到文章的id,在网页中点击文章标题时时,会显示点击文章的id,这时候会通过get方式提交拿到需要的id
parseInt(request.getParameter("id"));
在网页前端中输入的所有数字,都是字符型的数值,我们在数据库中使用的id,必须是数值型的,所以在后台使用id时,应该把字符型转换成数值型,通过Integer方法
int id = Integer.parseInt(request.getParameter("id"));
接着定义一个articleDao对象dao
ArticleDao dao = new ArticleDao();
再定义一个Article对象article用来存放dao对象获得的id值
Article article = dao.getArticleById(id);
接着在requset对象中定义一个键值对,键是article,值为articledaodao
request.setAttribute("article",article);
然后跳转到文章详情界面(articleDetial.jsp),并把响应request带过去
request.getRequestDispatcher("/articleDetail.jsp").forward(request,response);
4.新建articleDetial.jsp
设置文章标题和内容即可
<h1>${article.title}</h1>
${article.content}