关于Servlet中的转发和重定项

Posted wooyoohoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Servlet中的转发和重定项相关的知识,希望对你有一定的参考价值。

一:转发

  首先转发属于服务器内部行为,通过浏览器的地址栏是看不到URL变化的。比如说客户端发送一个请求到ServletA,ServletA接收到请求,但是没有能力处理,但是ServletA知道ServletB可以处理,它不想直接告诉浏览器说自己处理不了,于是ServletA就将请求传递给了ServletB代为完成,该行为发生在服务器内部,客户端  看不到变化,当ServletB处理完毕请求后,会响应客户端,该行为相当于A盗用了B的劳动成果。(两个Servlet中使用的request和response是同一个)

 

   req.getRequestDispatcher("/ServletB").forward(req, resp);    //使用request对象

  // WEB-INF文件夹中的文件,在外部是没有办法访问的。但是可以直接在服务器内部,通过代码进行访问(如访问/WEB-INF/notice.html):

   // req.getRequestDispatcher("/WEB-INF/notice.html").forward(req,resp);

 

二:重定向

  重定向不属于服务器内部行为,客户端发送完请求后会清楚的看到浏览器地址栏的变化。比如说客户端发送一个请求到ServletA,ServletA接收到请求,但是没有能力处理,于是它就回复客户端说自己处理不了,在回复的同时告知了客户端说ServletB可以处理,让客户端去找ServletB,因此地址栏会发生变化,由原本的ServletA重新指定到ServletB。

  

   resp.sendRedirect("/ServletB");  //使用response对象

 

以上是关于关于Servlet中的转发和重定项的主要内容,如果未能解决你的问题,请参考以下文章

转发以及重定向解析

servlet如何重定向

selenium重定项

selenium重定项

Python轻量级Web框架Flask——Flask路由参数/Flask请求与响应/重定项/异常处理

Servlet中的请求转发和重定向