JSP和Servlet的5种跳转方式介绍

JSP实现简单登录跳转 1.JSP介绍 JSP即JavaServerPages,JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。它是一种动态页面技术,它的主要目的是将表示逻... 阅读详情
第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中进行重定向   (通常不在jsp中使用。功能等于JSP中的<jsp:forward>标签)

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=request.getRequestDispatcher("/index.jsp"); 一般尽量用此句,因为request要比ServletContext类的对象sc要占用较少资源
  
  rd.forward(request, response);  
  
}

上面是使用ServletContext类中的getRequestDispatcher()方法来指定要转到的页面,其实在ServletRequest中也有这个方法,上例中也可以用rd=request.getRequestDispatcher("/index.jsp")来指定要转到的页面


第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) Dispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;

(2) response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。

前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法。

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


第3种—— <jsp:forward page="" />   (属服务器端跳转)

它的底层部分是由RequestDispatcher来实现的,因此它带有RequestDispatcher.forward()方法的印记。

如果在之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。

另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交


4. 修改HTTP header的Location属性来重定向(属客户端跳转)

通过设置直接修改地址栏来实现页面的重定向。

jsp文件代码如下:

<%
  response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
  String newLocn = "/newpath/jsa.jsp";
  response.setHeader("Location",newLocn);
<span style="font-family: Arial, Helvetica, sans-serif;">%></span>

或者response.setHeader("refresh","2");两秒种刷新一次本页面

response.setHeader("refresh","3;URL=index.html");三秒后跳转到index.html页,把3改为0则表示不等待,立即跳转。


5. 用HTML实现在某页面停留若干秒后,自动重定向到另一页面

在html文件中,下面的代码:

<meta http-equiv="refresh" content="300; url=target.jsp">

它的含义:在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间,以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。
  由上可知,可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。代码:
  String content=stayTime+";URL="+URL;
  response.setHeader("REFRESH",content);


下面是其他网友的文章:
1. request.getRequestDispatcher("/admin.jsp").forward(request, response);//转发到admin.jsp 

2. RequestDispatcher rd=request.getRequestDispatcher("/admin.jsp"); 
rd.forward(request, response); 

3. getServletConfig().getServletContext().getRequestDispatcher("/admin.jsp").forward(request, response); 

其它的方法当然可以用html js,的方法,需要jsp输出的,根据需要选择。


jsp页面的五种跳转方式 jsp页面的五种跳转方式 java jsp 立即下载

相关推荐

海康工业相机使用:常见问题及解决方法

工业相机在使用过程中,经常会因为操作不当、使用环境不当等原因出现一些问题,本篇教程,主要针对海康工业相机常见问题及其定位方法做以简单介绍,希望可以帮助大家。 注:该教程对其他品牌工业相机“常见问题”排查,也具备一定的指导意义。 当出现无法通过客户端发现设备或者无法预览图像等问题,先确认当前的运行环境是否满足以下要求: 确认装有相机驱动软件的电脑网卡为千兆网卡(Gige接口相机); 确认网卡是否已开启巨型帧; 确认电脑与网口相机之间的网络链路为千兆; 确认装有相机驱动软件的USB接口为3...

Cche的博客 3万+

JSP中的5中转发方式

1. RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传递...

weixin_30470857的博客 1056

pandas,构造MultiIndex的四种方法:from_tuples、from_arrays、from_product、from_frame

1、from_tuples:通过 “元组对” 构造MultiIndex """ 一对元组,为一个索引 """ tuples = [(1, 'red'), (1, 'blue'), (2, 'red'), (2, 'blue')] pd.MultiIndex.from_tuples(tuples, names=('number', 'color')) 2、from_arrays:通过 “列表元素的组合” 构造MultiIndex """ 列中表的元素,按位置 对应组合,形成索引 """ arrays

jieru_liu的博客 5387

什么是重定向,怎么解决重定向问题

重定向是指当用户访问一个网页时,服务器将用户的请求指向另一个页面的过程。通常,服务器会返回一个特定的状态码来告诉浏览器该进行重定向操作。重定向可以在不同的场景中发生,例如网站的URL更改、页面跳转和访问权限限制等。重定向是一种常见的技术,在网络应用中具有广泛的应用。它可以帮助我们解决URL更改、页面跳转和访问控制等问题。在处理重定向时,我们需要选择合适的重定向方法,并确保不会发生无限重定向的情况。通过代码示例,我们展示了如何使用重定向来实现不同的功能。

