Servlet学习笔记
- doGet和doPost方法:
get方法就象你在网页的地址栏里看到的一堆乱码,也就是url后面有参数
post就是用表单传过去的,就好象把数据都打成包发过去一样
如果不知道用的什么方法,你可以在servlet里把功能都写到一起
然后在一个方法里调用另一个方法就可以了
比如
public void doPost(HttpServletRequest request,HttpServletResponse)
throws ServletException,IOException
{
doGet(request,response);
}
- OutputStream流输出中文:3步
1. OutputStream out = response.getOutputStream(); //设置响应头控制浏览器以UTF-8显示数据
2. response.setHeader(.......);
3.out.write(data.getBytes("UTF-8"));
- PrintWriter流输出中文:4步
1.response.setCharacterEncoding("UTF-8"); //设置字符以UTF-8编码输出到客户端浏览器
2.response.setHeader("content-type","text/html;charset=UTF-8"); //设置响应头控制浏览器以UTF-8显示数据
3.PrintWriter out = response.getWriter();
out.write(data);
(当需要向浏览器输出字符数据时,使用PrintWriter比较方便,省去了将字符转换成字节数组那一步。)
- Servlet下载文件功能
//1.获取要下载的文件的绝对路径 String realPath = this.getServletContext().getRealPath("/download/1.JPG"); //2.获取要下载的文件名 String fileName = realPath.substring(realPath.lastIndexOf("\\")+1); //3.设置content-disposition响应头控制浏览器以下载的形式打开文件 response.setHeader("content-disposition", "attachment;filename="+fileName); //4.获取要下载的文件输入流 InputStream in = new FileInputStream(realPath); int len = 0; //5.创建数据缓冲区 byte[] buffer = new byte[1024]; //6.通过response对象获取OutputStream流 OutputStream out = response.getOutputStream(); //7.将FileInputStream流写入到buffer缓冲区 while ((len = in.read(buffer)) > 0) { //8.使用OutputStream将缓冲区的数据输出到客户端浏览器 out.write(buffer,0,len); } in.close();
编写文件下载功能时用OutputStream流,因为OutputStream流为字节流,可以处理任意类型的数据,而PrintWriter流是字符流,只能处理字符数据。
Servlet设置响应头控制浏览器不缓存图片数据
response.setDateHeader("expries",-1);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Prama","no-cache");
${pageContext.request.contextPath}的效果等同于request.getContextPath(),两者获取到的都是"/项目名称"
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。
- 回话保存数据cookie和sess

浙公网安备 33010602011771号