java response.sendredirect_「response.sendredirect」HttpServeltResponse接口中sendRedirect方法详解 - seo实验室...

news/2024/5/20 22:48:27/文章来源:https://blog.csdn.net/weixin_42512798/article/details/114873480

response.sendredirect

HTTP协议规定了一种重定向机制:用户在浏览器端输入特定的URL,请求访问服务器端的某个组件

服务器端的组件返回一个状态代码为302的响应结果,该响应结果的含义为:让浏览器端再请求访问另一个Web组件。在响应的结果中提供了另一个Web组件的URL。另一个Web组件有可能在同一个Web服务器上,也有可能不在同一个Web服务器上

当浏览器端接受到这种响应结果后,再立即自动请求另一个Web组件

浏览器端接受到来自另一个Web组件的响应结果

在java Servlet API中,HttpServeltresponse接口的sendRedirect(String location)方法用于重定向,而在ServletResponse接口中没有这个方法,因为重定向机制是由http协议规定的。

[html] view plain copyjavax.servlet.http

public interface HttpServletResponse

extends ServletResponse{

void    sendRedirect(String location)

Sends a temporary redirect response to the client using the specified redirect location URL and clears the buffer

}调用sendRedirect()方法会清空response buffer,因此Servlet源组件生成的响应结果不会被发送到客户端;客户端最后接受的目标组件的响应结果如果源组件在进行重定向之前,已经提交了响应结果(flush(),close()),那么sendRedirect()方法将会抛出IllegalStateException;为了避免异常,不应该在源组件中提交响应结果在源组件中,sendRedirect()调用后面的代码也会被执行源组件和目标组件不共享同一个Servletrequest对象,因此不共享请求范围内的共享数据对于response.sendredirect(String location)方法中的参数location,如果不以“/”开头,表示相对于当前源组件的路径;如果以“/”开头,表示相对于当前服务器根路径的URL,如果以“http://”开头,表示一个完整的internet上的路径;目标组件不必是同一个服务器上的同一个Web应用的组件,它可以是Internet上的任意一个有效的网页

示例:

创建一个源组件,在其中将请求转发给另一个组件:

[html] view plain copypackage com.gof.test.servlet;

import java.io.IOException;

import java.io.printwriter;

import javax.servlet.http.HttpServlet;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.Servletcontext;

public class RedirectSourceServlet extends HttpServlet {

/**

*

*/

private static final long serialversionuid = -729582654304035822L;

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException{

PrintWriter out = resp.getWriter();

// try to get the parameter form request

String username = req.getparameter("username");

String message = null;

if (username == null){

message = "Please input username.";

}else{

message = "Hello, " + username;

}

// try to add an attribute into the request

req.setAttribute("msg", message);

out.println("Output from RedirectSourceServlet before redirecting.");

// print to console

System.out.println("Output from RedirectSourceServlet before redirecting.");

// redirect

//resp.sendRedirect("/base-webAPP/redirectdest?msg=" + message);

resp.sendRedirect("redirectdest?msg=" + message);

out.println("Output from RedirectSourceServlet after redirecting.");

// print to console

System.out.println("Output from RedirectSourceServlet after redirecting.");

}

}

目标组件为:

[html] view plain copypackage com.gof.test.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.ServletContext;

public class RedirectDestinationServlet extends HttpServlet {

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException{

String message = (String)req.getAttribute("msg");

System.out.println("The attribute added by Source Sevelt is " + message);

message = req.getParameter("msg");

PrintWriter out = resp.getWriter();

out.println(message);

out.close();

}

}

在web.xml中注册:

[html] view plain copy

redirectsrc

com.gof.test.servlet.RedirectSourceServlet

redirectsrc

/redirectsrc

redirectdest

com.gof.test.servlet.RedirectDestinationServlet

redirectdest

/redirectdest

在浏览器中请求如下URL:

[html] view plain copyhttp://localhost:8080/base-webapp/redirectsrc?username=New User

可以看到浏览器显示的结果如下:

4d6e143dbc1b8c589ed1f564d4086c9b.png

该请求由两部分组成,第一部分的response中的返回状态码为302,并包含重定向的URL。

同时,浏览器显式的URL变为:

[html] view plain copyhttp://localhost:8080/base-webapp/redirectdest?msg=Hello,%20New%20User

在console中打印出的信息为:

[html] view plain copyOutput from RedirectSourceServlet before redirecting.

Output from RedirectSourceServlet after redirecting.

