获取项目的根路径:this。getservletcontext().getRealPath() 下载:不正规做法:test/html!!!! 正规做法:1,在响应头设置:res.addHeader("Context-disposition",attachment;filename=xxx.jpg"); 上传:request.getImageStream();web.xml中设置<enctype>multipart/form-dota</> 浏览器状态的保存方式: 1,隐藏表单的方式,但会破坏网页的结构布局,所以不采用 2,cookie,内容只能存4kb大小,存放在客户端中,是一个类 3,session会话,把数据存放在服务器,大小无限制 4,url重写(基于cookie和session)response.encodeUrl();实现url的重写 cookie:是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会将cookie中的数据一起发送到服务器。 response.addcookie方法可以在其相应头中增加一个相应的字段,同样可以使用request.getcookie方法,可以获取客户端提交的cookie; cookie类的方法:setValue与getValue,设置和获取cookie里的值 setMaxAge可以设置cookie的保存时间 getName可以获取cookie的键 cookie的运用:获取用户上次登录的时间,可以采取cookie 一个cookie只能标示一种信息,至少含有一个标示该信息的名称和值 session:是服务端技术,服务器在运行时可以为每一个用户的浏览器创建一个独享的session对象,session将产生一个sessionid传回给客户端,下次访问就用id去找session对象,取出数据. Session中可以存放多个属性(包括对象) 如果session.setAttribute(name,value);中name相同,则会替换掉。 session的方法: 1,如何创建session HttpSession session = request.getSession() HttpSession session = request.getSession(true) HttpSession session = request.getSession(false) 如何使用session set/get/remove(Attribute) 5销毁session 手动: session.invalidate() .服务器关闭 自动:超时 setMaxInactiveInterval(int seconds); Session 和Cookie的区别 : 1.存储位置不同: Cookie存在在客户端(临时文件夹) Session存在服务器内存中,一个session域对象为一个用户浏览器服务 2.安全性: Cookie以明文方式存放在客户端,安全较弱,可以通过MD5加密算法在存放 Session存放在服务器端内存中,所以安全性较好 3.网络传输量: Cookie会传递信息给服务器 Session的属性值不会给客户端 4.生命周期: Cookie的声明周期是累计时间 Session的生命周期是访问session的间隔时间,在一些情况下session也会失效�关闭tomcat,reload web应用,时间到,调用invalidate() 作用域对象:1,request 2,servletcontext 3,session 用来传递数据 作用范围: 一次请求和响应中 全局 一次会话 线程安全: 安全 不安全 视情况而定(比如打开新标签,就线程不安全) 监听器:供8中,Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型: 监听三个域对象创建和销毁的事件监听器 监听域对象中属性的增加和删除的事件监听器 监听绑定到HttpSession域中的某个对象的状态的时间监听器。 用法:实现接口,重写方法。 如三个域对象的创建与销毁方法签名: ServletRequestListener有以下两个方法 void requestDestroyed(ServletRequestEvent sre) void requestInitialized(ServletRequestEvent sre) HttpSessionListener有以下两个方法 void sessionCreated(HttpSessionEvent se) void sessionDestroyed(HttpSessionEvent se) ServletContextListener void contextDestroyed(ServletContextEvent sce) void contextInitialized(ServletContextEvent sce) 三个类型对象域中增、删、改的监听器(3个) ServletContextAttributeListener, HttpSessionAttributeListener, ServletRequestAttributeListener 感知型监听器(2个):监听自己何时被帮到session上,何时解绑了;何时被钝化了,何时被活化了(序列化到某个存储设置中)。 注意:这种监听器不需要注册。某个javabean实现这些接口后就可以监听何时被绑定、解绑或被激活或钝化。 HttpSessionBindingListener:实现该接口的类,能检测自己何时被Httpsession绑定,和解绑 HttpSessionActivationListener:实现该接口的类(要求些javabean必须是实现了Serializable接口的),能监测自己何时随着HttpSession一起激活和钝化。