随便写写 2万+

libcrypto.so.10(OPENSSL_1.0.2)(64bit) is needed by erlang-22.0.7-1.el7.x86_64

今天安装Rabbitmq的 erlang-22.0.7-1.el7.x86_64.rpmrpm包时遇到了这个坑,害找到说是不容易;错误信息在下面; [root@iz2zef7u84js1qeeq00ewwz RabbitMQ]# rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm warning: erlang-22.0.7-1.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 6026dfca: NOKEY error:

qq_45782349的博客 5782

Abel逆变换及其求解方法

Abel逆变换常应用在轴对称的、光学薄的火焰、羽流或等离子体重建。

weixin_49783507的博客 8370

实现页面重定向(跳转)的4种方式

关键字:页面重定向(跳转,page redirection)、实现方式 写完标题,我突然想到了孔乙己,鲁迅先生嘲笑他以知道茴香豆的茴字有四种写法而感到自豪。不过我想我和孔乙己还是不同的,因为茴香豆的茴字会写一种即可,但本文总结的四种页面重定向的方式应用的场景不尽相同,产生的页面

Radic Feng的专栏 3万+

ubuntu20.04开机黑屏卡在/dev/sda1:clean,***files,***blocks,解决心得记录

这个问题如果你百度,会发现目前有很多种解决方法。 有更新显卡驱动的,有卸载上一次安装软件的,还有各种奇奇怪怪的故障原因。 如果你是属于上述情况,那么按照百度和论坛的各种指引操作一般都能解决。 但我这里主要说一种特殊情况,就是我什么也没有操作,我什么也没干。就是正常使用系统关了机突然就报错了。 这也是自己亲自遇到的问题,做个小记录方便以后自己回顾。 上一次出现这种情况我重装系统了,这次用了两个月又出现了,重装成本太高,我接受不了,于是找到解决办法。 首先找个终端进入,进入终端的方法很多,用安装u盘

qq_41517017的博客 2万+

Servlet之页面重定向

Servlet之页面重定向白话解释:页面重定向页面重定向方法-sendRedirect页面重定向案例案例描述HTML页面login.html登录页面welcome.html登录页面Java后端代码ReDirectPageServlet 子类编写web.xml虚拟路径映射配置ajax技术导致的页面重定向失败 白话解释:页面重定向     页面重定向,大白话说——简单可以认为是控制浏览器进行网页页面的跳转操作。     页面重定向

席木木的博客 3744

Astah 9.0升级步骤(Widnows/Mac OS)

Astah Professional是一款全新的轻量级UML建模工具。软件集思维导图和UML建模于一体,采用100%纯JAVA构建, 兼容性强,不仅能够实现分布式建模、项目合并,还能够实现和其它建模工具的交互。

tequiero777的博客 2824

使用 Simulink + Simscape Electrical 实现一个三相半控桥式整流器的仿真模型

本文详细介绍了使用Simulink搭建三相半控桥式整流器仿真模型的方法。主要内容包括系统结构设计、建模步骤(从创建项目到参数配置)、移相触发控制的实现,以及阻感负载下的动态响应分析。通过合理设置三相电源、整流器模块、触发控制和测量模块,实现了输出电压和电流波形的仿真观测。文章还提供了优化建议,如添加滤波器、实时控制等改进方向,为电力电子变换器的仿真研究和性能优化提供了实用指导。

amy_mhd的博客 140

java中的JSP向servlet跳转及传递参数的方法

jsp向servlet跳转及传递参数的方法 1.用a标签的href超链接,在href=“servletAction” 2.用form表单提交,点击类型为submit的提交按钮, action=“servletAction” method=‘get/post’ 3.用ajax,设置url=‘servletAction’,传递类型也是分为get和post,get直接在url后面加问号传参,pos...

desmoker的博客 5702

Python 爬虫实战:华尔街见闻精选文章爬取(反反爬 + 投资情绪分析)

Python 爬虫实战:华尔街见闻精选文章爬取(反反爬 + 投资情绪分析)

yansideyucsdn的博客 969

