head first 学习笔记 JSP&Servlet--3

本文介绍了Servlet中幂等请求的概念,如GET、HEAD和PUT,并对比了非幂等请求POST的区别。同时,详细展示了如何使用response对象返回特定类型的文件,例如jar包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7.servlet中的幂等请求
get,head,put是被认为幂等请求,也就是多个完全相同的请求过来时只当做一个请求来处理,非幂等的请求则是当做多个请求来处理。
即get从服务器获得数据,不会更新数据,post会更新数据库信息。这个就是为什么在用get方式请求服务器的时候会带上一个无效的时间参数,来让服务器来将最新的数据返回。


8.getServerPort(),getLocalPort(),getRemotePort()区别

8.1 getRemotePort() 获得远程客户端端口
8.2 getServerPort() 获得请求原来发送的端口
8.3 getLocalPort() 获得请求最后发送的端口
因为servlet会处理多个请求,每个请求会为每个线程找一个不同的端口


1. response 对象

一般用于向客户端返回请求。设置需要返回内容类型
一个典型的读取jar包的输出返回

package com.xzm.servlet;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ContentTypeServlet extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 1L;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
//设置定返回的对象类型,告诉浏览器你要返回的数据类型
resp.setContentType("application/jar");

//根据系统级的参数获取读取文件资源的方式
ServletContext ctxContext = getServletContext();
// getResourceAsStream()方法需要以/开头,这个表示web应用的根路径:webApp/XXweb/bookCode.jar 与WEB-INF同级
InputStream is = ctxContext.getResourceAsStream("/bookCode.jar");

int read = 0;
byte[] buffer = new byte[1024];

OutputStream os = resp.getOutputStream();
while((read = is.read(buffer))!=-1)
{
os.write(buffer);
}

is.close();
os.close();
}

}

常见的MIME类型:

text/html
application/pdf
video/quicktime
application/java
application/jpeg
application/jar
application/octet-stream
application/x-zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值