- 浏览: 656257 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
HkEndless:
不好意思,请问这确定是回调机制吗。你的例子中只是将接口的实现类 ...
Spring CallBack回调机制介绍 -
hanmiao:
写的真乱啊,完全不知所云...
Java如何调用可执行文件和批处理命令 -
junia_1:
junia_1 写道 shock: ...
为什么要使用EJB -
junia_1:
shock:
为什么要使用EJB -
coollifer:
不错
SQL Server数据导入到Oracle中的方法
前面提到了,web服务器响应一般由状态行,一个或多个响应报头 (其中一个必须为Content-Type),一个空行和关联文档组成,要让servlet发挥最大的效力,你不仅需要知道如何生成文档(事实上以后都是用jsp来完成这个工作的),更重要的是要知道 有效地利用状态行和响应报头
如前所述,HTTP响应报头的设置,经常是和状态代码的设置结合一起的
,例如文档发生移动的状态代码300到307都伴随一个Location头,401(Unauthorized)
代码经常包括伴随WWW-Authenticate的报头。
即使在设置正常的状态代码时,指定报头 也是十分重要的。响应报头 可以用来:指定cookie,提供页面的修改日期(用于客户端缓存),指示浏览器在指定的时间间隔后重新载入页面,给出文件的大小使持续性http连接的应用成为可能,指定生成文档的类型以及执行许多其他任务。
7.1 在servlet中设置响应报头
1, 指定报头时,最通用的方式是使用HttpServletResponse的setHeader方法,接受两个字符串,报头名和报头值:
setHeader(String headerName, String headerValue);//注意这样就只能设置报头值是String类型的报头了
这是通用的方法,对于含有整数和日期的报头,提供了专门的方法,消去上述职能设置String值的缺点:
setDateHeader(String header, long milliseconds)
setIntHeader(String header, int headerValue)
2, HTTP允许同名的报头名多次出现,有时候我们希望加入新的报头,这时就 用addHeader,addDateHeader,addIntHeader;(set替换,add新增),如果需要知道是否已经包含了特定的报头,可 以用containsHeader进行检查。
3, HttpServletResponse还提供了许多方便的方法来指定常用的报头(就不用再使用setHeader了)
setContentType(String mimeType) 设置Content-Type报头,大多数servlet都要用到这个
setContentLength(int length) 设置Content-Length报头,如果浏览器支持持续性http连接,这个报头将十分有用
addCookie(Cookie c) 见cookie管理
sendRedirect(String address) 将状态代码设为302,并设置Location报头
7.2 理解HTTP1.1响应报头
理解常见报头的含义:
Allow 指定服务器支持的请求方法
Cache-Control
Connection close值指定浏览器不要使用持续性http连接
Content-Disposition
Content-Encoding 页面传输使用的编码,gzip,,,
Content-Language
Content-Length
Content-Type 响应文档的mime类型
Expires
Last-Modified
Location 通知浏览器文档的地址
Pragma
Refresh 表明浏览器多长时间后请求最新的页面 例如response.setIntHeader("Refresh", 30);
Retry-After 告诉客户程序多久后重复它的请求
Set-Cookie
WWW-Authenticate
棕色表示的报头在下面的示例中会用到
7.3 示例:构建Excel表格
servlet也可以生成Excel类型,Excel的MIME类型是application/vnd.ms-excel:
response.setContentType( " application/vnd.ms-excel " ); PrintWriter out = response.getWriter();
package coreservlets; import java.io. * ; import javax.servlet. * ; import javax.servlet.http. * ; // 输出一个简单的excel表格 public class ApplesAndOranges extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType( " application/vnd.ms-excel " ); // 设置setContent-Type报头指定输出格式 PrintWriter out = response.getWriter(); // excel接受制表符/t out.println( " \tQ1\tQ2\tQ3\tQ4\tTotal " ); out.println( " Apples\t78\t87\t92\t29\t=SUM(B2:E2) " ); out.println( " Oranges\t77\t86\t93\t30\t=SUM(B3:E3) " ); } }
请求:http://localhost:8080/Servlet/servlet/ApplesAndOranges的结果----
打开表格内容为:
7.4 servlet状态的持续以及页面的自动重载
如果你的jsp或者servlet执行一项耗时较长的计算任务,比如20秒或者更多,你不能知网计算完成后再将结果发送至客户,到那时客户可能已经放弃并离开该页面或者更坏---用户单击Reload重新计算过程。解决方案:
1)一种跨请求存储数据的方式
对于不专属于任意客户的数据,可以将其存储在servlet的字段变量中(实例变 量),对于用户专用的数据,可以将其存储在HttpSession对象中(参见后续章节),对于其他servlet和jsp页面需要用到的数据,可以存储 到ServletContex中(后续章节)。
2)一种在请求发送给用户后,继续保持运算的方式
启动一个线程,系统为了应答请求而启动的线程,在响应完成后线程自动结束,但其他的线程会保持运行。要将线程的优先级设为一个较低的值,才不至于影响整个服务器的运行
3)一种在更新的结果就绪后,使浏览器得到它的方式
遗憾的是,服务器主动的将新结果发送给浏览器并不容易,因为浏览器并不维护一个与服务器之间保持打开的连接 ,只能让浏览器去主动请求,这样就用Refresh报头来指定重新请求的时间间隔
7.5 使用servlet生成jpeg图像
跟excel差不多,就是具体过程麻烦点,不写在这了
这两章主要都在讲服务器对浏览器请求的响应,要理解响应的格式,这两章分开讲解了响应内容中的状态码和报头
,理解servlet是怎样利用这些状态码和响应报头来完成一些应用的
发表评论
-
hibernate Restrictions用法 MatchMode.ANYWHERE
2012-07-14 15:50 3945方法 说明 Res ... -
URLClassLoader
2012-05-27 19:45 995This example shows how a serv ... -
MyClassLoader 自定义类加载器
2012-05-27 19:38 1505package demo; import java. ... -
Deal with big-endian and little-endian order
2011-12-25 19:17 1115Java virtual machine always use ... -
修改eclipse的背景色
2011-11-12 19:23 1110eclipse 操作界面默认颜色为白色。对于我们长期 ... -
多线程管道流输入输出模式
2011-11-07 07:23 1088import java.io.* ; class Send ... -
Java计数单字节双字节字符个数的例子
2011-10-26 14:29 1291/* 计数单双字符的个数并存储在Map对象中 ... -
常用内存数据库3
2011-10-24 00:24 14994.1.2 哪些场合适合使用其他的关系型数据库管 ... -
java字节码规则
2011-09-05 13:56 1251栈和局部变量操作 将常量压入栈的指令 aconst_nul ... -
Tomcat中限制ip访问
2011-08-23 21:40 1251Tomcat中限制ip访问是非常简单的,只需要编辑server ... -
一个Java程序员应该掌握的10项技能
2011-08-22 10:27 6181、语法:必须比较熟 ... -
2011 年 8 月 Java 开发人员新闻快讯
2011-08-18 18:59 832Java SE 7 发布了! 经过世界各地 Ja ... -
BlockingQueue
2011-08-13 09:59 709import java.util.concurrent.Arr ... -
eclipse中java项目转换为web项目
2011-07-27 18:29 895经常在eclipse中导入web项目时,出现转不了项目类型 ... -
Oracle官方Weblogic插件安装
2011-07-20 22:00 2873Installing Oracle Enterprise Pa ... -
Java集合HashSet-ArrayList-HashMap的线程同步控制方法和区别
2011-06-21 17:44 2304C ollections类中提供了多 ... -
关于java的集合类,以及HashMap中Set的用法
2011-06-21 17:35 1797import java.util.*; public c ... -
Java的动态代理实例
2011-06-16 03:44 1053首先写一个接口: package net.test.dyna ... -
Java如何调用可执行文件和批处理命令
2011-06-07 00:58 2320Java是种跨平台的语言,我们经常碰到需要通过Java调用wi ... -
jsp实现图片验证码的方法
2011-06-07 00:57 1389调用方法 <img src=&quo ...
相关推荐
1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...
1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...
1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...
9. **Status Code**:在响应报头中,3位数字表示请求处理的结果,如200表示成功,404表示未找到资源,500表示服务器内部错误。 在C++中封装HTTP报头,你需要创建一个类来代表HTTP请求或响应,包含上述字段,并提供...
- 常见的响应报头: - `Content-Type`: 响应的数据类型。 - `Content-Length`: 响应体的长度。 - `Server`: 服务器软件的名称和版本。 - `Date`: 响应生成的时间。 - `Location`: 重定向到的新位置。 #### 六...
以Java中的Servlet为例,可以使用`HttpServletResponse`类来设置各种响应报头: 1. **`setHeader`方法**:用于设置任意名称的响应报头。 ```java response.setHeader("X-Custom-Header", "value"); ``` 2. **`...
- 构造HTTP响应报头:服务器根据客户端请求构造响应报头,完成类似于真实Web服务器的交互。 实验过程中,学生不仅能掌握基础的网络协议知识,还能通过实践理解HTTP协议在Web通信中的作用,以及Java Socket编程技术...
* 响应报头:响应报文第二行开始到第一个空行为止的内容,包含了关于 HTTP 响应的重要字段,例如 Content-Type、Set-Cookie 等。 * 响应正文:响应报文从第一个空行开始到最后的所有内容,用于传输资源的内容,例如 ...
2. 消息报头:包含服务器返回的附加信息,如Server(服务器软件信息)、Location(重定向URL)、Date(响应生成时间)等。 3. 响应正文:服务器返回的具体内容,如HTML文档、图片、视频等。 了解HTTP协议的工作...
消息报头用于传递服务器响应的附加信息,响应正文则包含了服务器返回的内容,如HTML页面、图片等。 【HTTP请求方法】 HTTP/1.1定义了8种请求方法,最常见的两种是GET和POST: - GET:用于获取资源,请求参数包含在...
接着,服务器接收到请求后,解析请求信息,生成HTTP响应并发送回浏览器。响应的基本结构如下: 1. 状态行:包含HTTP协议版本、状态码(如200表示成功,404表示未找到)和状态消息。 2. 响应头:包含服务器信息、...
第6章 服务器响应的生成:http状态代码 6.1 状态代码的指定 6.2 http1.1状态代码 6.3 将用户重定向到浏览器相关页面的servlet 6.4 各种搜索引擎的一个前端 第7章 服务器响应的生成:htip响应报头 7.1 在...
5. **HTTP协议**:HTTP定义了客户端(浏览器)与Web服务器之间的通信规则,包括请求方法(GET、POST等)、状态码(200、404等)、报头和实体主体等元素。 6. **HTTPS**:HTTPS是在HTTP基础上加入了SSL/TLS层,用于...
- **消息报头**:提供了关于响应的详细信息,如Server(服务器使用的软件)、Date(响应的生成时间)、Content-Type(响应体的MIME类型)、Content-Length(响应体的长度)等。 - **实体数据**:即响应中的实际...
常见的响应报头包括日期、服务器类型、MIME类型、内容长度等。响应的主体部分通常包含HTML内容或二进制文件。 在Java中,实现HTTP服务器的关键在于创建`ServerSocket`对象,它会在指定的端口(如HTTP默认的80端口)...
例如,Allow头表示服务器支持的请求方法,Content-Type头指定响应实体的数据类型,Date头给出响应生成的时间,Server头则表明服务器软件信息。 理解并熟练掌握HTTP协议的基本概念、工作原理和请求响应机制,对于...
一旦连接建立,服务器端的Socket对象就可以读取请求的字节流,解析出请求行和报头,然后根据请求的内容生成相应的HTTP响应。 响应消息也有类似的结构:状态行(包含HTTP版本、状态码和简短信息)、报头和实体主体。...
3. **响应请求**:服务器接收到请求后,根据请求内容生成响应并返回给客户端。 4. **断开连接**:事务完成后,客户端和服务器关闭TCP连接。 #### 1.4 HTTP消息 - **请求消息(Request)**:由客户端发送到服务器,...