我有 LookupStudent.jsp 根据某些条件搜索和列出学生。
这个jsp 有一个指向另一个jsp UpdateStudent.jsp 的引用链接。
我想要
- 根据 LookupStudent.jsp 中的学生 ID 在 UpdateStudent.jsp 中显示学生
- 根据步骤 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);
}
}