The attribute added by Source Sevelt is null

可以看到sendRedirect()方法后面的代码仍然会被执行;但是源组件中写入response中的内容不会被发送到客户端。

源组件和目标组件不共享请求范围内的数据,源组件向请求中存放的信息,在目标组件中无法获取该信息。

修改1:

在执行sendRedirect()方法之前,在源组件之前调用flush()方法;将会抛出IllegalStateException异常,同时浏览器会显示出源组件之前输出的内容。

修改2:

将sendRedirect()方法传入一个无效的servlet url,服务器端将返回页面未找到-404的错误提示。

修改3:

将sendRedirect()方法的参数修改为其他的internet网页,如“http://baidu.com”,请求访问源组件将指向这个网页。

转载自https://blog.csdn.net/robinjwong/article/details/39755509

文章最后发布于: 2018-04-16 17:43:43

相关阅读

一 、sendRedirect

1.1 重定向过程:

当使用HttpServletResponse的sendRedirect()时会发生重定向时,服务器会在Servlet中设置HTT

转自:http://www.newasp.net/tech/53042.html首先我们要明白用response.sendRedirect做转向的原理,它其实是向浏览器发送一个特殊的

转发(forward):IE浏览器地址不会改变,始终是同一个请求。重定向(sendRedirect): IE浏览器地址会改变,用两个请求。1)转发a)地址栏不

项目想要在后台进行页面跳转,用了response.sendRedirect,但是没反应,debug了一下,发现执行到重定向的时候没反应,当时就是一脸懵逼的,怎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_749435.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何实现网站的防盗链?

背景 A是网站站长,在A的网站的网页里有一些图片和音频视频的链接,这些静态资源都保留在阿里云对象存储OSS上。B是另一个网站的站长,B在未经A允许的情况下,偷偷使用A的网站的图片资源,放置在自己网站的网页中&#xff0…

生成结合图表_闭着眼也能做出高颜值的Excel图表,你只需这3个网站

今天的推文比较简单,为大家分享3个可以在线制作图表的宝藏网站。欢迎大家在看完之后,在留言区选出你心中觉得最实用的网站,或者跟大家分享你觉得更好用的网站。01. 图表秀全能又方便的在线图表制作神器https://www.tubiaoxiu.com/一款在线图表…

网站服务架构(转)

服务器划分 对于访问量大的网站而言,将网站的各个部分拆分分别部署到不同服务器上是很有必要的。例如将图片和web站点分开。一般而言,在网站的整个服务器部署上分为如下几种类型: 文件服务器:一般存储系统的相关图片和文件&#x…

赣州SEO优化市场最新分析-魏子龙博客

【魏子龙博客导读】赣州市是江西的第二大城市,赣州市所辖2区1市15县。赣州市主要的企业集中在沙河工业园、黄金开发区。企业类型主要包括机械制造、旅游、地产、稀土、脐橙、餐饮等。现在我对以上各行业做个赣州SEO优化市场分析。1.制造:赣州制造主要有电…

mysql springmvc 源码_spring MVC+easyUI+mybatis开发网站后台管理系统源代码下载

urls.properties中需要修改为你本地的静态文件的访问路径。转载js是封装好的大家可以讨论一下使用Java平台,采用SpringMVCMybatis等主流框架数据库:使用免费MYSQL前端:使用Jquery和Easyui技术.界面清晰简洁,易操作权限:对菜单,按钮控制.仅展示有权限的菜单和按钮.拦截:对所有无…

金昌搜索引擎优化网络推广_在网络推广外包中企业网站排名优化在网络推广外包中如何实现?...

随着互联网市场中企业网站数量的增加,网站优化人才的需要与日俱增,据资料显示,与国内当下亿万网民相比,我国目前仅有不足100万家企业从事网络营销,对于网络营销人才的需求也是巨大,未来几年将产生数以百万计…

nginx 隐藏目录_提升网站安全性-隐藏nginx信息

一般使用nginx的web网站,访问网站时,可以从请求头中看到使用了nginx以及nginx的版本号。暴露这些信息将给网站带来一定的风险,因此安装nginx时最好把这些信息隐藏。隐藏nginx 版本号与WEB服务器信息如果未安装nginx,先去官网下载压…

【转载】国内网站博客数据统计选免费Google Analytics还是百度统计

【转载】国内网站博客数据统计选免费Google Analytics还是百度统计 Google Analytics谷歌统计是我用的第一个网站统计工具,当然现在也一直在用。Google Analytics凭借其强大的功能和超强的稳定性、快速的反应能力、广泛的数据应用功能,受到了广大站长的追…

