2013-06-23 220 views
3

如標題所述,我需要將數據從我的JSP頁面傳遞到我的servlet。 我將一個數據庫中的數據加載到我的JSP頁面的一個表單中。 現在用戶應該能夠更改該數據。 所以我必須將更改後的數據發送回我的servlet來更新我的數據庫。 因此,我想用doPost()方法在我的servlet將數據從JSP傳遞到Servlet

這是我的JSP:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <meta http-equiv="content-script-type" content="text/javascript" /> 
    <meta http-equiv="content-style-type" content="text/css" /> 
    <meta http-equiv="content-language" content="de" /> 

    <link href="../resources/css/basic.css" type="text/css" rel="stylesheet" /> 

    <title>Edit Movie</title> 
</head> 

<body> 
    <div id="wrapper"> 
     <h2 id="title">Edit Person</h2> 
     <br></br> 
     <br></br> 
     <form id="1" class="appnitro" method="post" action="">      
      <ul> 
       <li id="li_1" > 
        <label class="description" for="element_1">Name</label> 
        <div> 
         <input id="element_1" name="element_1" class="element text large" type="text" maxlength="255" value="${requestScope.person.name}"/> 
        </div> 
       </li>  
       <li id="li_2" > 
        <label class="description" for="element_2">Deparment</label> 
        <div> 
         <input id="element_2" name="element_2" class="element text large" type="text" maxlength="255" value="${requestScope.person.department}"/> 
        </div> 
       </li> 
       <li id="li_3" > 
        <label class="description" for="element_3">Job</label> 
        <div> 
         <input id="element_3" name="element_3" class="element text large" type="text" maxlength="255" value="${requestScope.person.job}"/> 
        </div> 
       </li>  
       <li id="li_4" > 
        <label class="description" for="element_4">Biographie</label> 
        <div> 
         <textarea id="element_4" name="element_4" class="element textarea medium">${requestScope.person.biography}</textarea> 
        </div> 
       </li> 
       <li class="buttons"> 
        <input type="hidden" name="form_id" value="652973" /> 
        <input id="saveForm" class="button_text" type="submit" name="submit" value="Submit" /> 
       </li> 
      </ul> 
     </form>     
    </div> 
</body> 
</html> 

,這是我的Servlet沒有doPost()方法:

import java.io.IOException; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import de.hof.university.spj.model.People; 
import de.hof.university.spj.model.PeopleDAO; 

public class SinglePersonEditServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    private PeopleDAO peopleDao = new PeopleDAO(); 

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 
     String name = "id"; 
     String value = request.getParameter(name); 

     int id = Integer.parseInt(value); 

     People people = peopleDao.getPerson(id); 

     request.setAttribute("person", people); 

     RequestDispatcher reqDispatcher = request.getRequestDispatcher("../jsp/singlePersonEdit.jsp"); 
     reqDispatcher.forward(request, response); 
    } 
} 

提交按鈕是後按下我想將更改後的 數據發送到我的servlet,以便我可以將其存儲在我的數據庫中。

回答

4

爲什麼String name = "id"; String value = request.getParameter(name);?我似乎無法找到你的JSP這name =「ID」任何輸入...

在servlet中,你應該有這個(例如),這樣的:

String element_1_value = request.getParameter("element_1") ; 

要麼你忘了輸入與編號name或我缺少的東西。無論如何,這是你需要在代碼中修復的東西。

更何況,你忘了插入的形式標記的action屬性的Servlet的名字,所以你有這樣的:

<form id="1" class="appnitro" method="post" action=""> 

應該變成這樣:

<form id="1" class="appnitro" method="post" action="SinglePersonEditServlet"> 

最後,你的操作方法是"post"(如上面兩行代碼所示),在你使用doGet的問題的servlet中,你應該把你的代碼放在doPost中,除非這樣做,否則它就足夠了請致電doGetdoPost

我是一個初學者,所以我認識一個,當我看到它,我們都開始在某個地方,我會建議你這個totu或任何關於「用servlet處理表單數據」的好搜索。

注意:重複的this,檢查出來進一步學習:)。

問候。

+0

這是來自另一個網站!我有一個站點people.jsp與單身人士的鏈接: String name =「id」我需要從數據庫中選擇具有給定id的人,並將其提供給我上面的jsp站點postet。我的第一個輸入是正確的,因爲我希望文本字段顯示數據庫中實際保存的數據。用戶現在應該可以更改文本字段輸入。這是我想給我的servlet。 – Mulgard

+0

沒關係,請在你的元素中保留'value =「$ {requestScope.person.name}」''。但對於其他人,我認爲你錯過了幾個關於如何使其功能的基本概念。我編輯我的答案看看:) – Akheloes

+0

否則:哪裏的元素的屬性名稱的值ID? – Akheloes