Service、Dao命名规范

  • 获取单个对象的方法用get做前缀
  • 获取多个对象的方法用list做前缀
  • 获取统计值的方法用count做前缀
  • 插入的方法用save (推荐) 或insert做前缀
  • 删除的方法用remove (推荐) 或delete做前缀
  • 修改的方法用update做前缀

    form文件上传 -前端

  • form如果要支持文件上传,必须设置2个属性

    • method=”post”
    • enctype=”multipart/form-data”
      • 一旦form设置了这一项,Java后台就无法通过request.getParameter获取参数

        form文件上传 -后端

  • Java后台中经常使用commons-fileupload来接受客户端上传的文件

  • 解析request为List

image.png

  • 解决中文文件名乱码问题

    • upload.setHeaderEncoding(“UTF-8”);

      form文件上传 -实时预览

  • 刚上传完毕的图片,有可能会出现无法实时预览的问题 (要等一会才能预览成功)

image.png

  • 把tomcat的缓存资源功能关掉即可,在%TOMCAT_HOME%/conf/context.xml中增加Resources标签

image.png

登录流程

image.png

image.png

Filter

  • Filter:译为“过滤器”
    • 用来拦截、过滤客户端的请求和响应

image.png

  • 有注解、XML两种使用方式

    Filter -生命周期方法

  • init

    • 将Filter添加到Web容器中时调用
    • 一般用来加载资源
  • destroy

    • 将Filter从Web容器中移除时调用
    • 一般用来销毁资源

      Filter -dispatcherTypes属性

  • dispatcherTypes属性的常用值

    • REQUEST: 默认值,只拦截客户端直接发送的请求
    • FORWARD: 只拦截转发的请求

      Listener

  • Listener:译为“监听器”

    • 比较常用的是ServletContextListener, 用来监听ServletContext的创建和销毁
      • contextInitialized: ServletContext创建的时候调用
      • contextDestroyed:ServletContext销毁的时候调用
  • 有注解、xml两种方式

    ServletContext

  • 一个ServletContext对象就代表一个Web应用,可以用来与Web容器(Tomcat)通信

  • 获取ServletContext
    • request.getServletContext( )
    • servlet.getServletContext( )
  • 常用方法

    • getMIMEType
    • setAttribute\getAttribute\removeAttribute
    • getRealPath

      JSP的9大内置对象

      image.png
  • 4个域对象:pageContext、request、session、application

    • 共享范围从左至右、逐渐增大

      利用EL表达式从JSP域对象中获取数据

      image.png

      AJAX

  • Asynchronous JavaScript And XML

    • 它能够以异步的方式向服务器提交请求
    • 它能够在不更新整个页面的前提下维护数据
    • 它的出现促进了前后端的分离,大大提高了前端工程师的地位
  • 虽然AJAX的名称中包含了XML, 但是也可以使用JSON数据格式,也支持文件上传、文件下载等
  • AJAX的常见使用方式

  • HTTP是一种“无状态”(stateless)的协议

    • 每次客户端访问网页时,客户端都会打开与Web服务器的单独连接
    • 并且服务器不会自动保留之前客户端请求的任何记录
    • 所以服务器无法识别多个请求是否来自同一个客户端(比如浏览器)
  • 在很多的应用场景中,都有以下需求
    • 服务器能够识别出多个请求是否来自同一个客户端
    • 在来自同一个客户端的多个请求之前共享数据
  • 以上需求可以使用会话跟踪技术来完成,在Java中,实现会话跟踪的常用方案是

    • Cookie
    • Session

      Cookie

  • Cookie是直接存储在浏览器本地的一小串数据

    • 使用document.cookie访问Cookie
    • 修改Cookie时,只会修改其中提到的Cookie
    • name=value必须被编码(encodeURIComponent)
    • 一个Cookie最大为4kb,每个网站最多有20+个左右的Cookie(具体取决于浏览器)

      Cookie的有效期

  • 如果没有设置Cookie的过期时间,则当浏览器关闭时,Cookie就失效了

  • expires
    • 必须完全采用GMT时区的格式,可以使用date.toUTCString来获取口例如:expires=Tue,19Jan 2038 03:14:07 GMT
  • max-age

    • 过期时间距离当前时间的秒数
    • 例如:max-age=60

      Cookie的作用域

  • domain和path标识定义了Cookie的作用域,即Cookie应该发送给哪些URL

  • domain
    • 标识指定了哪些主机可以接受Cookie
    • 如果不指定,默认为当前文档的主机(不包含子域名);如果指定了domain,则一般包含子域名
    • 例如:如果设置domain=529it.com, 则Cookie也包含在子域名中(如bbs.520it.com)
  • path

  • Cookie通常是由Web服务器使用响应头Set-Cookie设置的

  • 关于max-age

    • 在JavaScript中:如果设置为0或者负数,会立即删除Cookie
    • 在Java中:如果设置为0,是立即删除Cookie;如果设置为负数,按默认情况处理

      getSession内部的原理

  • 检查客户端是否有发送一个叫做JSESSIONID的Cookie

    • 如果没有
      • 创建一个新的Session对象,并且这个Session对象会有一个id
      • 这个Session对象会保留在服务器的内存中
      • 在响应的时候,会添加一个Cookie(JESSIONID=Session对象的id)给客户端
    • 如果有
      • 返回id为JSESSIONID的Session对象

image.png

JSESSIONID

  • 默认情况下,当用户关闭浏览器,Cookie中存储的JSESSIONID就会被销毁
  • 可以通过以下代码延长JSESSIONID在客户端的寿命

image.png

Session的有效期

  • Session的有效期默认是30分钟
  • 可以在web.xml中配置失效时间(单位是分钟)

image.png

总结

  • Cookie
    • 数据存储在浏览器客户端
    • 数据有大小和数量的限制
    • 适合存储一些小型、不敏感的数据口默认情况下,关闭浏览器后就会销毁
  • Session
    • 数据存储在服务器端
    • 数据没有大小和数量的限制
    • 可以存储大型、敏感的数据(比如用户信息)
    • 默认情况下,未使用30分钟后就会销毁