之前知道forward后地址栏地址不变,redirect后地址了那会发生变化
但是今天遇到一个问题,forward和redirect后,其后的代码段还会继续执行吗?
redirect
- redirect 后,确认了要跳转的页面的 url,继续执行 redirect 下面的代码
- 执行完后,断开当前的与用户所发出的请求连接,即断开 request 的引用指向
- request 里存放的信息也会丢失
- 然后再与用户建立新的请求连接,即创建新的 request 对象,地址栏地址变成新的页面的地址
forward
- forward后,确认了要跳转的页面的 url,停止继续执行后面的代码
- 先执行要跳转url里的代码
- 执行完毕后,再回来继续执行当前页面的代码
- 这期间二者共享一个 request 和 response 对象
- 这个过程,最后还是执行的原来的servlet,所以地址栏的地址不会变化
以登陆为例
页面
1 | <form action="CheckUser" method="post"> |
check的servlet
1 | String username = request.getParameter("username"); |
success的servlet
1 | PrintWriter out = response.getWriter(); |
false的servlet
1 | PrintWriter out = response.getWriter(); |
运行结果
1 | ---- this is success servlet end ---- |