web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest
对象,代表响应的一个HtpServletResponse
如果要获取客户端请求过来的参数:找HttpServletRequset
如果要给客户端响应一些信息: 找HttpServletResponse
一. HttpServletResponse
1.简单分类
(1)负责向浏览器发送数据的方法
getOutPutStream() //写文件
getWrite() //写汉字
(2)负责向浏览器发送响应头的方法
setCharacterEncoding(String var1) setContentLength(int var1) setContentLengthLong(long var1) setContentType(String var1) setDateHeader(String var1,long var2) addDateHeader(String var1,long var2) setHeader(String var1,long var2) addHeader(String var1,long var2) setIntHeader(String var1,long var2) addIntHeader(String var1,long var2)
(3)响应的状态码
2.常见应用
(1)向浏览器输出消息
public class FileServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// ①要获取下载文件的路径
String realPath = “E:IDEAStudyServletTestservlet2srcmainresources1.jpg”;
// String realPath = this.getServletContext().getRealPath("/1.png");
// ②下载的文件名是什么?
String filename = realPath.substring(realPath.lastIndexOf("" + 1));
// realPath.substring(realPath.lastIndexOf("\"+1);
// ③设置想办法让浏览器能够支持下载我们需要的东西 Web头文件 中文文件名URLEncoder.encode()编码,否则有可能乱码;
resp.setHeader(“Content-Disposition”,“attachment;filename=”+ URLEncoder.encode(filename,“utf-8”));
// ④获取下载文件的输入流
FileInputStream in = new FileInputStream(realPath);
// ⑤创建缓冲区
int len = 0;
byte[] buffer= new byte[1024];
// ⑥获取OutPutStream对象
ServletOutputStream out = resp.getOutputStream();
// ⑦将FileOutPutStream流写入到buffer缓冲区
while((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
in.close();
out.close();
// ⑧使用OutPutStream将缓冲区中的数据输出到客户端
过程报错
错误:java: Compilation failed: internal java compiler error
原因:JDK版本问题
解决1.查看工程jdk
2.查看模块jdk
3.查看编译器版本
maven项目pom引入依赖
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8



