`
xumingming64398966@yahoo.com.cn
  • 浏览: 41089 次
文章分类
社区版块
存档分类

JSP/Servlet的URL重定向

阅读更多

(转自:http://www.1to2.us/JSP-Servlet-URL-a134119.htm)

1.RequestDispatcher.forward() 
是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在b.jsp都可以获得,参数自动传递. 
但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面. 

重定向后浏览器地址栏URL不变. 

例:在servlet中进行重定向 
代码内容通常在servlet中使用,不在jsp中使用。 

public void doPost(HttpServletRequest request,HttpServletResponse response)   
throws ServletException,IOException   ...{   
    response.setContentType(
"text/html; charset=gb2312");   
    ServletContext sc 
= getServletContext();   
    RequestDispatcher rd 
= null;   
    rd 
= sc.getRequestDispatcher("/index.jsp"); //定向的页面   
    rd.forward(request, response);   
}

 

2.response.sendRedirect() 
是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件. 
重定向后在浏览器地址栏上会出现重定向页面的URL 
例:在servlet中重定向 
代码内容

public void doPost(HttpServletRequest request,HttpServletResponse response)   

throws ServletException,IOException   ...{   

    response.setContentType(
"text/html; charset=gb2312");   

    response.sendRedirect(
"/index.jsp");   

}

 

由于response是jsp页面中的隐含对象,故在jsp页面中可以用response.sendRedirect()直接实现重定位。

注意: 

(1).使用response.sendRedirect时,前面不能有HTML输出。 

这并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说JSP SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量的HTML输出也是允许的。 

(2).response.sendRedirect之后,应该紧跟一句return; 

我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。 
比较: 
(1).Request Dispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址; 
(2).response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。 
前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法. 

注:在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。 

3.<jsp:forward page="" /> 

它的底层部分是由RequestDispatcher来实现的,因此它带有RequestDispatcher.forward()方法的印记。  如果在<jsp:forward>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。 
另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交 

4.修改HTTP header的Location属性来重定向 
通过设置直接修改地址栏来实现页面的重定向。 
jsp文件代码如下: 
代码内容:5.JSP中实现在某页面停留若干秒后,自动重定向到另一页面 
在html文件中,下面的代码: 
<meta http-equiv="refresh" content="300; url=target.jsp"> 
它的含义:在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间,以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。 
由上可知,可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。 
关键代码: 
代码内容

<%   
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);   
String newLocn = "/newpath/jsa.jsp";   
response.setHeader("Location",newLocn);   
%>   

 

String content=stayTime+";URL="+URL;   
response.setHeader(
"REFRESH",content);   

 



分享到:
评论

相关推荐

    JSP与Servlet复习

    ### JSP与Servlet复习知识点详解 #### 一、JSP与Servlet基础知识 **1. JSP简介** - **定义**: Java Server Pages (JSP) 是一种基于Java技术的服务器端脚本语言,用于创建动态网页。 - **特点**: JSP页面可以将...

    JSPServlet的重定向技术综述

    JSPServlet的重定向技术是Web开发中两个关键的方法,用于改变HTTP请求的处理路径,以便将用户导向不同的页面或资源。这两种技术分别是`RequestDispatcher.forward()`和`response.sendRedirect()`,它们各有特点和...

    JSP-Servlet.rar_jsp_jsp综述_servlet_servlet jsp

    本文将深入探讨JSP与Servlet的重定向技术,并结合提供的资源来帮助初学者理解和掌握这一核心概念。 首先,JSP是一种视图技术,它允许开发者在HTML代码中嵌入Java代码,使得网页具有动态生成内容的能力。而Servlet是...

    JSP与servlet之间的传值

    上述配置表明了 `JspServlet1` 和 `JspServlet2` 分别映射到 `/JspServlet` 和 `/admin/JspServlet` 这两个 URL。这意味着用户在浏览器中输入这些 URL 时,会触发对应的 Servlet 处理程序。 #### 五、总结 本文详细...

    JSPServlet新手学习资料

    **JSP和Servlet基础知识详解** ...理解并掌握这些基本概念对于JSPServlet新手来说至关重要,它们构成了开发Web应用的基础。在实际开发中,根据需求选择合适的方法,可以构建高效、功能丰富的Web应用。

    jsp加servlet的问题

    以下将详细阐述JSP与Servlet之间的交互机制、页面转发与重定向的区别,以及在web.xml配置文件中对Servlet的映射设置。 ### JSP与Servlet的交互 JSP(Java Server Pages)是一种基于Java的服务器端脚本技术,用于...

    jsp,servlet基础理论知识

    Servlet通常作为控制器,处理请求,更新模型,然后转发或重定向到JSP页面,由JSP负责渲染视图。 总结一下,JSP和Servlet是Java Web开发中的重要组件,它们共同协作,提供灵活、高效的方式创建动态网站。通过学习和...

    jsp和servlet请求与响应

    本文详细介绍了JSP和Servlet中关于请求与响应的关键知识点,包括JSP内置对象的作用、请求与响应对象的使用方法、中文乱码问题及其解决办法、转发与重定向的区别以及Servlet的基本创建和配置流程。希望这些内容能够...

    达内servlet/jsp/jquery资料

    根据提供的文件信息,以下是对达内servlet/jsp/jquery培训资料中的关键知识点的详细解析: ### 1. 架构 - **C/S 架构(Client-Server 架构)**: - 客户端和服务端通过TCP/IP协议进行通信。 - 特点包括:需要...

    基于Mybatis/servlet的简单CRUD

    2. **转发和重定向**:Servlet可以使用RequestDispatcher进行请求转发或者响应重定向,控制流程跳转到不同的JSP页面。 3. **请求参数处理**:从HttpServletRequest对象中获取请求参数,传递给业务逻辑层进行处理。 ...

    jsp+servlet项目

    Servlet接收到请求后,进行必要的数据处理,然后可能将结果存储在域对象中(如HttpSession或RequestScope),最后转发或重定向到JSP页面,由JSP负责渲染结果显示给用户。这种方式有利于实现MVC(Model-View-...

    基于jsp&servlet开发的购物车项目

    重定向则是发送新的请求,用户浏览器地址栏会显示新的URL。 6. **数据库操作**: 购物车项目可能涉及数据库操作,如商品信息存储、用户订单管理等。这通常需要用到JDBC(Java Database Connectivity)来连接和操作...

    JSP源码——音乐网站(JSP+SERVLET).zip

    4. **音乐播放**:可能通过JavaScript或Flash实现,JSP展示播放器界面,Servlet提供音频资源的URL。 5. **安全机制**:包括防止SQL注入、XSS攻击等,可能使用预编译SQL语句,或者对输入数据进行过滤和编码。 6. **...

    Servlet+jsp.docx

    ### Servlet与JSP详解 #### 一、Servlet基础概述 **Servlet** 是Java Web开发的基础技术之一,主要用于处理客户端的HTTP请求,并返回响应结果。它是一种服务器端的Java应用程序,可以扩展服务器的功能。 ##### ...

    JSP +servlet eclipse登陆程序

    如果验证成功,可以重定向到一个受保护的页面,如`welcome.jsp`;反之,将错误信息返回给JSP页面。 ```java import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class LoginServlet ...

    Jsp+Servlet+JavaBean+JDBC简单登录实例

    **JSP+Servlet+JavaBean+JDBC简单登录实例详解** 在Web开发中,构建一个用户登录系统是常见的需求。本实例将详细讲解如何利用JavaServer Pages (JSP)、Servlet、JavaBean以及Java Database Connectivity (JDBC) 来...

    ImportFileAction.zip_Jsp/Servlet_Java_

    这个JSP页面可能包含`&lt;form&gt;`标签,指定`enctype="multipart/form-data"`以支持文件上传,并且`action`属性指向Servlet的URL。 总的来说,"ImportFileAction.zip"提供的示例展示了如何使用JSP和Servlet协作处理文件...

    JSP_Servlet_MVC.rar_jsp+servlet设计

    **转发与重定向**在Servlet中,请求转发(RequestDispatcher的forward()方法)和重定向(HttpServletResponse的sendRedirect()方法)是两种常见的URL导航方式。转发是在服务器端完成的,而重定向会通知客户端发起新...

    JSP源码——jsp+servlet+javaBean实现MVC_jspmvc.zip

    - 可能还有配置文件如web.xml,用于部署描述符,配置Servlet和URL映射。 通过学习和理解这个源码,开发者可以更好地掌握Java Web开发中的MVC模式,提升应用设计和开发能力。同时,这种模式也适用于其他Web框架,如...

    简单的servlet+jsp

    在Java Web开发中,Servlet和JSP(JavaServer Pages)是两种重要的技术,它们共同用于构建动态网页应用。本教程将介绍如何使用servlet和jsp实现数据的增删改查功能,这对于理解Web应用程序的基本工作原理至关重要。 ...

Global site tag (gtag.js) - Google Analytics