response


总结:1.我们创建servlet的时会覆盖service()方法,或doGet/doPost(),这些方法都有两个参数,一个代表请求request一个代表响应reponse
2.设置响应状态码:response.setStatus(304);302:重定向;304:访问缓存;404:地址错误;500:找不到服务器资源
3.设置重定向代码:1.底层代码的方法:先设置状态码(302);再设置Locatiob头:1.response.setstatus)(302);2.设置location头:response.setHeader ("Location","/WEB0911/Servlet01(这里写地址)")
设置响应代码快捷方式:response.sendReditect("/WEB0911/Servlet02")
4.解决中文乱码问题:1.设置response缓冲区的编码是UTF-8编码:response.setCgaracterEncoding("UTF-8");
2.设置客户端浏览器的编码是UTF-8:response.setHeader("Content-Type","text/html;charset="UTF-8");
3.简便的中文乱码解决方式:response.getWriter().Write("你好")
4.定时重定向:jsp中的body内容:恭喜您注册成功,<span id="second" style="color:red">5</span>注册成功后自动跳转如不跳转点这里<a href="www.baidu.com">这里</a>
head标签上面的内容:<script> window.onload function(){ 1.获取span元素, var second=document.getElementById("second"); 2.设置秒数: var time=5;
3.设置定时器: var timer=setInterval(function(){ second.innerHTML=time; time--;if(time==0){ clearInterval(time);location.href="www.baidu.com"}},1000)
<span id="second" style="color:red">5<span> < a href="wwww.baidu.com"></a>
window,onload=function(){ var second=document.getRlementById("second"); var time=5; var timer=setInterval(function(){ second.innerHTML=time; time--;
if(time==0){ clear.Interval(timer); location.href="www.baidu.com"}},1000)
5.本地文件在浏览器上展示,实际上就是复制:1.明确文件的源地址:FileInputStream in=new FileInputStream("F://demo0611//a.txt");
2.获取servlet的字节输出对象:ServletOutputStream out=response.getOutputStream(); int len=0;byte[] bytes=new byte[1024];
3.开始复制:while((len=in.read(bytes))!=-1){out.writer(bytes,0,len)};in.close();
6.文件的下载:1.现在jsp中写上下载位置:这里是通过jsp文件中Servlet地址找到servlet文件,然后通过键名:filename以及不同的值名:美少女.txt来找到响应的标签<a href=/WEB0911/Download?filename=美少女.txt"">美少女.txt</a>;<a href="/WEB0911/DownLoad?filename=a.zip">a.zip</a>;键值对前面要加上?这样才能声明这是个查询的变量,然后通过每个值不一样来找到响应的标签,在浏览器上能解析的会在浏览器上直接显示,不能解析的会下载。
7.文件的下载:1.获取响应的a标签和filename名:String filename=request.getParameter("filename")
2.解决中文乱码://request解决中文乱码;解决文件的中文名
filename=new String(filename.getBytes("ISO8859-1"),"UTF-8");
//根据不同浏览器对文件名进行编码;下面这段编码是为了适应所有浏览器
String filenameEncoder="";
String agent=request.getHeader("User-Agent");
if (agent.contains("MSIE")) {
// IE浏览器
filenameEncoder= URLEncoder.encode(filename, "utf-8");
filenameEncoder= filenameEncoder.replace("+", " ");
} else if (agent.contains("Firefox")) {
// 火狐浏览器
BASE64Encoder base64Encoder = new BASE64Encoder();
filenameEncoder= "=?utf-8?B?"
+ base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
} else {
// 其它浏览器
filenameEncoder= URLEncoder.encode(filename, "utf-8");
}
3.获取servletcontext对象:ServletContext context=getServletContext();4.获取文件压缩类型 String mime=context.getmimeType(filename);
5.告知浏览器文件类型:response.setContentType(mime)6.告知浏览器下载功能:response.setHeader("Content-Disposition","attachment;filename="+filenameEncoder)
6.根据相对路径获取服务器的绝对路径:String path=context.getRealPath("downlaod/"+filename);
7明确数据源:FileInputStream in=new FileInputStream(path);获得向客户输出的流:ServletOutputStream out=new StreamOutputStream();
8.开始复制:int len=0;byte[] bytes=new byte[1024]; while((len=in.read(bytes))!=-1){ out.writer(bytes,0,len)};in.close();
1.先获取filename对象; String filename=request.getParament("filename");2.获取servlet对象;ServletContext context=getServletContext();
2.获取文件压缩类型:String mime=context.getMimeType(filename);3.向浏览器声明压缩文件:reponse.setContenType(mime);
4.向浏览器声明文件下载:reponse.setHeader("Content-Disposition","attachment;filename="+filename);明确路径:String path=context.getRealPath("download/"+filename);
5.明确数据源:FileInputStream in=new FileInputStream(path); 6.创建输出流:ServletOutputStream out=response.getOutputStream();
6.开始复制:byte[] bytes=new byte[1024] int len=0;while((len=in.read(bytes))!=-1){ out.write(bytes,0,len)}in.close();
8.验证码:成语文件(new_words.text)+CheckImgServlet(Servlet文件)+code.jsp(页面控制的):
code.jsp:页面内容:<img src="/WEB0911/CheckImgServlet" onclick="checkImg(this)"
head标签上写function方法:function checkingCheck(obj){ obj.src="/WEB0911/CheckImgServlet?time=" new date().gettime();
这里加上时间来命名是为了解决304缓冲问题,因为页面地址没有改变只是里面的图片改变,浏览默认不变,那么需要我们给加上时间来命名是他不断改变.
这里的obj就是下面调用的checkimg方法里面的this

原文地址:https://www.cnblogs.com/hankai2735/p/11597981.html