0

我有 LookupStudent.jsp 根据某些条件搜索和列出学生。

这个jsp 有一个指向另一个jsp UpdateStudent.jsp 的引用链接。

我想要

  1. 根据 LookupStudent.jsp 中的学生 ID 在 UpdateStudent.jsp 中显示学生
  2. 根据步骤 1 中所做的更改更新表。

请你能帮助如何实现这一目标?

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

        }

更新学生.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>

更新StudentServlet.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);
        }

        }
4

5 回答 5

2

如果问题仅涉及将参数从一个jsp传递到另一个jsp。你有多种方法。你可以使用这样的东西

 request.setAttribute("parameterName")

或者你可以使用类似和标签的东西。这样就可以传递参数了。甚至您的代码似乎都在传递参数,您得到了什么样的异常?谢谢,本

于 2012-09-09T10:23:19.853 回答
1

您可以使用

<jsp:forward  page = "UpdateStudent.jsp">
 <jsp:param name = "id" value = "15" />
</jsp:forward>
于 2012-12-09T19:05:17.630 回答
0

如果你想通过 String , Integer ....

session.setAttribute("name", object)

和另一页

(String)session.getAttribute("name")
于 2013-10-21T05:47:42.650 回答
0

如果要在页面之间发送参数,也可以使用会话:

session.setAttribute("name", object)

在另一页:

session.getAttribute("name")
于 2012-09-10T11:41:15.937 回答
0

我当然相信我们可以将参数放入范围,但请确保您非常谨慎地使用会话,因为过多的会话属性会降低您的性能。HTH,本

于 2012-09-10T11:42:46.500 回答