amp部署php网站,LAMP搭建以及企业网站搭建

linux中的LAMP的部署以及企业网站的搭建1.先卸载以rpm方式安装的php以及依赖包2.插入linux的系统盘并安装zlib-devel和libmxl2-devel3.在挂载libmcrypt光盘,并安装和配置 (make && make install)4.执行优化5.安装mhash软件 并配置和安装(make && ma…

关键词分词工具_关键词在SEO推广中的重要作用

点击标题下「蓝色微信名」可快速关注什么是关键词?用户通过在搜索引擎搜索框中输入想要查询的字,发起搜索行为,找到自己需要的信息。输入在搜索框中的字被称为关键词。关键词是网站优化中的方向,是第一步需要做的工作。网站优化是通过提升网…

django 设置媒体url_Django网站搭建系列(三)——视图

我们在前两期分别讲了Django项目创建:《Django网站搭建系列(一)——项目创建》和数据库设置:《Django网站搭建系列(二)——数据库设置与模型设计》,并且我们创建了博客的第一个模型:博文模型。在前两个章节里,我们已经…

PHPWAMP内置IIS管理器一键搭建PHP网站,支持无限个不同PHP版本同时运行

PHPWAMP内置功能强大的IIS站点管理,可同时运行多个PHP版本,站点管理可自定义添加PHP版本支持Apache、Nginx、IIS多功能站点管理,后期我会在业余时间开发出更多实用功能,敬请关注。使用方式:点击相关设置,直…

anguler 画面布局适应屏幕大小_自适应与响应式网站建设

网站建设是对于一个新手来讲是一件繁琐累人的事情,首先你要考虑自己的网站用途是什么?如果自己做建设,你需要的知识是很多的,如C、java、php、dreamweaver、photoshop、firework等等,一个网站不单单做出来,…

一个牛X的网站——中國哲學書電子化計劃

2019独角兽企业重金招聘Python工程师标准>>> 找《大明会典》时无意间发现的: 中國哲學書電子化計劃 网址:http://ctext.org/zhs 光看目录就激动的不行。。。 转载于:https://my.oschina.net/u/2399303/blog/902643

企业新建网站,为什么在搜索引擎上找不到?

这个问题可以很明确的回答一下:新建的网站,你不一定就可以在各大搜索引擎上找到!主要的原因如下:1、你的网站未被搜索引擎收录,不是任何网站都被搜索引擎收录的。2、即便收录啦,由于你对网站标题的设置&…

jstl处理栏目与子栏目_seo技术:大部分人遗漏的栏目页优化,你是否也忽视了?...

我们在做网站优化排名的时候发现,网站关键词排名一直上不来,而且关键词库是很少的,除了我们设置好的首页TKD以外,其它栏目页就没有好好的运用,我们可以看看大部分的企业网站,他们的栏目页大部分就是一些留言…

首页面太大怎么样快速加载_SEO团队_网站如何优化至百度首页

网站怎样优化才能快速进入搜索引擎的首页呢?平时我们所说的seo优化就是指企业网站的seo优化,使得网站的关键字能够有一个比较前的排名,甚至出现在搜索引擎的首页,这样网站的点击率以及流量都上升,给网站带来更大的利益…

怎么适应多种数据库_石河子商城网站制作怎么选

石河子商城网站制作怎么选,专业的技术团队,丰富的互联网运营成功经验,卓越的创作思维,为您创作出一流的品牌互联网形象。石河子商城网站制作怎么选, 十、国家对适龄儿童注射疫苗及预防接种方面有何规定?根据…

阿根廷绝杀尼日尼亚给我们互联网建站者带来什么启示?

2019独角兽企业重金招聘Python工程师标准>>> 今天凌晨两点钟,作为世界杯球迷的我也观看了阿根廷对战尼日尼亚的足球赛事,而一开场不久,梅西就凭借着自己超凡的球技破门,这是梅西在2018年俄罗斯奥运会上第一次成功射门&…

如何做好企业网站专题页建设及营销推广优化方案成都SEO_成都辰星建站

为什么80%的码农都做不了架构师?>>> 成都SEO企业网站专题页建设及企业网站营销推广优化分析及对应处理方案,企业网站除去网站基础优化以外网站专题网页制作也是一种提升网站流量关键词排名提升的方案方法之一特别是对于产品商城网站和资讯类网站做好专题…