听说你JavaWeb学的不好?(二十七)

46 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第27天,点击查看活动详情

手工开发一个webapp。测试HttpServletRequest接口中的相关方法。

  • 先测试了4个常用的方法,获取请求参数的四个方法。

    • Map<String,String[]> parameterMap = request.getParameterMap();
      Enumeration<String> names = request.getParameterNames();
      String[] values = request.getParameterValues("name");
      String value = request.getParameter("name");
      
  • request对象实际上又称为“请求域”对象。

    • 应用域对象是什么?

      • ServletContext (Servlet上下文对象。)

      • 什么情况下会考虑向ServletContext这个应用域当中绑定数据呢?

        • 第一:所有用户共享的数据。
        • 第二:这个共享的数据量很小。(不然它生命周期长,长时间占用大量内存影响服务器性能)
        • 第三:这个共享的数据很少的修改操作。(会有线程安全问题)
        • 在以上三个条件都满足的情况下,使用这个应用域对象,可以大大提高我们程序执行效率。
  • 实际上向应用域当中绑定数据,就相当于把数据放到了缓存(Cache)当中,然后用户访问的时候直接从缓存中取,减少IO的操作,大大提升系统的性能,所以缓存技术是提高系统性能的重要手段。如果碰到满足上面三个条件,那么可以先把数据读出来然后通过ServletContext对象的setAttribute放到ServletContext应用域。

  • 你见过哪些缓存技术呢?

    • 字符串常量池
    • 整数型常量池 [-128~127],但凡是在这个范围当中的Integer对象不再创建新对象,直接从这个整数型常量池中获取。大大提升系统性能。
    • 数据库连接池(提前创建好N个连接对象,将连接对象放到集合当中,使用连接对象的时候,直接从缓存中拿。省去了连接对象的创建过程。效率提升。)
    • 线程池(Tomcat服务器就是支持多线程的。所谓的线程池就是提前先创建好N个线程对象,将线程对象存储到集合中,然后用户请求过来之后,直接从线程池中获取线程对象,直接拿来用。提升系统性能)
    • 后期你还会学习更多的缓存技术,例如:redis、mongoDB.....