重定向:

RedirectServlet代码如下:

packagecn.edu.qfnu.ch06.servlet;

importjava.io.IOException;

 import javax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclass RedirectServlet extends HttpServlet {

    private static final long serialVersionUID =1L;

    public RedirectServlet() {

        super();

    }

    protected void doGet(HttpServletRequestrequest, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");

        request.setAttribute("name", "qiaozhiqing");

        request.setAttribute("pwd", "123456");

response.sendRedirect("TargetServlet");

    }

    protected void doPost(HttpServletRequestrequest, HttpServletResponse response) throws ServletException, IOException {

        doGet(request,response);

    }

}

TargetServlet代码如下:

packagecn.edu.qfnu.ch06.servlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclass TargetServlet extends HttpServlet {

    private static final long serialVersionUID =1L;

    public TargetServlet() {

        super();

    }

    protected void doGet(HttpServletRequestrequest, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");

        PrintWriter out=response.getWriter();

        String name=(String)request.getAttribute("name");

        String pwd=(String)request.getAttribute("pwd");

        out.print("request对象中的值<br>");

        out.print("name="+name+"<br>");

        out.print("pwd="+pwd);

    }

    protected void doPost(HttpServletRequestrequest, HttpServletResponse response) throws ServletException, IOException {

        doGet(request,response);

    }

}

Servlet配置的Web.xml代码如下:

<servlet>

     <description></description>

     <display-name>RedirectServlet</display-name>

     <servlet-name>RedirectServlet</servlet-name>

     <servlet-class>cn.edu.qfnu.ch06.servlet.RedirectServlet</servlet-class>

   </servlet>

   <servlet-mapping>

     <servlet-name>RedirectServlet</servlet-name>

     <url-pattern>/RedirectServlet</url-pattern>

   </servlet-mapping>

   <servlet>

     <description></description>

     <display-name>TargetServlet</display-name>

     <servlet-name>TargetServlet</servlet-name>

     <servlet-class>cn.edu.qfnu.ch06.servlet.TargetServlet</servlet-class>

   </servlet>

   <servlet-mapping>

     <servlet-name>TargetServlet</servlet-name>

     <url-pattern>/TargetServlet</url-pattern>

   </servlet-mapping>

          4请求地址发生变化

请求转发:

ForwardServlet的代码:

packagecn.edu.qfnu.ch06.servlet;

importjava.io.IOException;

importjavax.servlet.RequestDispatcher;

importjavax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclass ForwardServlet extends HttpServlet {

    privatestaticfinallongserialVersionUID = 1L;

    public ForwardServlet() {

        super();

    }

    protectedvoiddoGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");

        request.setAttribute("name", "qiao");

        request.setAttribute("pwd", "123456");

        RequestDispatcherrd=request.getRequestDispatcher("TargetServlet");

        rd.forward(request, response);

    }

    protectedvoiddoPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doGet(request,response);

    }

}

ForwardServlet的配置代码:

<servlet>

    <description></description>

    <display-name>ForwardServlet</display-name>

    <servlet-name>ForwardServlet</servlet-name>

    <servlet-class>cn.edu.qfnu.ch06.servlet.ForwardServlet</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>ForwardServlet</servlet-name>

    <url-pattern>/ForwardServlet</url-pattern>

   </servlet-mapping>

 

 

 

在浏览器中输入 http://localhost:8080/shiyanliude/ForwardServlet结果如下:

              5请求地址没有发生变化

虽然重定向和请求转发都可以实现对访问资源的更改,但是两者是有区别的。请求转发是容器内控制权的转移,转发前后仍处于同一个请求对象内,地址栏的地址在转发前后不发生变化。重定向是完全的跳转,浏览器会跳转到重定向地址,并重新发送请求。