Update: Edit Form to Pre-filled JSP to Update Query
Edit Form to Pre-Filled JSP to Update Query
Edit Form क्या होता है?
जब हम किसी web application में user data को update करना चाहते हैं, तो उसके लिए हमें एक Edit Form बनाना पड़ता है। यह form पहले से मौजूद data को दिखाता है ताकि user उसे बदल सके। JSP (Java Server Pages) के साथ यह काम बहुत आसान हो जाता है क्योंकि हम backend से data लाकर form fields में pre-fill कर सकते हैं।
इस process को आमतौर पर Update Operation या Edit-Update Functionality कहा जाता है। यह CRUD (Create, Read, Update, Delete) operations का एक महत्वपूर्ण हिस्सा है।
Edit और Update का Flow
इस पूरे process में data को database से लाना, form में दिखाना, और फिर update करना शामिल होता है। आइए इसे simple steps में समझते हैं:
- Step 1: User “Edit” button पर click करता है।
- Step 2: Servlet database से उस record का data निकालता है।
- Step 3: Servlet उस data को JSP page में भेजता है।
- Step 4: JSP में form fields पहले से भरे (pre-filled) दिखते हैं।
- Step 5: User fields में changes करता है और “Update” button दबाता है।
- Step 6: Data फिर से Servlet को जाता है, जो database में update query चलाता है।
Servlet से JSP में Data कैसे भेजें?
जब user edit करता है, तो हमें database से उसकी जानकारी लाकर JSP में भेजनी होती है। इसके लिए हम RequestDispatcher का इस्तेमाल करते हैं।
Example: Servlet Code (EditServlet.java)
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
UserDao dao = new UserDao();
User user = dao.getUserById(id);
request.setAttribute("user", user);
RequestDispatcher rd = request.getRequestDispatcher("edit_user.jsp");
rd.forward(request, response);
}
ऊपर के code में हमने getUserById() method के जरिए specific user data fetch किया और उसे JSP में भेज दिया।
Pre-Filled JSP Form कैसे बनाएं?
अब JSP page में हम उस data को दिखाएंगे ताकि user उसे edit कर सके। इसके लिए हम Expression Language (EL) या JSTL का use करते हैं।
Example: edit_user.jsp
<form action="updateUser" method="post">
<input type="hidden" name="id" value="${user.id}">
Name: <input type="text" name="name" value="${user.name}"><br>
Email: <input type="email" name="email" value="${user.email}"><br>
Country: <input type="text" name="country" value="${user.country}"><br>
<input type="submit" value="Update">
</form>
यह form user के पुराने data को पहले से भरकर दिखाता है। इससे user को पता रहता है कि वह किस record को edit कर रहा है।
Update Servlet (updateUser)
जब user “Update” button दबाता है, तब data एक दूसरे servlet को भेजा जाता है जो database में update query चलाता है।
Example: UpdateServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
String email = request.getParameter("email");
String country = request.getParameter("country");
User user = new User(id, name, email, country);
UserDao dao = new UserDao();
dao.updateUser(user);
response.sendRedirect("viewUsers");
}
DAO Class में Update Method
अब बात करते हैं DAO (Data Access Object) की, जहाँ actual SQL query execute होती है।
Example: UserDao.java
public int updateUser(User user) {
int status = 0;
try {
Connection con = getConnection();
PreparedStatement ps = con.prepareStatement("UPDATE users SET name=?, email=?, country=? WHERE id=?");
ps.setString(1, user.getName());
ps.setString(2, user.getEmail());
ps.setString(3, user.getCountry());
ps.setInt(4, user.getId());
status = ps.executeUpdate();
con.close();
} catch (Exception e) { e.printStackTrace(); }
return status;
}
Database Table Structure
यहाँ पर “users” table का एक sample structure दिया गया है:
| Column Name | Data Type | Description |
|---|---|---|
| id | INT (Primary Key) | Unique ID of User |
| name | VARCHAR(100) | User Name |
| VARCHAR(100) | User Email | |
| country | VARCHAR(50) | User Country |
JSP में EL और JSTL का Role
Expression Language (EL) और JSTL हमें data को JSP में easily दिखाने में मदद करते हैं। इससे हम scriptlets (<% %>) से बचते हैं और page साफ और readable बनता है।
EL के जरिए हम bean properties को सीधे access कर सकते हैं, जैसे ${user.name}, ${user.email} आदि।
Real-World Example
मान लीजिए एक college management system है जहाँ admin students की details update कर सकता है। वहाँ जब “Edit” पर click किया जाता है, तो student का पूरा data form में दिखाई देता है। Admin केवल बदलकर “Update” दबाता है और database में record change हो जाता है। यही process इस topic में समझाया गया है।
Best Practices for Edit and Update Form
- Always validate user input before update query चलाएं।
- SQL Injection से बचने के लिए PreparedStatement का use करें।
- Form submit करने के बाद proper redirect दें ताकि refresh करने पर duplicate update न हो।
- Data consistency बनाए रखने के लिए database connection properly close करें।
- UI में clear indication दें कि update successful हुआ या नहीं।
Error Handling in Update Operation
कभी-कभी update fail भी हो सकता है जैसे — database connection break होना या wrong query। ऐसे cases को handle करने के लिए try-catch block जरूरी है। साथ ही, user को friendly message देना भी अच्छा UX practice है।
Example:
try {
int status = dao.updateUser(user);
if(status > 0) {
response.sendRedirect("viewUsers");
} else {
out.println("Sorry! Unable to update record.");
}
} catch(Exception e) {
e.printStackTrace();
}
Edit-Update Feature के फायदे
- Data accuracy बढ़ती है क्योंकि user अपने records खुद correct कर सकता है।
- Application dynamic बनती है और real-time data management संभव होता है।
- Maintenance आसान होता है क्योंकि हर बदलाव database में reflect होता है।
Key Points to Remember
- Servlets backend logic handle करते हैं।
- JSP सिर्फ data display करने के लिए use करें।
- Data transfer के लिए request attributes का सही use करें।
- Update के बाद user को redirect करना न भूलें।
Exam-Oriented Notes
- Definition: Edit Form एक ऐसा JSP form होता है जो existing record को update करने के लिए pre-filled data दिखाता है।
- Flow: Servlet → JSP (pre-fill data) → JSP (update submit) → Servlet (update query)
- Main Classes: Servlet, JSP, DAO, Model (Bean)
- SQL Query: UPDATE users SET name=?, email=?, country=? WHERE id=?
- Use of EL: JSP में data show करने के लिए, जैसे
${user.name} - Use of PreparedStatement: SQL Injection से सुरक्षा और efficiency के लिए।
- Validation: Input fields की check करें (empty या invalid data न जाए)।
- Redirect: Update successful होने के बाद “viewUsers” पर redirect करें।