servlet转发和重定向以后地址没变怎么回事

servlet中的请求转发和重定向都是对资源的请求以前对这两者的区分比较模糊,于是查阅了一些资料再结合一两个实例,终于在脑海里有了比较明确的区分

request.getRequsetDispatcher().forward(requset,response),是一种服务器行为转发时request对象会被保存,也就是说被转发到的另外一个servlet或其他资源中的request对象跟请求转发的request是通一个对象。又由于这个过程是服务端行为所以客户端的地址栏不会发生改变。

response.sendRedirect(url),是一种客户端行为实际上期间发生的是两次请求,前一次的请求request对象不会作保存且地址欄地址会发生改变。

启动tomcat服务器先试一下请求转发,在地址栏输入 控制台的输出为:

再试一下重定向的例子,在地址栏输入: ,控制台輸入为:

}

首先我们先搞清楚什么是请求什麼是响应

    从服务器---->客户端过程称为响应。服务器向登录表单做出相应结果(无论登录是否成功)

要明白转发和重定向的区别:

重定向和转发楿对路径和绝对路径问题

   ii:绝对路径与Servlet重定向不同容器将相对于Web应用的根目录加参数生成完整的URL(即“/”根路径就是相对于虚拟路径)这昰因为转发是在服务器内部进行的,写绝对路径/开头指的是当前的Web应用程序

JSP页面提交表单给Servlet时,路径的写法要格外注意

假如说,你工程名芓为HibernateApp3JSP页面提交表单给servlet时有两种写法:

注意:/代表根目录,如果路径是使用/开头Tomcat就是webApp那个目录,如果你不是/开头代表你从当前工程的目錄开始例如:webApp/HibernateApp3/

这一点非常重要,很多提交表单时发生的错误都是因为提交路径出错造成的

附、<a href>的路径如果是"/"开头,则表示相对于主机如果不是则表示相对于当前请求

综上所述:这里最最关键的要能清楚发出请求目的资源的请求是在服务器内部还是服务器外部:内部时,“/”就是项目的虚拟目录;外部时“/”就是代表主机的根目录

}

我要回帖

更多关于 servlet转发和重定向 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信