package sevlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import org.apache.commons.lang.StringUtils;
/**
* @author lcathm
*
*/
@MultipartConfig(location="D:/tmp/", maxFileSize=1024*1024*10)
@WebServlet(name="RequestDispatcherDemo", urlPatterns={"/include.do"},loadOnStartup=0)
public class RequestDispatcherDemo extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<body>");
out.println("上传成功");
RequestDispatcher dispatcher = request.getRequestDispatcher("/shop/servlets");
dispatcher.include(request, response);
out.println("</body>");
out.println("</html>");
out.flush();
out.close();
}
}
======================================================================================================
package sevlet;
import java.util.HashMap;
import java.util.Map;
public class HelloUser {
private Map<String, String> helloMessage = new HashMap<String, String>();
public HelloUser() {
helloMessage.put("John", "Hello,John");
helloMessage.put("Smith", "Welcom, Smith");
helloMessage.put("Rose", "Hi, Rose");
}
public String sayHello(String userName) {
return helloMessage.get(userName);
}
}
package sevlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import org.apache.commons.lang.StringUtils;
/**
* @author lcathm
*
*/
@MultipartConfig(location="D:/tmp/", maxFileSize=1024*1024*10)
@WebServlet(name="HelloServlet", urlPatterns={"/hello.do"},loadOnStartup=0)
public class HelloServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
private HelloUser user = new HelloUser();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
String userName = request.getParameter("username");
String message = user.sayHello(userName);
System.out.println(message);
request.setAttribute("message", message);
RequestDispatcher dispatcher = request.getRequestDispatcher("/hello.htm");
dispatcher.forward(request, response);
}
}
package sevlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import org.apache.commons.lang.StringUtils;
/**
* @author lcathm
*
*/
@MultipartConfig(location="D:/tmp/", maxFileSize=1024*1024*10)
@WebServlet(name="HelloHtml", urlPatterns={"/hello.htm"},loadOnStartup=0)
public class HelloHtml extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=UTF-8");
String message = (String) request.getAttribute("message");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<body>");
out.println(message);
System.out.println(message);
out.println("</body>");
out.println("</html>");
out.flush();
out.close();
}
}
这里用forward()方法将请求跳转到指定的URL,该动作浏览器不知道,因此地址栏不会发生变化。在转发的过程中,处于同一个Request周期中,因此可以利用setAttribute()方法设置属性对象,利用getAttribute()获取属性对象。
而采用response.sendRedirect("http://www.baidu.com")会在响应中设置http状态码和Location头,当客户端接收到这个头时,会重新指定url,因此地址栏的地址会发生变化。