JSP页面跳转的几种方法以及注意点

简介:        最近自己在做项目时遇到一个问题,明明加了response.sendRedirect() ,系统也执行了,但是它就是不跳转;最后在网上找到原因如下:       首先我们要知道的是用response.sendRedirect做转向的原理,它其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以sendRedirect时,浏览器的地址栏上可以看到地址的变化。
       最近自己在做项目时遇到一个问题,明明加了response.sendRedirect() ,系统也执行了,但是它就是不跳转;最后在网上找到原因如下:

       首先我们要知道的是用response.sendRedirect做转向的原理,它其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以sendRedirect时,浏览器的地址栏上可以看到地址的变化。 而用<jsp:forward page=""/>则不同,它是直接在server做的,浏览器并不知道,也不和浏览器打交道,这从浏览器的地址并不变化可以看出。

        所以使用response.sendRedirect时就需要注意以下两点:
       1、在使用response.sendRedirect时,前面不能有HTML输出。
       这并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说JSP SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量的HTML输出也是允许的。
        如下图所示,<jsp:include flush="true" page="html/userlogin.html"></jsp:include>必须在jsp语句之后才能引入,否则就会出现错误!

       

        2、在response.sendRedirect之后,应该紧跟一句return;
        我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。


        JSP中还有的跳转语句包括:request.getRequestDispatcher(“”);

         request.getRequestDispatcher().forward(request.response)这个语句意思是将客户端的请求转向(forward)到getRequestDispatcher()方法中参数定义的页面或者链接。
         说通俗点就是,当一个客户端的请求到这个页面后,不做处理或者不处理完,将请求转给另一个页面处理,然后再响应给客户端。


         而这两种跳转方法的区别就在于:

         getRequestDispatcher是服务器内部跳转,地址栏信息不变,只能跳转到web应用内的网页。
         sendRedirect是页面重定向,地址栏信息改变,可以跳转到任意网页。

相关文章
|
Java
java实现遍历树形菜单方法——index.jsp实现
java实现遍历树形菜单方法——index.jsp实现
9 0
|
12月前
|
Java
java实现遍历树形菜单方法——index.jsp实现
java实现遍历树形菜单方法——index.jsp实现
98 0
|
Java 应用服务中间件
使用最新版IDEA(21.3.2)创建一个最小的JAVAWEB应用(JSP,Servlet运行方法)
1.IDEA内创建一个基于Tomcat的项目 首先新建一个普通的项目
238 1
使用最新版IDEA(21.3.2)创建一个最小的JAVAWEB应用(JSP,Servlet运行方法)
jsp中对应的Servlet类中_jspservice()方法对应的源代码
原文发表于CSDN:https://blog.csdn.net/weixin_44350891/article/details/123051453
jsp中对应的Servlet类中_jspservice()方法对应的源代码
|
Java 应用服务中间件 容器
JSP和Servlet的六种中文乱码处理方法
JSP和Servlet的六种中文乱码处理方法
209 0
|
Java 关系型数据库 MySQL
JSP知识点笔记-常用技术方法
jsp知识点范围:请求回应,session,异常处理,cookie,数据库等
117 0
|
存储 安全 JavaScript
js/jsp操作cookie的方法
一、cookie简介 浏览器与WEB服务器之间是使用HTTP协议进行通信的;而HTTP协议是无状态协议。也就是说,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知。为了弥补这个缺陷,Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息, 它是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段。 它是服务器发送给浏览器的体积很小的纯文本信息。 定义:cookie是Web浏览器存储的少量命名
202 0