`

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>

 

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

2
2
分享到:
评论
1 楼 han_zw 2011-10-28  
,很实用,收录一下了。

相关推荐

    java-servlet-api.doc

    当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。 Servlet也可以执行ServletRequest接口和ServletResponse接口。...

    Http Servlet一个简单的Http应用

    Servlet是Java编程语言中的一个接口,由Java Servlet API提供,用于扩展服务器的功能。本项目是一个简单的HTTP应用示例,旨在帮助理解如何使用Http Servlet进行开发。 1. **Servlet生命周期**:Servlet的生命周期...

    Domino_Servlet示例

    Servlet 文件扩展------------URL 文件扩展名,用来告诉 Domino 它是一个 Servlet,以逗号分隔。 会话状态跟踪----------------启用/禁用指示 Servlet 管理者是否将中止空闲的会话。 空闲超时时间------

    Servlet线程安全的解决方法

    当多个线程同时访问同一个Servlet时,如果这些线程同时修改了Servlet中的共享资源(例如实例变量),那么就可能会导致数据不一致性的问题,从而引发一系列的安全性问题。 #### 一、理解Servlet线程安全问题 ...

    Java用注解的方式定义一个Servlet

    用注解的方式定义一个Servlet,就不用在web.xml中配置了。Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。  像上面的AnnotationServlet可以描述成@WebServlet(name="Annotation...

    一个简单的servlet容器

    Servlet容器是Web应用程序的核心组成部分,它负责管理和执行Servlet,Servlet是一种Java编程接口,用于扩展服务器的功能。本主题将深入探讨“一个简单的Servlet容器”的实现,参考自《深入剖析Tomcat》这本书的第二...

    基于java servlet实现的在线投票系统源码+项目说明(高分毕设).zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。...一个简易在线投票系统,基于java servlet

    一个支持servlet的web服务器.rar

    这个压缩包“一个支持servlet的web服务器.rar”很可能包含了实现这一功能的源代码、配置文件或者是一个预编译好的服务器软件,允许开发者在本地环境中运行和测试Servlet应用。下面我们将深入探讨Servlet以及如何在...

    servlet基础与servlet容器模型

    Servlet技术始于1995年,由Sun Microsystems推出,现在已经成为Java EE规范的一部分。本篇将深入探讨Servlet的基础知识及其运行环境——Servlet容器模型。 首先,让我们了解Servlet的基础。Servlet是一个Java类,...

    利用servlet技术实现一个简单的聊天室

    实验1: 利用servlet实现一个简单的聊天室 实验目的 (1) 理解servlet的工作原理 (2) 掌握servlet编程基本技能 实验内容及要求 1. 利用servlet技术实现一个简单的聊天室,实现多人同时交流。当发送聊天信息时,信息...

    Servlet的一个基础例子

    1. **创建Servlet类**:新建一个Java类,比如名为`MyServlet`,并继承`HttpServlet`。 2. **重写方法**:覆盖`doGet()`或`doPost()`方法,具体取决于你要处理的HTTP请求类型。在这个例子中,我们主要关注`doGet()`,...

    基于servlet的一个网上书城

    【标题】:“基于Servlet的一个网上书城” Servlet技术是Java Web开发中的核心组件之一,它是一种服务器端的Java应用程序,用于扩展服务器的功能,处理HTTP请求并返回响应。在这个项目“基于Servlet的一个网上书城...

    如何运行servlet(第一个servlet).doc

    "Servlet 入门教程:运行第一个 Servlet" 本文将指导您如何运行第一个 Servlet,从下载 Tomcat 到编写和部署 Servlet 的每一个步骤。首先,我们需要下载 Tomcat 并设置环境变量中的 JAVA_HOME。然后,我们可以启动 ...

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    这个jar包是Java Servlet规范的一部分,用于构建动态、交互式的Web应用程序。当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. *...

    第一个Servlet

    Servlet是Java平台上的一个核心技术,它用于扩展服务器的功能,特别是在Web开发中,Servlet扮演着服务器端应用程序的角色,能够处理HTTP请求并返回响应。在Java Web应用中,Servlet是实现动态网页的重要组件,它们...

    servlet第一课项目

    本项目“servlet第一课项目”是一个基础级别的教程,旨在帮助初学者掌握Servlet的基本概念和应用,通过实现一个简单的猜数字游戏来加深理解。 首先,我们来看一下Servlet的工作原理。Servlet是一个Java类,它继承自...

    用于servlet程序的开发的servlet-jar包

    Servlet是Java平台上的一个核心组件,它允许开发者创建动态web应用程序。Servlet API是Java Servlet规范的一部分,它定义了服务器端程序如何与HTTP协议交互以及如何处理来自web客户端的请求并返回响应。`servlet.jar...

    一个简单的servlet示例

    在这个简单的Servlet示例中,我们将会探讨如何创建和运行一个基本的Servlet,以及它与JavaScript的交互。 首先,Servlet是一个Java类,它扩展了Java的`javax.servlet.Servlet`或`javax.servlet.http.HttpServlet`...

    javaEE servlet-api

    Servlet是一种Java类,它扩展了服务器的功能,特别是对于Web应用而言。Servlet API提供了一个框架,让开发者可以通过编写Java代码来处理HTTP请求,生成动态内容,并与数据库或其他后端系统进行交互。这个API包括一...

Global site tag (gtag.js) - Google Analytics