心得8--重定向详解、控制浏览器定时刷新网页详解及response细节
来源:互联网 发布:淘宝突然收不到消息了 编辑:程序博客网 时间:2024/05/16 17:44
1. 相对路径就是最前面没有反斜杠或是./的;绝对路径相反,绝对路径就是本地路径。Web应用中的html文件中写的绝对路径是相对于站点而言的,就是客户端浏览器,而并不是你当前的web应用。
大多数网站都不用servlet来直接向浏览器发显示效果。servlet注意是做服务的。浏览器直接读jsp的后html的
2. 转发和重定向的区别:
打个比方,比如借钱;转发是你向我借钱,我没有,但我知道他有,我帮你向他借;重定向是我告你说他有,然后让你向他借。
1).向服务器发出两次请求,有2个response和request对象,发是发一次;2).重定向地址栏会发生变化,而转发不会。
3. 设置字符编码的时候,引号中间的值分割一定要是分号,不能错写成逗号,否则用浏览器测试的时候会出现提示:是否下载response.setContentType("text/html;charset=UTF-8");
4. response常见应用
l 通过response实现请求重定向。
• 请求重定向指:一个web资源收到客户端请求后,通知客户端去访问另外一个web资源,这称之为请求重定向。
l 应用场景:用户登陆、购物车(京东商城上的购物车就存在bug,也许是网站站长故意这么编码的,购物时放到购物车的商品这个过程本来应该用重定向的,他却用的转发,你刷新一次他就自动给你添加一件商品)。
l 实现方式
• response.sendRedirect()
• 实现原理:
• 302状态码和location头即可实现重定向
例子:
package com.response;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 重定向的特点
1.浏览器向服务器发2次请求,有2个response和request对象
2.地址栏会发生变化。
3.重定向的速度很快,达到瞬间刷到另一个页面
* */
public class ResDemo5 extends HttpServlet {
public voiddoGet(HttpServletRequest request, HttpServletResponse response)
throwsServletException, IOException {
/*第一种重定向的方法:设置状态吗和头实现,这是实现原理
response.setStatus(302);
Web应用中的html文件中写的绝对路径是相对于站点而言的
response.setHeader("location","/WebDemo/index.jsp");
*/
//第二种重定向的方法:直接调用方法sendRedirect(),该方法中封装了第一种方法的过程
response.sendRedirect("/WebDemo/index.jsp");
}
public voiddoPost(HttpServletRequest request, HttpServletResponse response)
throwsServletException, IOException {
doGet(request,response);
}
}
5.response细节
l getOutputStream和getWriter方法分别用于得到输出二进制数据、输出文本数据的ServletOuputStream、Printwriter对象。但是前者兼容后者,因为后者输出的东西前者都可以输出。
l getOutputStream和getWriter这两个方法互相排斥,调用了其中的任何一个方法后,就不能再调用另一方法。如果两种方法同时调用会出现错误:java.lang.IllegalStateException: getOutputStream() has already beencalled for this response(就是说这个servlet类已经发送过响应了)
l Servlet程序向ServletOutputStream或PrintWriter对象中写入的数据将被Servlet引擎从response里面获取,Servlet引擎将这些数据当作响应消息的正文,然后再与响应状态行和各响应头组合后输出到客户端。
l Serlvet的service方法结束后,Servlet引擎将检查getWriter或getOutputStream方法返回的输出流对象是否已经调用过close方法,如果没有,Servlet引擎将调用close方法关闭该输出流对象。也就是说会自动关闭上面说的流
6.发送http头,控制浏览器定时刷新网页(REFRESH);一个例子详细解说
package com.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 ResDemo4 extends HttpServlet {
public voiddoGet(HttpServletRequest request, HttpServletResponse response)
throwsServletException, IOException {
//test3(response);
//一般编程都用这种方法设置登录界面的刷新,需要两个jsp界面,由于String类型的message是作为参数传给jsp页面的,所以在这个servlet类中就不用设置编码,只保证jsp跟浏览器编码一直就ok
Stringmessage = "<meta http-equiv='refresh'content='3;url=/WebDemo/index.jsp'>登陆成功,3秒后自动跳转到首页,如果没有跳到请点击<a href='/WebDemo/index.jsp'>首页</a>";
this.getServletContext().setAttribute("message",message);
this.getServletContext().getRequestDispatcher("/message.jsp").forward(request,response);
}
//3秒后自动跳转到新浪首页
public voidtest2(HttpServletResponse response) {
response.setHeader("refresh","3;url=http://www.sina.com");
}
//编写一个显示本地时间,并随时更新的时间程序
public voidtest1(HttpServletResponse response) throws IOException {
response.setHeader("refresh","1");
response.getWriter().write(newjava.util.Date().toLocaleString());
}
//假设这是一个处理登陆的servlet,登陆成功后自动跳转到一个首页
public voidtest3(HttpServletResponse response){
response.setHeader("refresh","3;url=/WebDemo/index.jsp");
response.setContentType("text/html;charset=UTF-8");
try {
response.getWriter().write("登陆成功,3秒后自动跳转到首页,如果没有跳到请点击<a href='/WebDemo/index.jsp'>首页</a>");
} catch(IOException e) {
e.printStackTrace();
}
}
public voiddoPost(HttpServletRequest request, HttpServletResponse response)
throwsServletException, IOException {
doGet(request,response);
}
}
- 心得8--重定向详解、控制浏览器定时刷新网页详解及response细节
- 控制浏览器定时刷新、缓存、重定向
- response控制浏览器定时刷新
- response控制浏览器实现重定向
- HttpServletResponse response(中文乱码、文件下载、定时刷新、控制缓存、重定向、注意事项)
- servlet response应用四:发送http头,控制浏览器定时刷新网页(REFRESH)
- response实现控制浏览器器缓存和请求重定向
- response刷新以后重定向
- 004_Http之response响应头-02定时刷新(定时重定向)
- response常见应用、response细节、输出随机图片、定时刷新网页
- response常见应用、response细节、输出随机图片、定时刷新网页
- jsp 重定向、定时刷新
- 控制浏览器定时刷新
- I/O重定向 详解及例子!
- I/O重定向 详解及例子!
- I/O重定向 详解及例子!
- I/O重定向详解及例子
- 详解301重定向及实现方法
- linux 隐式调用 自己写的动态库
- Gid+私有字体
- Cloud computing with Linux
- dapm机制
- POJ 1011的一道题(木棍组合)
- 心得8--重定向详解、控制浏览器定时刷新网页详解及response细节
- linux 显式调用 自己写的动态库
- Ffmpeg快速命令使用 Ffmpeg选项详解 Ffmepg格式详解 常见视频文件格式详解
- 同时求数列的最大值与最小值
- Java断点续传
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- linux进程间通信(一)
- Java.io包学习-获取文件的父目录
- 心得9--三步教你自己一个验证码工具