一、Session

  1、介绍

    HttpSession是一个纯粹的接口,session本身就属于HTTP协议的范畴。

    session的作用就是为了标识一次会话,或者说确认一个用户;并且在一次会话(一个用户多次请求)期间共享数据。

  2、创建对象和属性操作

    

  3、表示会话JSESSIONID

    每当一次请求到达服务器,如果访问了session,服务器会第一步查看是否从客户端回传一个名为JSESSION的Cookie,如果没有则认为这是一次新的会话,会创建一个新的session对象,并用唯一的JSESSIONID为此次会话做一个标志,如果有则认为这是之前标志过的一次会话,返回该对象,达到数据共享

  4、session作用域

    和request域一样可以通过setAttribute(name,value);方法向域对象中添加数据,通过getAttribute(name)从域对象中获取数据,通过removeAttribute(name)从域对象中移除数据。

    

  

  5、session的销毁

    因为session底层依赖Cookie实现,并且该Cookie的有效时间为关闭浏览器,所以关闭浏览器session失效

    当非正常关闭服务器时,session销毁;当正常关闭服务器时,session将被序列化到磁盘上,下次启动服务自动加载到内存。

      序列化:把对象和其状态存到本地磁盘

    1)默认时间到期

      Tomcat中session默认存活时间为30min,一旦有操作session会重新计时。

    2)自己设定到期时间

      ·可以在Tomcat中的web.xml文件中进行修改

      ·session.setMaxInactiveInterval(int);  以秒为单位

    3)立刻失效

      session.invalidate();

    session的销毁或失效意味着本次会话技术,数据共享结束。

二、ServletContext对象

  1、介绍

    每一个web应用有且仅有一个ServletContext对象,又称Application对象,该对象是与应用程序相关的,当WEB容器启动时,会为每一个WEB应用程序创建一个对应的ServletContext对象。

  2、ServletContext对象的作用

    1)作为域对象用来共享数据,此时数据在整个应用程序中共享

    2)该对象中保存了当前应用程序的相关信息,可以通过方法获取。

      

  3、ServletContext对象的四种获取方法

    

  4、作为域对象

    通过向ServletContext中存取数据,可以使得整个应用程序共享某些数据,不建议存放过多数据,因为ServletContext中的数据一旦存储进去没有手动移除会一直保存

    

三、文件上传下载

  1、文件上传

    前台页面:

      请求方式为POST,form表单的enctype必须设为“multipart/form-data”.

    后台:需要commos-io和commons-fileupload两个jar包(2.5版本的动态web项目)    

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 设定编码,可以获取中文文件名request.setCharacterEncoding("UTF-8");// 获取tomcat下的upload目录的路径String path = getServletContext().getRealPath("/upload");// 临时文件目录String tempPath = getServletContext().getRealPath("/temp");// 检查我们是否有文件上传请求// boolean isMultipart = ServletFileUpload.isMultipartContent( req);// 1、声明DiskFileItemFactory工厂类,用于在指定磁盘上设置一个临时目录DiskFileItemFactory disk = new DiskFileItemFactory(1024 * 10, new File(tempPath));// 2、声明ServletFileUpload,接收上面的临时文件。也可以默认值ServletFileUpload up = new ServletFileUpload(disk);// 3、解析requesttry {List<FileItem> list = up.parseRequest(request);if (list.size() > 0) {for (FileItem file : list)// 判断是否是普通的表单项if (file.isFormField()) {String fieldName = file.getFieldName();// 中文乱码,此时还需要指定获取数据的编码方式// String value = file.getString();String value = file.getString("UTF-8");System.out.println(fieldName + "=" + value);} else { // 说明是一个文件// 获取文件本身的名称String fileName = file.getName();System.out.println(file.getFieldName());// 处理文件名称fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);System.out.println("old Name : " + fileName);// 修改名称String extName = fileName.substring(fileName.lastIndexOf("."));String newName = UUID.randomUUID().toString().replace("-", "") + extName;// 保存新的名称,并写出到新文件中file.write(new File(path + "/" + newName));System.out.println("文件名是: " + fileName);System.out.println("文件大小是: " + file.getSize());file.delete();}}} catch (FileUploadException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}

Upload

  2、文件下载

    前台:

      设置download属性

    后台实现下载:

      

public class DownloadServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 设置请求 响应编码req.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=UTF-8");// 获取文件名String fileName = req.getParameter("fileName");// 判断文件名是否为空if (fileName == null || fileName.length() < 1) {PrintWriter out = resp.getWriter();out.write("<h1>请输入文件名</h1><a href='download.html'>返回</a>");out.close();return;}// 获取存放文件的目录String path = getServletContext().getRealPath("/upload/");// 获取文件的路径String filePath = path + fileName;// 通过路径获得file对象File file = new File(filePath);// 判断file对象是不是存在而且是文件if (file.exists() && file.isFile()) {// 下载// 1、设置响应类型resp.setContentType("application/x-msdownload");// 2、设置下载的弹出框信息resp.setHeader("Content-Disposition", "attachment;filename=" + fileName);// 3、获取字节输入流InputStream is=new FileInputStream(filePath);// 3、获取字节输出流ServletOutputStream out=resp.getOutputStream();byte[] bs=new byte[1024];int len=0;while ((len=is.read(bs))!=-1) {out.write(bs,0,len);}out.close();is.close();} else {PrintWriter out = resp.getWriter();out.write("<h1>文件不存在</h1><a href='download.html'>返回</a>");out.close();}}
}

