控制浏览器以下载方式打开:
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>
以上那个虚拟主机都是由同一台服务器提供服务。
分享到:
相关推荐
当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。 Servlet也可以执行ServletRequest接口和ServletResponse接口。...
Servlet是Java编程语言中的一个接口,由Java Servlet API提供,用于扩展服务器的功能。本项目是一个简单的HTTP应用示例,旨在帮助理解如何使用Http Servlet进行开发。 1. **Servlet生命周期**:Servlet的生命周期...
Servlet 文件扩展------------URL 文件扩展名,用来告诉 Domino 它是一个 Servlet,以逗号分隔。 会话状态跟踪----------------启用/禁用指示 Servlet 管理者是否将中止空闲的会话。 空闲超时时间------
当多个线程同时访问同一个Servlet时,如果这些线程同时修改了Servlet中的共享资源(例如实例变量),那么就可能会导致数据不一致性的问题,从而引发一系列的安全性问题。 #### 一、理解Servlet线程安全问题 ...
用注解的方式定义一个Servlet,就不用在web.xml中配置了。Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。 像上面的AnnotationServlet可以描述成@WebServlet(name="Annotation...
Servlet容器是Web应用程序的核心组成部分,它负责管理和执行Servlet,Servlet是一种Java编程接口,用于扩展服务器的功能。本主题将深入探讨“一个简单的Servlet容器”的实现,参考自《深入剖析Tomcat》这本书的第二...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。...一个简易在线投票系统,基于java servlet
这个压缩包“一个支持servlet的web服务器.rar”很可能包含了实现这一功能的源代码、配置文件或者是一个预编译好的服务器软件,允许开发者在本地环境中运行和测试Servlet应用。下面我们将深入探讨Servlet以及如何在...
Servlet技术始于1995年,由Sun Microsystems推出,现在已经成为Java EE规范的一部分。本篇将深入探讨Servlet的基础知识及其运行环境——Servlet容器模型。 首先,让我们了解Servlet的基础。Servlet是一个Java类,...
实验1: 利用servlet实现一个简单的聊天室 实验目的 (1) 理解servlet的工作原理 (2) 掌握servlet编程基本技能 实验内容及要求 1. 利用servlet技术实现一个简单的聊天室,实现多人同时交流。当发送聊天信息时,信息...
1. **创建Servlet类**:新建一个Java类,比如名为`MyServlet`,并继承`HttpServlet`。 2. **重写方法**:覆盖`doGet()`或`doPost()`方法,具体取决于你要处理的HTTP请求类型。在这个例子中,我们主要关注`doGet()`,...
【标题】:“基于Servlet的一个网上书城” Servlet技术是Java Web开发中的核心组件之一,它是一种服务器端的Java应用程序,用于扩展服务器的功能,处理HTTP请求并返回响应。在这个项目“基于Servlet的一个网上书城...
### 第一个Servlet开发全过程 #### 一、概述 本文将详细介绍如何使用Oracle的JDeveloper工具来开发一个简单的Servlet应用程序,并通过一系列步骤展示整个过程。Servlet技术是Java Web开发中的核心组成部分之一,它...
"Servlet 入门教程:运行第一个 Servlet" 本文将指导您如何运行第一个 Servlet,从下载 Tomcat 到编写和部署 Servlet 的每一个步骤。首先,我们需要下载 Tomcat 并设置环境变量中的 JAVA_HOME。然后,我们可以启动 ...
这个jar包是Java Servlet规范的一部分,用于构建动态、交互式的Web应用程序。当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. *...
Servlet是Java平台上的一个核心技术,它用于扩展服务器的功能,特别是在Web开发中,Servlet扮演着服务器端应用程序的角色,能够处理HTTP请求并返回响应。在Java Web应用中,Servlet是实现动态网页的重要组件,它们...
本项目“servlet第一课项目”是一个基础级别的教程,旨在帮助初学者掌握Servlet的基本概念和应用,通过实现一个简单的猜数字游戏来加深理解。 首先,我们来看一下Servlet的工作原理。Servlet是一个Java类,它继承自...
Servlet是Java平台上的一个核心组件,它允许开发者创建动态web应用程序。Servlet API是Java Servlet规范的一部分,它定义了服务器端程序如何与HTTP协议交互以及如何处理来自web客户端的请求并返回响应。`servlet.jar...
在这个简单的Servlet示例中,我们将会探讨如何创建和运行一个基本的Servlet,以及它与JavaScript的交互。 首先,Servlet是一个Java类,它扩展了Java的`javax.servlet.Servlet`或`javax.servlet.http.HttpServlet`...
Servlet是一种Java类,它扩展了服务器的功能,特别是对于Web应用而言。Servlet API提供了一个框架,让开发者可以通过编写Java代码来处理HTTP请求,生成动态内容,并与数据库或其他后端系统进行交互。这个API包括一...