Muhammad
Muhammad

Reputation: 631

how to pass values from one jsp to another jsp to update database

I have LookupStudent.jsp to search and list student based on some condition.

this jsp has a ref link to a another jsp, UpdateStudent.jsp.

I want to

  1. display a student in the UpdateStudent.jsp based on a student id from LookupStudent.jsp
  2. Update table based on the changes made in step 1.

Please can you help how to acheive this?

LookupStudent.jsp

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Lookup Students</title>
    </head>

    <body class="body">

        <form method="get" action="LookupStudentServlet">

            <table border="0">
                <tr align="left" valign="top">
                    <td>Student Name:</td>
                    <td><select name="fnameOperator">
                            <option value="Eq">Equals</option>
                            <option value="Sw">Starts With</option>
                            <option value="Ew">Ends With</option>
                            <option value="Co">Contains</option>
                    </select></td>
                    <td><input type="text" name="fname" /></td>
                </tr>
                <tr align="left" valign="top">
                    <td></td>
                    <td><input type="submit" name="submit" value="submit" /></td>
                </tr>
            </table>

        </form>

        <!-- List results -->

        <c:if test="${not empty studentList}">
            <table border="1" cellspacing="0" cellpadding="0" :>
                <tr>
                    <th>ID</th>
                    <th>Title</th>
                    <th>First Name</th>
                    <th>Last Name</th>
                </tr>
                <c:forEach var="students" items="${studentList}">
                    <tr>
                        <td>${students.studentID}</td>
                        <td>${students.title}</td>
                        <td>${students.firstName}</td>
                        <td>${students.lastName}</td>
                        <td><c:url value="UpdateStudent.jsp" var="url">
                                <c:param name="StudentID" value="${students.studentID}" />
                            </c:url> <a href="${url}">edit</a>
                    </tr>
                </c:forEach>
            </table>
        </c:if>

        <p>There are ${fn:length(studentList)} results.</p>
    </body>
    </html>

LookupStudentServlet.java

    package org.cms.controller;

    import java.io.IOException;
    import java.sql.SQLException;
    import java.util.List;

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.cms.model.StudentDAO;

    /**
     * Servlet implementation class ListStudent
     */
    @WebServlet("/LookupStudentServlet")
    public class LookupStudentServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;


        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            try {
                String fnameOperator = request.getParameter("fnameOperator");

                //System.out.println(fnameOperator);

                String fname = request.getParameter("fname");
                String condition = "where 1=1 ";

                if (fname!=null||fname.length()>0) {
                    if (fnameOperator.equalsIgnoreCase("Eq")) {
                        condition =condition+ "and first_name = '"+fname+"'";
                    }
                    else if (fnameOperator.equalsIgnoreCase("Sw")) {
                        condition =condition+ "and first_name like '"+fname+"%'";
                    }
                    else if (fnameOperator.equalsIgnoreCase("Ew")) {
                        condition =condition+ "and first_name like '%"+fname+"'";
                    }
                    else if (fnameOperator.equalsIgnoreCase("Co")) {
                        condition =condition+ "and first_name like '%"+fname+"%'";
                    }

                }       

                //System.out.println(condition);

                StudentDAO student = new StudentDAO();
                List<StudentDAO> students = student.lookupStudent(condition);
                request.setAttribute("studentList", students);
            } catch (SQLException sqle) {
                request.setAttribute("error", "Retrieving Students failed.");
                sqle.printStackTrace();
            }
         catch (Exception e) {
                e.printStackTrace();
        }
            finally {}
            request.getRequestDispatcher("LookupStudent.jsp").forward(request, response);
        }

        }

UpdateStudent.jsp

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Lookup Students</title>
    </head>
    <link rel="stylesheet" href="css/style.css" type="text/css"></link>

    <body class="body">


        <form method="get" action="UpdateStudent" class="form">


            <table border="0">
                <tr align="left" valign="top">
                    <td>Student ID:</td>
                    <td><input type="text" name="StudentID" /></td>
                </tr>
                <tr align="left" valign="top">
                    <td>Title:</td>
                    <td><input type="text" name="Title" /></td>
                </tr>
                <tr align="left" valign="top">
                    <td>First Name:</td>
                    <td><input type="text" name="Fname"  /></td>
                </tr>
                <tr align="left" valign="top">
                    <td>Last Name:</td>
                    <td><input type="text" name="Lname"  /></td>
                </tr>
                <tr align="left" valign="top">
                    <td></td>
                    <td><input type="submit" name="submit" value="submit"
                        class="fb8" /></td>
                </tr>
            </table>



        </form>


    </body>
    </html>

UpdateStudentServlet.java

    package org.cms.controller;

    import java.io.IOException;
    import java.sql.SQLException;
    import java.util.List;

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.cms.model.StudentDAO;

    /**
     * Servlet implementation class ListStudent
     */
    @WebServlet("/UpdateStudentServlet")
    public class UpdateStudentServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;


        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            try {

                int studentID;
                studentID = Integer.parseInt(request.getParameter("StudentID"));
                //System.out.println(fnameOperator);
                String condition = "where 1=1";
                condition = condition+"and student_id = "+studentID;
                System.out.println(condition);
                StudentDAO student = new StudentDAO();
                List<StudentDAO> students = student.lookupStudent(condition);
                request.setAttribute("studentList", students);
            } catch (SQLException sqle) {
                request.setAttribute("error", "Retrieving Students failed.");
                sqle.printStackTrace();
            }
         catch (Exception e) {
                e.printStackTrace();
        }
            finally {}
            request.getRequestDispatcher("UpdateStudent.jsp").forward(request, response);
        }

        }

Upvotes: 0

Views: 13404

Answers (5)

ohad
ohad

Reputation: 1

If you want to pass String , Integer ....

session.setAttribute("name", object)

and the other page

(String)session.getAttribute("name")

Upvotes: 0

user1099593
user1099593

Reputation: 21

you can use

<jsp:forward  page = "UpdateStudent.jsp">
 <jsp:param name = "id" value = "15" />
</jsp:forward>

Upvotes: 1

benz
benz

Reputation: 4629

I certainly believe we can put the parameters into the scopes but make sure that you use the session very cautiously as too many session attributes can slow down your performance. HTH, Ben

Upvotes: 0

Tomer Zait
Tomer Zait

Reputation: 1826

If you want to send parameter from page to page you can use session also:

session.setAttribute("name", object)

and in the other page:

session.getAttribute("name")

Upvotes: 0

benz
benz

Reputation: 4629

If the question is solely concerned passing parameter from one jsp to another. You have got multiple ways. You can use something like this

 request.setAttribute("parameterName")

OR You can use something like and tags. This way you can pass the parameters. Even your code seems like passing the parameter, what kind of exception you are getting? Thanks, Ben

Upvotes: 2

Related Questions