java.lang.IllegalStateException:在servlet中提交响应后无法转发
在我的项目中,我只在用户已经登录的情况下才禁止他访问每个页面。这就是我编写以下代码的原因。例如,当我输入browser时,我会进入java.lang.IllegalStateException:在servlet中提交响应后无法转发,java,jsp,exception,servlets,Java,Jsp,Exception,Servlets,在我的项目中,我只在用户已经登录的情况下才禁止他访问每个页面。这就是我编写以下代码的原因。例如,当我输入browser时,我会进入login.jsp页面。但在我输入loginid和密码后,只会出现空白页面,GlassFish说在这个页面中有一个异常 if (userPath.equals("/Students")){ RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Students.jsp"
login.jsp
页面。但在我输入loginid和密码后,只会出现空白页面,GlassFish说在这个页面中有一个异常
if (userPath.equals("/Students")){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Students.jsp");
requestDispatcher.forward(request, response);
}
java.lang.IllegalStateException: PWC1227: Cannot forward after response has been committed
doGet和doPost的完整代码:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession ses = request.getSession();
String login = (String)ses.getAttribute("login");
String password = (String)ses.getAttribute("password");
if ((login==null)|(password==null)){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/login.jsp");
requestDispatcher.forward(request, response);
}
//Now we think that we are successfully logged in
String userPath = request.getServletPath();
// System.out.println(userPath);
if (userPath.equals("/Login")){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/login.jsp");
requestDispatcher.forward(request, response);
}
if (userPath.equals("/Students")){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Students.jsp");
requestDispatcher.forward(request, response);
}
if (userPath.equals("/Student")){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Student.jspx");
requestDispatcher.forward(request, response);
}
if (userPath.equals("/StudentEdit")){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/StudentEdit.jsp");
requestDispatcher.forward(request, response);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// processRequest(request, response);
PrintWriter out = response.getWriter();
String userPath = request.getServletPath();
System.out.println(userPath);
if (request.getRequestURI().equals("/Logged")){
String Login = request.getParameter("login");
String Password = request.getParameter("password");
request.getSession().setAttribute("login", Login);
request.getSession().setAttribute("password", Password);
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Students.jsp");
requestDispatcher.forward(request, response);
}
if (userPath.equals("/addStudent")) {
// System.out.println(request.getContextPath());
String Name = request.getParameter("name");
String Surname = request.getParameter("surname");
String Login = request.getParameter("login");
String Password = request.getParameter("password");
Student student = new Student(Name,Surname,Login,Password);
if (student != null) {
dao.insertStudent(student);
} else {
System.out.println("Not valid parameter!!!");
}
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Students.jsp");
requestDispatcher.forward(request, response);
}
if (request.getRequestURI().equals("/Edit")) {
System.out.println("We work with students!!!");
String delete = request.getParameter("Add_new_student");
if (delete != null){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Student.jspx");
requestDispatcher.forward(request, response);
}
Enumeration parameters = request.getParameterNames();
while (parameters.hasMoreElements()) {
String parameterName = (String) parameters.nextElement();
String parameterValue = request.getParameter(parameterName);
String norder = parameterName.substring(parameterName.indexOf("_")+1);
ArrayList<Student> curStudents = dao.getAllStudents();
int norderint = Integer.parseInt(norder);
Student studentToWork = curStudents.get(norderint);
String actionToDo = parameterName.substring(0, parameterName.indexOf("_"));
if (actionToDo.equals("Edit")){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/StudentEdit.jsp");
ServletContext cont = request.getServletContext();
cont.setAttribute("studentToEdit", studentToWork);
requestDispatcher.forward(request, response);
} else {
boolean attemp = dao.deleteStudent(studentToWork);
if (attemp){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Students.jsp");
requestDispatcher.forward(request, response);
} else {
out.println("Unsuccessfull attemp to delete a Student");
}
}
}
}
if (userPath.equals("/EditStudent")){
System.out.println("We work with StudentEdit!");
Student studentToEdit = (Student)request.getSession().getAttribute("studentToEdit");
String newName = request.getParameter("name");
String newSurname = request.getParameter("surname");
String newLogin = request.getParameter("login");
String newPassword = request.getParameter("password");
Student newStudent = new Student(newName, newSurname,newLogin,newPassword);
boolean update = dao.updateStudent(studentToEdit, newStudent);
if (update){
out.println("<p>You have successfully edited a Student=" + studentToEdit.toString() + " to Student="+ newStudent.toString());
} else {
out.println("<p>Unsuccessful attempt to edit!</p>" );
}
}
}
@覆盖
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
HttpSession ses=request.getSession();
String login=(String)ses.getAttribute(“login”);
字符串密码=(字符串)ses.getAttribute(“密码”);
如果((登录==null)|(密码==null)){
RequestDispatcher=request.getRequestDispatcher(“/login.jsp”);
转发(请求、响应);
}
//现在我们认为我们已成功登录
字符串userPath=request.getServletPath();
//System.out.println(用户路径);
if(userPath.equals(“/Login”)){
RequestDispatcher=request.getRequestDispatcher(“/login.jsp”);
转发(请求、响应);
}
if(userPath.equals(“/Students”)){
RequestDispatcher=request.getRequestDispatcher(“/Students.jsp”);
转发(请求、响应);
}
if(userPath.equals(“/Student”)){
RequestDispatcher=request.getRequestDispatcher(“/Student.jspx”);
转发(请求、响应);
}
if(userPath.equals(“/StudentEdit”)){
RequestDispatcher=request.getRequestDispatcher(“/StudentEdit.jsp”);
转发(请求、响应);
}
}
@凌驾
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
//processRequest(请求、响应);
PrintWriter out=response.getWriter();
字符串userPath=request.getServletPath();
System.out.println(用户路径);
if(request.getRequestURI().equals(“/Logged”)){
字符串Login=request.getParameter(“Login”);
字符串密码=request.getParameter(“密码”);
request.getSession().setAttribute(“login”,login);
request.getSession().setAttribute(“密码”,password);
RequestDispatcher=request.getRequestDispatcher(“/Students.jsp”);
转发(请求、响应);
}
if(userPath.equals(“/addStudent”)){
//System.out.println(request.getContextPath());
字符串名称=request.getParameter(“名称”);
字符串姓氏=request.getParameter(“姓氏”);
字符串Login=request.getParameter(“Login”);
字符串密码=request.getParameter(“密码”);
学生=新学生(姓名、姓氏、登录名、密码);
如果(学生!=null){
插入学生(学生);
}否则{
System.out.println(“无效参数!!!”;
}
RequestDispatcher=request.getRequestDispatcher(“/Students.jsp”);
转发(请求、响应);
}
if(request.getRequestURI().equals(“/Edit”)){
System.out.println(“我们与学生一起工作!!!”;
String delete=request.getParameter(“Add_new_student”);
如果(删除!=null){
RequestDispatcher=request.getRequestDispatcher(“/Student.jspx”);
转发(请求、响应);
}
枚举参数=request.getParameterNames();
while(parameters.hasMoreElements()){
String parameterName=(String)parameters.nextElement();
字符串parameterValue=request.getParameter(parameterName);
字符串norder=parameterName.substring(parameterName.indexOf(“”)+1);
ArrayList curStudents=dao.getAllStudents();
int norderint=Integer.parseInt(norder);
Student studentToWork=curStudents.get(norderint);
String actionToDo=parameterName.substring(0,parameterName.indexOf(“”);
if(actionToDo.equals(“编辑”)){
RequestDispatcher=request.getRequestDispatcher(“/StudentEdit.jsp”);
ServletContext cont=request.getServletContext();
cont.setAttribute(“studentToEdit”,studentToWork);
转发(请求、响应);
}否则{
布尔attemp=dao.deleteStustudent(studentToWork);
如果(尝试){
RequestDispatcher=request.getRequestDispatcher(“/Students.jsp”);
转发(请求、响应);
}否则{
out.println(“尝试删除学生失败”);
}
}
}
}
if(userPath.equals(“/EditStudent”)){
System.out.println(“我们与StudentEdit一起工作!”);
Student studentToEdit=(Student)request.getSession().getAttribute(“studentToEdit”);
字符串newName=request.getParameter(“名称”);
字符串newSurname=request.getParameter(“姓氏”);
字符串newLogin=request.getParameter(“login”);
字符串newPassword=request.getParameter(“密码”);
学生newStudent=新学生(新姓名、新姓名、新登录名、新密码);
布尔更新=dao.updateStudent(studentToEdit,newStudent);
如果(更新){
out.println(“您已成功地将Student=“+studentToEdit.toString()+”编辑为St
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form action="/JSP1/Logged" method="POST">
<table>
<tr>
<td>Login:</td>
<td><input type="text" name="login" value=""/> </td>
</tr>
<tr>
<td>Password </td>
<td><input type="password" name="password"/> ></td>
</tr>
<tr>
<td><input type="submit" name="OK" value="OK" /> </td>
</tr>
</table>
</form>
</body>
if ((login==null)|(password==null)){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/login.jsp");
requestDispatcher.forward(request, response);
return;
}
if ((login==null)|(password==null)){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/login.jsp");
requestDispatcher.forward(request, response);
} else {
// Now we think that we are successfully logged in.
// Yes, that above comment is now finally true.
// Put your bunch of non-DRY if-else code here.
}