作用域

  • 把 控制层(controller)的处理好的数据传递给视图层,需要使用作用域:

    1. JSP
      (1). pageContext 由于主要使用在JSP页面内,因此不常用 作用域:用来在同一个页面的的不同标签之间传递数据

    2. Servlet
      (1). request
      作用域:从发送请求开始,到做出响应结束,即使发生视图之间的跳转,request仍然存在,但当响应返回至浏览器后,request失效

      (2). session
      作用域:同一个浏览器窗口,多个请求之间需要传递数据

      (3). application
      作用域:全局的参数,从服务器启动到服务器关闭一直有效,适合所有用户共享的频繁使用的数据

Jquery选择器

  • jquery事件选择函数的用法: 选择器.click(function(){ // 添加JS代码, });
  • 记住密码登一类需要持久化存储到broswer的操作:
    1. 使用Java的后台代码,request获取cookie

      1
      2
      3
      4
      5
      6
      7
      8
      cookie集合 = request.getCookies();
      遍历 cookie集合 for(Cookie c : cs){
      if(c.getName().eqauls("loginAct"))
      String loginAct = c.getValue();
      else if(c.getName().equals("loginPwd"))
      String loginPwd = c.getValue();

      }
    2. 在前端视图中获取Cookie,使用EL表达式: ps: 默认的EL表达式获取数据若不加作用域会依次变量四个作用域(非JSP下为三个作用域) 直到找到该表达式的实体,或全部查找结束找不到实体 ${cookie.loginAct.value} 获取cookie中key = loginAct下的value值 ps2: 对于前端页面使用paramContext获取request中参数,否则需要jsp进行request.get操作

重定向/请求转发

  • 请求转发和重定向的区别: 请求转发是在服务器端执行的: 用户一次的请求,服务器多次转发,最后再回当前服务器返回给用户,期间只有一个request,且最后的url不发生任何变化

    重定向是用户请求一个服务器,服务器做出临时相应,给予响应头,客户端根据临时响应头二次请求,最终的url发生变化,且中间为多个request,不是一个。

    什么时候转发/重定向: 本质:若一个servlet处理完了就使用请求转发,若一个servlet未处理完则使用重定向 使用标准:根据url是否需要变化判断使用请求转发还是重定向 使用重定向的方法:

    1
    2
    1. response.sendRedirct()
    2. return "redirect:"

过滤器/拦截器

  • 登录验证:

    1. 过滤器

      1. 创建过滤器类并实现过滤器的相应接口
      1
      2
      3
      4
      5
      implements Filter{
      -- init
      -- destroy
      -- doFilter
      }

      并在doFilter函数内部进行请求的放行或进入过滤器链处理

      1. 配置过滤器:web.xml

      缺点

      1. 流程繁琐,有可能需要实现冗余接口
      2. 只能在请求进入资源访问之前处理,无法实现多样化的拦截和过滤,功能单一

    2. 拦截器

      • 请求到达资源之前
      • 请求到达资源之后
      • 请求回到浏览器时

      使用方法

      1. 提供拦截器类
      1
      2
      3
      4
      5
      implements HandlerInterceptor{
      -- pre
      -- post
      -- after
      }
      1. 配置拦截器:springmvc.xml

      配置拦截器类时,需要设计好:

      1. 需要拦截的路径
      2. 需要放行的路径
      3. 拦截器类的路径

      ex:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      <mvc:interceptors>
      <mvc:interceptor>
      <mvc:mapping path="/settings/**"/>
      <!--
      对于拦截器配置的拦截目录,若/settings/*:仅为拦截settings下的一层子目录
      /settings/**: 拦截settings下的任意层目录
      -->
      <mvc:mapping path="/workbench/**"/>
      <!-- 放行路径 -->
      <mvc:exclude-mapping path="/settings/qx/user/toLogin.do"/>
      <mvc:exclude-mapping path="/settings/qx/user/login.do"/>
      <!-- 拦截器类的路径 -->
      <bean class="web.interceptor.LoginInterceptor"></bean>
      </mvc:interceptor>
      </mvc:interceptors>

      实际样例:

      ​ 对于网站,长时间打开但是并不操作,后台session过期后,需要重新验证身份,核心技术 session + interceptor

页面切割技术

  • 和 :

    • : 用来切割页面.

      1
      2
      3
      4
      5
      6
      <!-- cols 按行切割  -->
      <frameset cols="20%,60%,20%">

      <!-- rows 按行切割 -->
      <frameset rows="20%,60%,20%">

    • 用来显示页面

      1
      2
      3
      4
      5
      6
      7
      8
      9
      <frame src="url">
      <!-- example -->
      <frameset cols="20%,60%,20%">
      <frame src="url1" name="f1">
      <frame src="url2" name="f2">
      <frame src="url3" name="f3">
      </frameset>

      <a href="url" target="f3">test_a</a> <!-- 在f3块打开改标签 -->

    **ps:当前页面开发时不使用该方法,原因:

    和均为重量级标签,使用改标签底层牵涉的模块多,效率低**

  • '