1.在Servlet中获取request、session、application内置对象的方式
request的一些其他方法
getContextPath(): 获取到当前项目的上下文路径
getMethod():获取到请求的方式
getHeader(String str):获取到请求的头信息的内容
//获取request,在调用doXX方法和service方法
时,会存在两个对应对象,其中一个就是request
doXXX(HttpServletRequest
request,HttpServletResponse response)
service(HttpServletRequest
request,HttpServletResponse repsonse)
//获取Session
HttpSession session =
request.getSession() ;
//获取Application
ServletContext application =
request.getServletContext() ;
Cookie类setMaxAge过期时间
setMaxAge()设置值大于0,将cookie存储于本地磁盘,过期后删除
setMaxAge()设置值小于0,cookie不会保存于本地,浏览器会话结束后,将会删除,经过在Mac上的chrome测试,需要结束进程后cookie才会从内存中删除
setMaxAge()设置值等于0,立即删除cookie,还必须执行response.addCookie()方法才能删除,不执行只是将cookie对象从内存中删除
Java代码实现文件上传
在文件上传过程中,文件是以流的形式从浏览器提交到服务端的。一般情况下采用Apache公司的开源文件上传组件common-fileupioad来进行文件的上传。由于common-fileupioad依赖于common-io,所以还要下载common-io这个包。
准备工作:
下载jar包,建立项目,把包导入lib目录,将lib添加到项目输出目录,配置好Tomcat。
我们只编写简单的前端和全部的后端代码,美化前端的任务交给前端管理员
文件上传四个要求:
为保证服务器安全,上传文件应该放在外界无直接访问的目录下,比如放于WEB-INF目录下。
为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
要限制上传文件的最大值。
可以限制上传文件的类型,在收到上传文件名时,判断后缀名是否合法。
中点需要了解的两个类:
Filetem类:
//isFormField方法用于判断FileItem类对象封装的数据是一个普通文本表单
//还是一个文件表单,如果是普通表单字段则返回true,否则返回false
boolean isFormField();
//getFieldName方法用于返回表单标签name属性的值。
String getFieldName();
//getString方法用于将FileItem对象中保存的数据流内容以一个字符串返回
String getString();
//getName方法用于获得文件上传字段中的文件名。
String getName();
//以流的形式返回上传文件的数据内容。
InputStream getInputStream()
//delete方法用来清空FileItem类对象中存放的主体内容
//如果主体内容被保存在临时文件中,delete方法将删除该临时文件。
void delete();
ServletFileUpload 类:
代码实现
method必须是post,post对上传的数据没有限制,get无法获取大型文件
form表单默认提交纯文本,要上传文件就要更改enctype属性为文件流
-
编写上传文件的upload.jsp文件:
-
<%@ page contentType="text/html