控制浏览器以下载方式打开:
response.setHeader("content-disposition", "attachment;filename=02.jpg"); String path = this.getServletContext().getRealPath("/01.jpg"); FileInputStream in = new FileInputStream(path); byte buffer[] = new byte[1024]; int len = 0; OutputStream out = response.getOutputStream(); while((len=in.read(buffer))>0){ out.write(buffer, 0, len); } out.close(); in.close();
控制浏览器定时刷新
response.setHeader("refresh", "3;url='http://www.google.com.hk'"); response.getWriter().write("aaaaaa"); //-------------- response.getWriter().write("<meta http-equiv='refresh' content='3;url=index.jsp'>"); response.getWriter().write("aaaaaa");
content-type头字段的作用
String path = this.getServletContext().getRealPath("/02.jpg"); FileInputStream in = new FileInputStream(path); byte buffer[] = new byte[1024]; int len = 0; response.setHeader("content-type", "image/jpeg"); OutputStream out = response.getOutputStream(); while((len=in.read(buffer))>0){ out.write(buffer, 0, len); } out.close(); in.close();
数据压缩
String data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; System.out.println("原始数据的大小:" + data.getBytes().length); ByteArrayOutputStream bout = new ByteArrayOutputStream(); GZIPOutputStream gout = new GZIPOutputStream(bout); gout.write(data.getBytes()); gout.close(); byte gzipData[] = bout.toByteArray(); response.setHeader("Content-Encoding", "gzip"); response.setHeader("content-length", gzipData.length+""); response.getOutputStream().write(gzipData);
http影响头Location(这个头通常配合302状态码使用,服务器使用这个头告诉浏览器去找谁)
response.setStatus(302); response.setHeader("location", "/day04/index.jsp");
http影响头Range(Range头指示服务器只传输一部分Web资源。这个头可以用来实现断点续传功能。Range字段可以通过三种格式设置要传输的字节范围)
Range: byte=1000-200(传输范围从1000到2000字节)
Range: byte=1000- (传输Web资源中第1000个字节以后的所有内容)
Range: byte=1000 (传输最后1000个字节)
URL url = new URL("http://localhost:8080/day04/1.txt"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("Range", "bytes=6-"); FileOutputStream out = new FileOutputStream("c:\\1.txt",true); InputStream in = conn.getInputStream(); int len = 0; byte buffer[] = new byte[1024]; while((len=in.read(buffer))>0){ out.write(buffer, 0, len); } in.close(); out.close();
---------------------------------------------------------------------------------------------------------------------------------
http请求头
Accept: 用于告诉服务器,客户机所支持的数据类型
Accept-Charset: 用于告诉服务器,客户机所采用的码表
Accept-Encoding: 用于告诉服务器,客户机所支持的数据压缩格式
Accept-Language: 用于告诉服务器,客户机的语法环境
Host: 用于告诉服务器,客户机想访问服务器哪台主机
If-Modified-Since: 用于告诉服务器,客户机对于资源的最后缓存时间
Referer: 用于告诉服务器,客户机是从哪个页面去访问服务器的 (防盗链)
User-Agent: 用于告诉服务器,客户机的机器环境(例如所使用的操作系统,浏览器版本号)
Cookie:客户端通过这个头字段,可以带一些数据给服务器
Connection:客户端通过这个头字段告诉服务器,请求完成后,是保持链接还是关闭链接
http响应头
Location:这个头通常配合302状态码使用,服务器使用这个头告诉浏览器去找谁
Server:服务器通过这个头告诉浏览器,服务器的类型
Content-Encoding: 服务器通过这个头告诉浏览器,数据的压缩格式(gzip)
Content-Length:服务器通过这个头告诉浏览器,回送数据的长度
Content-Language:
Content-Type: 服务器通过这个头告诉浏览器,回送数据的类型
Last-Modified: 服务器通过这个头告诉浏览器,数据的最后修改时间
Refresh:服务器通过这个头告诉浏览器,多长时间定时刷新
Content-Disposition: 控制浏览器以下载方式打开回送的数据
Transfer-Encoding: 服务器通过这个头告诉浏览器,数据是以块方式回送的
Expires:控制浏览器缓存数据的时间(-1或0,代表控制浏览器不要缓存)
Cache-Control: no-cache
Pragma: no-cache 以上三个头一起用,就可以控制所有的浏览器不要缓存数据
GET带的参数不能超过1k。
POST传输无限制。
进行杀不死的原因是因为是以系统服务启动的。要杀死它只需要通过系统服务里停止即可。
Tomcat:目录层次结构:
bin:启动和关闭Tomcat的脚本文件
conf:存放各种配置文件
lib:各种jar包
logs:Tomcat日志文件(命令行输出的内容都会记录在这里)(排错主要看这些文件)
temp:Tomcat运行时存放的临时文件
webapps:web应用所在的目录,供外界访问的web资源
work:工作目录,Tomcat会将jsp翻译成servlet会放在这里。(class文件)
打jar包: c:\>jar -cvf mail123.war mail(c盘下的文件夹)
1、如何把WEB应用加载到服务器上的三种方法(Tomcat6中,不再建议在server.xml文件中配置content元素)(因为需要重启服务器,开发中可以这样做,上线就不能这样做)
Context中配置一般配置其他web应用资源(例如数据库连接池,javamail,session)reloadable="true"(最好不要设置,服务器资源一大就会重启很慢。而且经常重启会导致程序出错)
#在server.xml文件中添加一条语句<Context path="想要映射的地址(对外访问的路径:http://localhost:8080/(#这里#))" docBase="WEB应用所在路径"/> 如果path中设置为""则表示设置为缺省的WEB应用 不推荐使用 因为修改后要重新开启服务器
#在服务器文件夹中找conf-Catalina-localhost中建立一个xml文件,该文件名称为该应用映射的地址<Context docBase="WEB应用所在路径"/> 无需重新开启服务器 自动加载应用
conf/Catalina/主机名(域名)/(path=)XXX.xml (多层路径可以a#b#c.xml)(文件里面只需配置(Context docBase="WEB应用所在路径")缺省web应用可以ROOT.xml(需要重启服务器)) http://localhost:8080/a/b/c
#最简便方式把该应用直接方到webapps文件夹中,服务器会自动加载 最常用方式(ROOT文件夹为缺省访问路径(web应用))
2、如何建立一个虚拟主机 在server.xml文件中添加如下代码就会添加一个名为www.baidu.com的虚拟主机 内部为该网站中的各种应用程序
(为什么要有虚拟主机呢?因为多个域名可以映射到同一个IP(同一台服务器里提供服务),如:www.baidu.com或者www.google.com都映射到同一个IP:192.168.1.1)。
那么虚拟主机的作用是用户通过浏览器访问多个网站(同一台服务器提供服务)时。那么服务器会根据不同的网站(域名)映射到配置好的虚拟主机里。
</Host> <Host name="www.baidu.com" appBase="C:\360Downloads\baidu"> <Context path="" docBase="C:\360Downloads\baidu\mail"/> </Host> </Host> <Host name="www.google.com" appBase="C:\360Downloads\baidu"> <Context path="" docBase="C:\360Downloads\baidu\mail"/> </Host>
以上那个虚拟主机都是由同一台服务器提供服务。