Servlet(一)

控制浏览器以下载方式打开:

 

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传输无限制。


0、Tomcat:Java_Home=java的安装目录。
   Tomcat:Catalina_home环境变量=设置Tomcat的安装目录。(因为有多个Tomcat目录,决定是那个Tomcat目录启动(无论从那个Tomcat启动:startup都会启动配置好的(Catalina_home)的Tomcat)
   Tomcat:Catalina_home如果没有设置就默认启动startup所在目录的Tomcat(推荐开发过程中不需要设置),开发后上线运营时才需要设置。

进行杀不死的原因是因为是以系统服务启动的。要杀死它只需要通过系统服务里停止即可。

 

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>

 

以上那个虚拟主机都是由同一台服务器提供服务。

你可能感兴趣的:(http,servlet)