如何将值从一个jsp传递到另一个jsp以更新数据库

时间:2012-09-08 12:56:14

标签: jsp servlets jstl

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

这个jsp有一个到另一个jsp的ref链接,UpdateStudent.jsp。

我想

  1. 根据LookupStudent.jsp中的学生ID显示UpdateStudent.jsp中的学生
  2. 根据步骤1中所做的更改更新表。
  3. 请帮助您如何实现这一目标?

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

5 个答案:

答案 0 :(得分:2)

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

 request.setAttribute("parameterName")

OR 你可以使用类似的东西和标签。这样你就可以 传递参数。甚至你的代码看起来像传递参数,是什么类型 您获得的例外情况? 谢谢, 本

答案 1 :(得分:1)

你可以使用

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

答案 2 :(得分:0)

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

session.setAttribute("name", object)

,在另一页:

session.getAttribute("name")

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果你想传递String,Integer ....

session.setAttribute("name", object)

和另一页

(String)session.getAttribute("name")