<web-app
id="WebApp_ID"
version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="false"> <!-- 是否扫描注解 -->
1\
发布到服务器上面的文件夹是Webcontent 里面有个class 包会把java resource里面所有的资源存放到服务器项目里面转成字节码文件,如果要访问这些文件,那么一定要使用被转成后的路径,而不是当前该文件所在的目录路径,应该具体看发布工程里面的路径。
2\
servletcontext 是全局的,无论在那个函数从获取,都是不变的。
302 重定向
404 找不到资源
response .setStatus(200) 可以设置状态码
new Date().getTime() 获取毫秒值
响应头添加额外的信息:
response.addHeader(key,'');
response.addDate(key,'');
修改响应头:
response.setHeader(key,"");
设置重定向
response.setHeader("location"," /project name/servlet class") 重新定向的地址
response.setRedirect(" /project name/servlet class") 封装后的直接重新向
response.setHeader("refresh","3;url=" " "); 定时刷新
响应体:
response.getWriter().write("*****");
response.getWriter().write("<h1>xxxx</h1>")
写到response缓冲区中的内容是Iso8859编码,不支持中文
可以设置中文编码
设置自己输入缓冲区的编码类型是UTF-8
response.setCharacterEncoding("UTF-8")
设置浏览器接受的编码也是utf-8
response.setHeader("Content-Type","text/html;charset=utf-8")
简写:response.setContentType("text/html;charset=utf-8"); 一句即告诉缓冲区和响应器对应的编码。
定义编码必须在响应体之前定义。
3\
在web servlet中加载文件要使用绝对路径。
获取confi配置信息后可以通过
this.getServletContext().getRealPath("a.txt"),拼接webContent目录下的文件a.txt的绝对路劲
init函数中必须调用父类的init文件,才能初始化config 参数,super.init(config)
4\
加载文件
FileinputStream in = new FileinputStream(path)
byte []buffer=new byte[6];
len=in.read(buffer); //加载6个进buffer里面,len为当前新读取的数量,当没的读取的时候就位-1
通过new String(buffer,start,len) 将start - len 的buffer里面的转成字符串。
Arrays.toString(buffer) 可以将数组直接输出。
SeveletOutputStream out = response.getOutputStream();
getWrite.write 跟outputstream 不能同时使用
5\文件下载
根据文件名获取mime类型,加载设置文件类型
String name = request.getParameter("filename");
System.out.println(name);
// 设置mine类型解决浏览器文件不识别的问题
String mineType = this.getServletContext().getMimeType(name);
response.setContentType(mineType);
// 设置文件不要解析,直接以附件的形式下载
response.setHeader("Content-Disposition", "attachment;filename=" + name);