用JSP做后台管理系統


添加新聞

/**
  * 獲取從頁面讀取的數據
  * @param request
  * @return 單個新聞信息
  * @throws UnsupportedEncodingException
  */
 private News getNews(HttpServletRequest request) throws UnsupportedEncodingException {
  request.setCharacterEncoding("UTF-8");
  //讀取用戶選擇的是哪一個主題ID
  String id = request.getParameter("topic");
  //把值轉換為Int類型 傳給 Topic實體類
  Topic topic = new Topic(Integer.parseInt(id));
  //標題
  String title = request.getParameter("title");
  //作者
  String author = request.getParameter("author");
  //摘要
  String summary = request.getParameter("summary");
  //內容
  String ncontent = request.getParameter("ncontent");
  
  News news = new News(topic,title,author,summary,ncontent); 
  
  return news;
 }

 /**
  * 添加新聞
  */
 public void addNews(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
  boolean b = ndi.addNews(getNews(request));  
  if( b){
   selectNews(request, response);
   }else{
    request.setAttribute("errorInfo", "新聞添加失敗!");
    request.getRequestDispatcher("error.jsp").forward(request, response); 
   }
 }

下面詳細說為什么獲取錯了。

第一步:

  我先手動從數據庫往表中添加數據,結果發現可以。但是不能執行。

第二步:

  我修改了要添加進news實體類中的值,改為了字符串而並非是頁面的內容,結果上面顯示說,有FK約束。還是不能執行。

第三步:

  終於知道錯誤所在了,好開心。然后就把我之前建錯的外鍵約束給改了。

  t_news : id ==t_topic : id ---> t_news : tid == t_topic : id

  因為我把兩個表中的主鍵給關聯一起了,所以就不能執行。改成新聞表中的主題ID列與主題表中的ID列相對應就可以了。結果發現還是不能執行。

第四步:

  又跳轉到頁面上,發現我竟然沒有給下拉菜單個名字!!

  唉,真是粗心大意的我啊。然后想起了教員所謂的要讓程序找到你的下拉框才能給值,於是就給了id。

  這樣應該就行了吧。結果還是不行。

第五步:

  問了教員。他就看了一眼,說了句:

  <%--想要獲取select的value值,就需要給他一個名字。切記:用name而非id,ID是唯一的,適用於CSS,name利於后台獲取 --%>

  原來,不是id而是name啊。
     <select name="topic">
      <c:forEach items="${topicList}" var="topic">      
       <option value="${topic.id}" />${topic.tname}
      </c:forEach>    
      </select>

這個項目終於能見睜開眼看世界了。看着自己創造出來的東西真心幸福。

最后告誡我一句,調試真的很重要,英語單詞真的很重要,課外知識真的很重要。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM