public class StudentServlet extends javax.servlet.http.HttpServlet {
private String keyworld = null;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
StudentServiceImpl studentServiceImpl = new StudentServiceImpl();
String status = request.getParameter("status");
if (status.equals("isindex")) {
Student student = new Student();
student.setId(Integer.parseInt(request.getParameter("id")));
student.setName(request.getParameter("name"));
student.setAge(request.getParameter("age"));
String slikes[] = request.getParameterValues("slikes");
student.setSlikes(studentServiceImpl.JoinString(slikes));
studentServiceImpl.saveStudent(student);
} else if (status.equals("isstudentQuery")) {
try {
keyworld = request.getParameter("keyworld");
ArrayList<Student> students = studentServiceImpl.StudentQuery(keyworld);
request.setAttribute("students", students);
} catch (SQLException e) {
e.printStackTrace();
}
RequestDispatcher dispatcher = request.getRequestDispatcher("/StudentQuery.jsp");
dispatcher.forward(request, response);
} else if (status.equals("deleteStudent")) {
int id = Integer.parseInt(request.getParameter("id"));
studentServiceImpl.deleteStudent(id);
try {
ArrayList<Student> students = studentServiceImpl.StudentQuery(keyworld);
String key = keyworld;
System.out.println(key);//null
System.out.println(students.size()); //0
request.setAttribute("students", students);
RequestDispatcher dispatcher = request.getRequestDispatcher("/StudentQuery.jsp");
dispatcher.forward(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
**表明:****private String keyworld = null;**是一个全局变量,keyworld只有在查询的时候用得到,所以keyworld只能设置成全局变量,不能在dopost方法里面设置成局部变量。因为若是在局部post内,else if (status.equals(“isstudentQuery”))里有keyworld的值,里面的值是已经从前台捕获的值,而在 else if (status.equals(“deleteStudent”))中用的keyworld的值也有值,这个值是null;所以有两个值。不符合这个程序,程序只是需要一个keyworld就行了就是在查询的时候传来的值。而delete的时候是和查询是同一个页面,所以keyworld的值是不变的,再次查询的时候keyworl的值还是在之前查询的时候的值,所以就这样完成这个删除而再次查询的功能。