HttpServletRequest请求转发

1.介绍

HttpServletRequest请求转发_第1张图片

 

2.演示:

(1)通过forward在服务器端的页面跳转,地址栏不变。

  • 通过地址栏请求web.xml配置的url,请求到对应得页面,在通过类似form表单提交请求到当前的get请求之后,即跳转到对应转发的界面。
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLDecoder;

public class test04 extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*
        * 1.逻辑的处理
        * 2.服务器端的页面跳转,地址栏不变
        * */
        req.getRequestDispatcher("/hello.html").forward(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

(2)Servlet之间的跳转。

  • 这里跳转的路径是web.xml里的配置路径
  • import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class test05 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("servlet5被访问");
            req.getRequestDispatcher("/hello4").forward(req, resp);
    
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    

     

  • 还可通过setAttribute()传递属性
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class test05 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("servlet5被访问");

        // 使用request.setAttribute来设置结果的属性
        req.setAttribute("testAttri", new String[]{"proper", "xxx"});
        req.getRequestDispatcher("/hello4").forward(req, resp);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
  • 通过getAttribute()进行获取(属性名字注意要跟set时一致)
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLDecoder;

public class test04 extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.getRequestDispatcher("/hello.html").forward(req, resp);
        String[] attri = (String[]) req.getAttribute("testAttri");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

 

你可能感兴趣的:(java)