- 浏览: 1824 次
- 性别:
- 来自: 北京
最新评论
response应用案例
案例一:定时刷新网页
应用场景:登陆、注销、提示xxx秒后,将会跳转xxx页面。网页数据,定时更新
package cn.itcast.day06.servlet;
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseServlet2 extends HttpServlet { //定时刷新网页 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //http响应头信息 refresh //5秒后自动跳转到welcome.html 格式:时间(秒);url=跳转地址 response.setHeader("refresh", "5;url=/myday06/welcome.html");//这个是设置刷新5秒后自动跳转到另一个页面 response.setContentType("text/html;charset=utf-8");//这个是设置浏览器的显示编码,固定的,一定得记得 PrintWriter out=response.getWriter(); out.println("5秒后自动跳转到欢迎页面"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
------------------------------------------------------------------------
在这里还有一个重点是:
html网页里面的meta头信息也可以实现自动跳转的功能
下面是一个html的头文件信息
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > <!-- meta设置头信息 --> <meta http-equiv="refresh" content="5;url=/day6/welcome.html" >这个也可以实现页面的自动刷新功能 <title>Insert title here</title>
-------------------------------------------------------------
java里面实现不了动态的时间跳转效果,一般的时间跳转效果都是javascript做出来的
下面用javascript来做一个时间倒计时的动态效果:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > <!-- meta设置头信息 --> <!--<meta http-equiv="refresh" content="5;url=/day6/welcome.html" >--> <title>Insert title here</title> <script type="text/javascript"> var i =5; function init(){ document.getElementById("content").innerHTML = i; // 更新标签内的 内容 if(i>0){ i--; setTimeout("init();", 1000); // 间隔1秒后 执行 init方法 }else{ location.href="/day6/welcome.html"; // 跳转到 xxx页面 } } </script> </head> <body onload="init();"> <!-- onload网页 加载完成调用 方法 --> <span id="content"></span>秒后 自动跳转到 欢迎页面! </body> </html>
案例二:对网页请求重定向
package cn.itcast.servlet.response;
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseServlet2 extends HttpServlet { // 通过 状态码和头信息 完成 重定向 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setStatus(302); response.setHeader("Location", "/day6/index.jsp"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
案例三、设置缓存过期时间
package cn.itcast.day06.servlet; import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseServlet3 extends HttpServlet { //缓存这个servlet生产页面 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 过期时间需要用http协议头信息expires来设置 //java描述时间 毫秒描述 //当前时间毫秒 long time1=new Date().getTime();//第一种方法获取当前时间 long time2=System.currentTimeMillis();//第二种获取当前时间的方法 response.setDateHeader("expires", time1+1000*60*60);//设置缓存过期时间一个小时 response.getWriter().println("web content!!"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
案例四:servlet中文件下载的实现功能
package cn.itcast.day06.web.servlet;
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DownloadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 实现防盗链功能 // 获得 referer 头 用于说明来访者来自哪里 String referer = request.getHeader("referer"); if(referer==null || !referer.startsWith("http://localhost")) { // 是盗链者 response.sendRedirect("/day06/index.jsp");//这是图片的存放地址 return ; } // 解决response中文乱码问题 response.setContentType("text/html;charset=utf-8"); // 设置消息体的编码 // 通过 http 协议 发送的http响应消息头 不能出现中文 中文必须要经过url编码 String filename = URLEncoder.encode("美女.jpg", "utf-8"); // 通知浏览器以下载的方式读取资源*** response.setHeader("content-disposition", "attachment;filename="+filename); // 使用流读取图片数据 发给ie浏览器 String webPath = "/download/美女.jpg"; // 相当于当前web应用的path ServletContext servletContext = super.getServletContext(); InputStream in = servletContext.getResourceAsStream(webPath); OutputStream out = response.getOutputStream(); int len; byte[] buffer = new byte[1024]; while((len=in.read(buffer))!=-1) out.write(buffer, 0, len); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
案例五、生成图片验证码功能
package cn.itcast.day06.servlet;
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseServlet1 extends HttpServlet { // 用java生成一张图片 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 使用java技术图像界面绘制一张图片 int charNum = 4;// 数量,四个字。 int width = 30 * 4; int height = 40; // 1 创建一张内存图片 BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); // 2获得绘图对象 Graphics graphics = bufferedImage.getGraphics(); // 3绘制背景颜色 graphics.setColor(Color.YELLOW); // 4.绘制矩形。 graphics.fillRect(0, 0, width, height); // 5.绘制图片边框 graphics.setColor(Color.BLUE); graphics.drawRect(0, 0, width - 1, height - 1); // 6.输出验证码内容 graphics.setColor(Color.RED); graphics.setFont(new Font("宋体", Font.BOLD, 30)); // 7,随机输出4个字母,graphics2D来选择字母 Graphics2D graphics2d=(Graphics2D)graphics; String s = "ABCDEFGHIJKLMN"; //常用的简体中文汉字 // String base = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a\u7740\u4e2a\u5730\u5230\u5927\u91cc\u8bf4\u5c31\u53bb\u5b50\u5f97\u4e5f\u548c\u90a3\u8981\u4e0b\u770b\u5929\u65f6\u8fc7\u51fa\u5c0f\u4e48\u8d77\u4f60\u90fd\u628a\u597d\u8fd8\u591a\u6ca1\u4e3a\u53c8\u53ef\u5bb6\u5b66\u53ea\u4ee5\u4e3b\u4f1a\u6837\u5e74\u60f3\u751f\u540c\u8001\u4e2d\u5341\u4ece\u81ea\u9762\u524d\u5934\u9053\u5b83\u540e\u7136\u8d70\u5f88\u50cf\u89c1\u4e24\u7528\u5979\u56fd\u52a8\u8fdb\u6210\u56de\u4ec0\u8fb9\u4f5c\u5bf9\u5f00\u800c\u5df1\u4e9b\u73b0\u5c71\u6c11\u5019\u7ecf\u53d1\u5de5\u5411\u4e8b\u547d\u7ed9\u957f\u6c34\u51e0\u4e49\u4e09\u58f0\u4e8e\u9ad8\u624b\u77e5\u7406\u773c\u5fd7\u70b9\u5fc3\u6218\u4e8c\u95ee\u4f46\u8eab\u65b9\u5b9e\u5403\u505a\u53eb\u5f53\u4f4f\u542c\u9769\u6253\u5462\u771f\u5168\u624d\u56db\u5df2\u6240\u654c\u4e4b\u6700\u5149\u4ea7\u60c5\u8def\u5206\u603b\u6761\u767d\u8bdd\u4e1c\u5e2d\u6b21\u4eb2\u5982\u88ab\u82b1\u53e3\u653e\u513f\u5e38\u6c14\u4e94\u7b2c\u4f7f\u5199\u519b\u5427\u6587\u8fd0\u518d\u679c\u600e\u5b9a\u8bb8\u5feb\u660e\u884c\u56e0\u522b\u98de\u5916\u6811\u7269\u6d3b\u90e8\u95e8\u65e0\u5f80\u8239\u671b\u65b0\u5e26\u961f\u5148\u529b\u5b8c\u5374\u7ad9\u4ee3\u5458\u673a\u66f4\u4e5d\u60a8\u6bcf\u98ce\u7ea7\u8ddf\u7b11\u554a\u5b69\u4e07\u5c11\u76f4\u610f\u591c\u6bd4\u9636\u8fde\u8f66\u91cd\u4fbf\u6597\u9a6c\u54ea\u5316\u592a\u6307\u53d8\u793e\u4f3c\u58eb\u8005\u5e72\u77f3\u6ee1\u65e5\u51b3\u767e\u539f\u62ff\u7fa4\u7a76\u5404\u516d\u672c\u601d\u89e3\u7acb\u6cb3\u6751\u516b\u96be\u65e9\u8bba\u5417\u6839\u5171\u8ba9\u76f8\u7814\u4eca\u5176\u4e66\u5750\u63a5\u5e94\u5173\u4fe1\u89c9\u6b65\u53cd\u5904\u8bb0\u5c06\u5343\u627e\u4e89\u9886\u6216\u5e08\u7ed3\u5757\u8dd1\u8c01\u8349\u8d8a\u5b57\u52a0\u811a\u7d27\u7231\u7b49\u4e60\u9635\u6015\u6708\u9752\u534a\u706b\u6cd5\u9898\u5efa\u8d76\u4f4d\u5531\u6d77\u4e03\u5973\u4efb\u4ef6\u611f\u51c6\u5f20\u56e2\u5c4b\u79bb\u8272\u8138\u7247\u79d1\u5012\u775b\u5229\u4e16\u521a\u4e14\u7531\u9001\u5207\u661f\u5bfc\u665a\u8868\u591f\u6574\u8ba4\u54cd\u96ea\u6d41\u672a\u573a\u8be5\u5e76\u5e95\u6df1\u523b\u5e73\u4f1f\u5fd9\u63d0\u786e\u8fd1\u4eae\u8f7b\u8bb2\u519c\u53e4\u9ed1\u544a\u754c\u62c9\u540d\u5440\u571f\u6e05\u9633\u7167\u529e\u53f2\u6539\u5386\u8f6c\u753b\u9020\u5634\u6b64\u6cbb\u5317\u5fc5\u670d\u96e8\u7a7f\u5185\u8bc6\u9a8c\u4f20\u4e1a\u83dc\u722c\u7761\u5174\u5f62\u91cf\u54b1\u89c2\u82e6\u4f53\u4f17\u901a\u51b2\u5408\u7834\u53cb\u5ea6\u672f\u996d\u516c\u65c1\u623f\u6781\u5357\u67aa\u8bfb\u6c99\u5c81\u7ebf\u91ce\u575a\u7a7a\u6536\u7b97\u81f3\u653f\u57ce\u52b3\u843d\u94b1\u7279\u56f4\u5f1f\u80dc\u6559\u70ed\u5c55\u5305\u6b4c\u7c7b\u6e10\u5f3a\u6570\u4e61\u547c\u6027\u97f3\u7b54\u54e5\u9645\u65e7\u795e\u5ea7\u7ae0\u5e2e\u5566\u53d7\u7cfb\u4ee4\u8df3\u975e\u4f55\u725b\u53d6\u5165\u5cb8\u6562\u6389\u5ffd\u79cd\u88c5\u9876\u6025\u6797\u505c\u606f\u53e5\u533a\u8863\u822c\u62a5\u53f6\u538b\u6162\u53d4\u80cc\u7ec6"; Random random = new Random(); int x = 5; for (int i = 0; i < 4; i++) { int index = random.nextInt(14); String content = String.valueOf(s.charAt(index)); double theta=random.nextInt(35)*Math.PI/180;//这个是得到一个角度,转换成弧度的公式 graphics2d.rotate(theta, x, 28); graphics2d.drawString(content, x, 28); graphics2d.rotate(-theta, x, 28);//转过去后再转回来 x+=30; } // 8,生成干扰线 graphics.setColor(Color.GRAY); for (int i = 0; i < 50; i++) { int x1=random.nextInt(width); int x2=random.nextInt(width); int y1=random.nextInt(height); int y2=random.nextInt(height); graphics.drawLine(x1, y1, x2, y2); } //释放一下内存资源 graphics.dispose(); // 图片输出imageIo graphics.setColor(Color.YELLOW); ImageIO.write(bufferedImage, "jpg", response.getOutputStream()); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
为了实现点击图片自动刷新功能,需要写一个js代码,代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function refreshImage(){
var img=document.getElementById("myimg");
//刷新验证码图片,要想刷新地址,必须不一样,
img.src="/myday06/response1?time="+new Date().getTime();
}
</script>
</head>
<body>
请输入验证码:<input type="text" name="checkCode"/><img src="/myday06/response" id="myimg" onclick="refreshImage()">
</body>
</html>
实现的效果如下:
相关推荐
Java Web应用开发 22 课堂案例-使用response设置响应头属性.docx 学习资料 复习资料 教学资源
Java Web应用开发 24 课堂案例-使用response刷新页面.docx 学习资料 复习资料 教学资源
Java Web应用开发 23 课堂案例-使用response实现重定向.docx 学习资料 复习资料 教学资源
使用Eclipse编写Servlet; Request与Response初步
1、将数据从服务器发回浏览器——Response对象 2、实现网站的访客数的统计 3、ASP.NET控件 4、数据操作控件 5、用于连接SQL数据库的数据源控件——SqlDataSource控件
Spring MVC是Spring提供的构建Web应用程序的框架,该框架遵循了Servlet规范,负责接收并处理Servelt容器传递的请求,并将响应写回Response。Spring MVC以DispatcherServlet为核心,众多组件如HandlerMapping为辅助,...
爬虫系统概述和基本原理 爬虫系统的定义和作用 爬虫系统的基本工作流程和组成部分 ...实际案例分析和项目实践 实际爬虫系统的设计和实现 爬虫系统的性能优化和调试技巧 爬虫项目开发流程和实践经验分享
项目用例,一个简单的“翻译器应用程序”,用户可以在其中存储配对翻译(请参见下面的示例)并检索它们。 作为用户,我希望能够存储多种语言组合的翻译。 STORE-REQUEST{DE(Hund)->EN(dog)} -> RESPONSE{OK} 作为...
二话不说了,直接给代码,相信需要的都是代码而不是废话一堆…… 1.java代码: 代码如下: package tt; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException;...
利用大数据技术可以深入分析客服热线呼入客户IVR(Interactive Voice Response,互动式语音应答)行为特征、访问路径、等候时长等;同时结合客户历史接触 信息、基本属性等可以建立热线呼入客户的智能识别模型;基于...
在我们的案例中,这是Remcom的Wireless InSite。 示例文件“ exampleGetCIR.m”显示了如何将Matlab函数与该软件包中提供的少量输入文件一起使用。 Matlab功能说明: 该函数提取光线追踪器输出处提供的接收功率值和...
4.2.2 Response对象应用 70 4.3 Out输出对象 74 4.3.1 Out简介 74 4.3.2 Out对象应用 76 4.4 PageContext对象 77 4.4.1 PageContext简介 77 4.4.2 PageContext对象应用 78 4.5 Session会话对象 79 4.5.1 Session简介...
记住这些信息,可以使用Cookie来实现,更多Cookie应用,可参考http://jb51.net/article/33590.htm http://jb51.net/article/33591.htm现在我们来模拟一个登录介面: 代码如下: <table> <tr> <td xss=removed> User ...
10 2.03requests的请求实战及Response对象.mp4 11 2.04xpath解析的应用.mp4 12 2.05古诗文网的爬虫.mp4 13 2.06request的session及图片验证码处理.mp4 14 3.01回顾知识点.mp4 15 3.02封装ElasticSearch操作的...
第三节 response对象 第四节 session对象 第五节 application对象 第六节 out对象 第七节 exception对象 实训 习题 第四章ccjsp中使用数据库 第一节 jdbc技术的工作原理 第二节 jdbc四种...
该项目旨在使用NLP机器学习管道来发现案例并在灾难发生时提供更快的帮助。 数据由图八提供,可在“数据”文件夹中找到。 文件夹组织 该项目的组织如下: 应用| -模板| |-master.html#Web应用程序的主页| |-go....
通过小案例:用户登录的功能来讲解通过jquery validate插件进行表单验证以及通过jquery form进行表单数据提交,以及后端接收数据 讲解缓存:cookie,session 讲解django自带的中间件,以及自己创建中间件 实战开发...
拥有众多的优秀功能和特性,经历了三年多发展的同时,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和 改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。 ThinkPHP借鉴了国外很多优秀的...
掌握使用request对象处理请求 掌握使用response对象处理响应 掌握使用session对象管理用户数据 掌握在Java Web应用中实现数据库操作 掌握使用控制页简化页面结构
1.2.4 了解JavaWeb应用的成功案例 1.3 JavaWeb开发的基石-开发工具包JrDK 1.3.1 下载JDK 1.3.2 JDK的安装 1.3.3 配置和测试JDK 1.4 JavaWeb应用的Web服务器Tomcat 1.4.1 Web应用服务工作原理 1.4.2 web应用服务器...