转载于:https://www.cnblogs.com/dhome/p/9557536.html

Web常用对象(2)相关推荐

  1. QTP之web常用对象

    web对象是我做自动化以来最早学习,最早接触的.对现在而言也是最熟悉不过的了,但是为了以后更稳健的前进,对基础的东西搞扎实,相信以后的路会顺畅许多,下边简单汇总下web的常用几类对象: Browser ...

  2. QTP自传之web常用对象

    随着科技的进步,"下载-安装-运行"这经典的三步曲已离我们远去.web应用的高速发展,改变了我们的思维和生活习惯,同时也使web方面的自动化测试越来越重要.今天,介绍一下我对web ...

  3. 常用对象操作:(4)

    常用对象操作:(4) 1. Replication Controller与Replica Set 1.1 使用Replication Controller.Replica Set 管理Pod 前面我们 ...

  4. DOM_05之DOM、BOM常用对象

    1.HTML DOM常用对象之Table:①创建:createTHead():createTBody():createTFoot():②删除:deleteTHead():deleteTFoot():③ ...

  5. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

    加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...

  6. 【JavaScript】JS的变量、数组、计算器案例、函数、类、常用对象的方法

    目录 01-js-js的声明和引入 <!DOCTYPE html> <html><head><meta charset="UTF-8"&g ...

  7. C#-常用对象-思维导图

    C#-常用对象-思维导图 链接:http://pan.baidu.com/s/1jHNgS78 密码:3i74 如有错误,请告知我! 转载于:https://www.cnblogs.com/welov ...

  8. httpservletrequest 设置请求头_请求和常用对象

    ## 一.主要内容 ![](https://raw.githubusercontent.com/Cushier/picture-java/master/middle/20190712150414.pn ...

  9. hashset java api_java常用对象API中集合框架之HashSet

    之前在<java常用对象API之集合框架>这篇文章中已经将所有集合框架做了一个总体的大纲陈列,并阐述了所有Collection接口下的子接口和类的作用解释,那么接下来的文章智言还是想把里面 ...

  10. java里上下文对象,java-在百里香模板中的Web上下文对象上发出...

    我试图在thymeleaf 3.0.3和Spring Boot 1.5.1的模板中调用Web上下文对象上的方法,例如#request和#response. 我不断收到这样的错误: org.spring ...

最新文章

  1. 085_html5服务器发送事件
  2. MySQL 请选择合适的列!
  3. Magicodes.IE编写多框架版本支持和执行单元测试
  4. Vs2012调试本地windows服务
  5. 【转载】AssetBundle资源打包加载管理
  6. web前端期末大作业 基于HTML+CSS家乡主题毕业设计源码
  7. 总纲-信息、网络等级保护测评机构 、名单-等保测评机构目录-等保测评公司推荐目录
  8. 【2D 目标检测】CornerNet: Detecting Objects as Paired Keypoints
  9. Arduino火焰传感器(红外线接收器)的使用
  10. SpringMVC学习,总结
  11. 红米ac2100有ipv6吗_Redmi路由器AC2100开箱:六天线简单直接,功能丰富对玩家友好...
  12. 用命令提示符运行java_怎么用命令提示符运行java程序?
  13. 【AI视野·今日CV 计算机视觉论文速览 第172期】Tue, 10 Dec 2019
  14. python随机生成无序列表_python实现无序列表:链表
  15. windlx 双精度一维向量相乘 代码
  16. PointRCNN:三维目标检测
  17. Win11的两个实用技巧系列之dns异常和打印机重命名
  18. Mysql性能监控常用查询命令
  19. VB6导出Excel - 引用“Microsoft Excel 16.0 Object Library”时找不到该引用-解决方法
  20. 魅族 MEIZU MX4 连接电脑,Eclipse DDMS不能发现设备,识别不了手机的问题

热门文章

  1. visual studio2013 php
  2. 单片机TM4C123学习(一):GPIO模块的应用
  3. 看老友记_马云对话周星驰
  4. C# 基于MySQL的数据层基类(MySQLHelper)
  5. 《Java核心技术卷一》读书笔记(二)
  6. POST和GET请求区别
  7. Fiddler笔记(3)接口测试
  8. javaScript的arguments传参数
  9. 很多同学工作了,这里呢简单说说工作中吧可能会遇到的一些事情‘
  10. minSdkVersion、maxSdkVersion、targetSdkVersion、target释义