String data="aaaaa";
request.setAttribute("data", data);
request.getRequestDispatcher("/message.jsp").forward(request, response);
jsp中的两种调用方法:
1.
${data }
2.
<%
String data = (String)request.getAttribute("data");
out.write(data);
%>
如果在调用forward方法之前,在Servlet程序中写入的部分内容已经被真正地传送到了客户端,forward方法将抛出
IllegalStateException异常
样例1:
String data = "aaaaa";
PrintWriter writer = response.getWriter();
writer.write(data);
writer.close();
//以下跳转会导致:java.lang.IllegalStateException:
request.getRequestDispatcher("/message.jsp").forward(request, response);
样例2:
String data = "aaaaa";
if(true){
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
//以下跳转会导致:java.lang.IllegalStateException:
request.getRequestDispatcher("/message.jsp").forward(request, response);
样例2的解决方法:在 if 判断语句中加一个return;
request转发特点:
1.客户机只发一次请求,而服务器端有多个资源调用
2.客户端浏览地址栏没有变化