今天开始开通了程序员的BLOG,一直以来都能力朝着自己的目标努力,今天终于又迈出了一小步啊,这一步对我来说一定要坚持下去啊,总结经验真的好重要了,昨天同学要我做了一个新闻的发布管理系统,用jsp+javabean+serlvet做的,由于好久没做过了,遇到了一些小麻烦,在这里总结一下,对自己今后的学习,应该说是一个帮助了,
1,关于输出多个相同的实体的问题,也就是<c:foreach>的问题,真的花了我一点时间,自己想了个办法,说我不太会说,代玛如下:
public ArrayList getAllNews() //获取所有新闻标题
{
ArrayList list=new ArrayList();
String sql = "select * from news";
int i=0;
try
{
prepar = conn.prepareStatement(sql);
res = prepar.executeQuery();
while (res.next())
{
NewsBean news = new NewsBean();
news.setNewsTitle(res.getString("newsTitle"));
news.setNewsId(res.getInt("newsId"));
list.add(i,news);
++i;
}
}
catch (SQLException ex)
{
ex.printStackTrace();
}
return list;
}
获取所有的新闻内容,开始我直接用list.add(news),怎么也取不了所有的新闻,虽然他的size()大小一样,但是他里面的内容却都是最后一个了,高了我好久,才发现TMD原来覆盖了以前的内容,所以我后来用了这个add(i,element),这个真的有用了,果然解决问题了,呵呵,再servlet代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException
{
if (request.getParameter("userName") != null &&
request.getParameter("userPwd") != null)
{
String userName = request.getParameter("userName");
String userPwd = request.getParameter("userPwd");
DbBean db = new DbBean();
UserBean ub=db.checkUsersLogin(userName, userPwd);
if(ub!=null){
ArrayList news=db.getAllNews();
ArrayList news1=new ArrayList();
request.getSession().setAttribute("news1",news);
response.sendRedirect("index.jsp");
}
else{
response.sendRedirect("failure.jsp");
}
}
}
后面页面index.jsp
<c:forEach items="${news1}" var="news2" varStatus="status">
<tr><br>
主题<td><a href="lookservlet?id=${news2.newsId}">${news2.newsTitle}</a></td>
<td><a href="seleteservlet?id=${news2.newsId}">编辑</a></td>
<td> <a href="deleteservlet?id=${news2.newsId}">删除</a> </td><br>
</tr>
</c:forEach>
完成了,基本上的功能,这个功能在我们开发中应该非常常用了,以后注意了!
2.还有UPDATE的问题了,TMD我遇到了一个 mysql的一个错误 Truncated incorrect DOUBLE value真的好郁闷啊,开始我也不知道那里出错了,
开始错误的代码:
String sql = "UPDATE news SET newsContent=?";
sql+=",newsTitle=? WHERE newsId=?";
prepar = conn.prepareStatement(sql);
System.out.println(newsTitle);
System.out.println(newsContent);
prepar.setInt(1, newsId);
prepar.setString(2, newsTitle);
prepar.setString(3,newsContent);
int unum=prepar.executeUpdate();
System.out.println(unum);
这应该没问题啊,我怎么想也想不通了,靠后面我把那个1,2,3的顺序改了一下,就可以了,真是没遇到这么变态的情况了,呵呵,但是还是解决了问题,真的不容易,正确的如下:
prepar.setInt(3, newsId);
prepar.setString(2, newsTitle);
prepar.setString(1,newsContent);
真的无语啊,呵呵
今天也不知道写了些什么,但是我只知道这条路虽然漫长,可能更多的时候是艰苦,但是我会坚持了,坚持写日志,总结学习中的问题,对自己来说也是一种收获啊,新闻管理系统完成了,哈哈,还是有点小成就感的啊,其实我觉的现在的我已经以后算是一个高手了啊,呵呵,因为对与那些简单的功能来说我基本上不用想了,空手完成了,呵呵,要谦虚了,设计莫试加油啊,好难啊,加油了!