how to pass values from one jsp to another jsp to

2020-08-04 03:55发布

问题:

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);
        }

        }

回答1:

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



回答2:

you can use

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


回答3:

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")


回答4:

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



回答5:

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

session.setAttribute("name", object)

and the other page

(String)session.getAttribute("name")