(转自: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基础知识 **1. JSP简介** - **定义**: Java Server Pages (JSP) 是一种基于Java技术的服务器端脚本语言,用于创建动态网页。 - **特点**: JSP页面可以将...
JSPServlet的重定向技术是Web开发中两个关键的方法,用于改变HTTP请求的处理路径,以便将用户导向不同的页面或资源。这两种技术分别是`RequestDispatcher.forward()`和`response.sendRedirect()`,它们各有特点和...
本文将深入探讨JSP与Servlet的重定向技术,并结合提供的资源来帮助初学者理解和掌握这一核心概念。 首先,JSP是一种视图技术,它允许开发者在HTML代码中嵌入Java代码,使得网页具有动态生成内容的能力。而Servlet是...
上述配置表明了 `JspServlet1` 和 `JspServlet2` 分别映射到 `/JspServlet` 和 `/admin/JspServlet` 这两个 URL。这意味着用户在浏览器中输入这些 URL 时,会触发对应的 Servlet 处理程序。 #### 五、总结 本文详细...
**JSP和Servlet基础知识详解** ...理解并掌握这些基本概念对于JSPServlet新手来说至关重要,它们构成了开发Web应用的基础。在实际开发中,根据需求选择合适的方法,可以构建高效、功能丰富的Web应用。
以下将详细阐述JSP与Servlet之间的交互机制、页面转发与重定向的区别,以及在web.xml配置文件中对Servlet的映射设置。 ### JSP与Servlet的交互 JSP(Java Server Pages)是一种基于Java的服务器端脚本技术,用于...
Servlet通常作为控制器,处理请求,更新模型,然后转发或重定向到JSP页面,由JSP负责渲染视图。 总结一下,JSP和Servlet是Java Web开发中的重要组件,它们共同协作,提供灵活、高效的方式创建动态网站。通过学习和...
本文详细介绍了JSP和Servlet中关于请求与响应的关键知识点,包括JSP内置对象的作用、请求与响应对象的使用方法、中文乱码问题及其解决办法、转发与重定向的区别以及Servlet的基本创建和配置流程。希望这些内容能够...
根据提供的文件信息,以下是对达内servlet/jsp/jquery培训资料中的关键知识点的详细解析: ### 1. 架构 - **C/S 架构(Client-Server 架构)**: - 客户端和服务端通过TCP/IP协议进行通信。 - 特点包括:需要...
2. **转发和重定向**:Servlet可以使用RequestDispatcher进行请求转发或者响应重定向,控制流程跳转到不同的JSP页面。 3. **请求参数处理**:从HttpServletRequest对象中获取请求参数,传递给业务逻辑层进行处理。 ...
Servlet接收到请求后,进行必要的数据处理,然后可能将结果存储在域对象中(如HttpSession或RequestScope),最后转发或重定向到JSP页面,由JSP负责渲染结果显示给用户。这种方式有利于实现MVC(Model-View-...
重定向则是发送新的请求,用户浏览器地址栏会显示新的URL。 6. **数据库操作**: 购物车项目可能涉及数据库操作,如商品信息存储、用户订单管理等。这通常需要用到JDBC(Java Database Connectivity)来连接和操作...
4. **音乐播放**:可能通过JavaScript或Flash实现,JSP展示播放器界面,Servlet提供音频资源的URL。 5. **安全机制**:包括防止SQL注入、XSS攻击等,可能使用预编译SQL语句,或者对输入数据进行过滤和编码。 6. **...
### Servlet与JSP详解 #### 一、Servlet基础概述 **Servlet** 是Java Web开发的基础技术之一,主要用于处理客户端的HTTP请求,并返回响应结果。它是一种服务器端的Java应用程序,可以扩展服务器的功能。 ##### ...
如果验证成功,可以重定向到一个受保护的页面,如`welcome.jsp`;反之,将错误信息返回给JSP页面。 ```java import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class LoginServlet ...
**JSP+Servlet+JavaBean+JDBC简单登录实例详解** 在Web开发中,构建一个用户登录系统是常见的需求。本实例将详细讲解如何利用JavaServer Pages (JSP)、Servlet、JavaBean以及Java Database Connectivity (JDBC) 来...
这个JSP页面可能包含`<form>`标签,指定`enctype="multipart/form-data"`以支持文件上传,并且`action`属性指向Servlet的URL。 总的来说,"ImportFileAction.zip"提供的示例展示了如何使用JSP和Servlet协作处理文件...
**转发与重定向**在Servlet中,请求转发(RequestDispatcher的forward()方法)和重定向(HttpServletResponse的sendRedirect()方法)是两种常见的URL导航方式。转发是在服务器端完成的,而重定向会通知客户端发起新...
- 可能还有配置文件如web.xml,用于部署描述符,配置Servlet和URL映射。 通过学习和理解这个源码,开发者可以更好地掌握Java Web开发中的MVC模式,提升应用设计和开发能力。同时,这种模式也适用于其他Web框架,如...
在Java Web开发中,Servlet和JSP(JavaServer Pages)是两种重要的技术,它们共同用于构建动态网页应用。本教程将介绍如何使用servlet和jsp实现数据的增删改查功能,这对于理解Web应用程序的基本工作原理至关重要。 ...