servlet.java如何跳转到jsp页面?jsp如何跳到servlet.java

servlet.java如何跳转到jsp页面# 必须使用绝对路径,不能使用相对路径,servlet.java是在src目录下,jsp是在webroot目录下,彼此不存在相对关系; //调用后台的方法,将新闻信息插入数据库中 bRet = newsService.add(news); if(bRet) /*重定向的绝对路径是:localhost:8080/web5/jsp/newsDeta...

qq_41554955的博客 7475

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【转】JSP和Servlet之间跳转总结

Request.getContextPath() 即代表 /项目名。 如/news01   一、从JSP页面跳到其他页面或Servlet   从JSP页面跳到其他页面使用全路径( /项目名/文件的路径 )。如项目名为news01,页面目录如下   1)比如从ind

天天向尚 的专栏 1406

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jsp和servlet知识点总结

<br /><br />一.Jsp与servlet的区别:<br />1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)<br />2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.<br />3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServl

mcy478643968的专栏 4287

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jsp与servlet之间的跳转

JSP和Servlet之间跳转总结:   Request.getContextPath() 即代表 /项目名。 如/news01   一、从JSP页面跳到其他页面或Servlet   从JSP页面跳到其他页面使用全路径( /项目名/文件的路径 )。如项目名为news01,页面目录如下     1)比如从index.jsp页面跳到main文件夹下的list.jsp页

JAVA_96的博客 1345

JSP和Servlet之间跳转总结:

JSP和Servlet之间跳转总结:   Request.getContextPath() 即代表  /项目名。 如/news01   一、从JSP页面跳到其他页面或Servlet   从JSP页面跳到其他页面使用全路径( /项目名/文件的路径 )。如项目名为news01,页面目录如下        1)比如从index.jsp页面跳到main文件夹下的list.jsp页面: ...

奇迹的黄昏 306

jsp内置对象,跳转方式,jsp四大域对象,EL表达式,jstl标签库,servlet

jsp内置对象,跳转方式,重定向,请求转发,jsp四大域对象,EL表达式,jstl标签库,servlet

weixin_51635918的博客 1382

java servlet 跳转页面跳转_jsp和servlet中实现页面跳转的方式实例总结

本文实例总结了jsp和servlet中实现页面跳转的方式。分享给大家供大家参考,具体如下:假设要求从test1.jsp 跳转到test2.jsp一. jsp中跳转:1. 使用requestdispatcher.forward方法转发requestdispatcher rd = getservletcontext().getrequestdispatcher("/test/test2.jsp");r...

weixin_36392230的博客 727

JSP与Servlet的跳转及得到路径方法整理

今天整理项目的流程,在JSP和Servlet之间跳来跳去,曾经一段时间,我都是把Servlet路径定义为“/SomeServlet”,也即定义为根目录,因为兼容性比较好,但是用了MyEclipse之后,新建的Servlet默认路径是“/servlet/SomeServlet”,这样写便于管理,另外就是更适合单独为Servlet设置Filter(关于Filter的设置可以参考这篇文章)。而我的JSP

筚路蓝缕 以启山林 1012

第05章 Servlet和JSP应用

这是一套简单的javaweb基础课程,只包含servelt和jsp的基础部分

richieandndsc的博客 1416

JSP和Servlet之间跳转总结

转载于:http://blog.sina.com.cn/s/blog_6e4059a40100qzrh.html JSP和Servlet之间跳转总结:Request.getContextPath() 即代表 /项目名。 如/news01一、从JSP页面跳到其他页面或Servlet从JSP页面跳到其他页面使用全路径( /项目名/文件的路径 )。如项目名为news01,页面目录如下1)比如从index.

山外小楼 314

JSP和Servlet常见面试题

1. Servlet的生命周期? 装载Servlet类并创建实例阶段,该阶段在默认情况下发生在客户端第一次向服务器端发送请求 初始化阶段,servlet实例创建完成后,调用init(ServletConfig config)方法对该实例完成初始化工作 服务阶段,根据Http请求方式,调用service()方法中对应的doGet()或doPost()方法,并将响应结果返回 销毁阶段,当服务器关闭或...

SileeLiu的博客 3082
上一篇: 外键约束
下一篇: 通俗讲解Annotation注解(反射注解)
xtfdc2
博客等级 码龄18年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值