服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

jakarta struts应用的七个经验(3)


  4. 把jsp放到web-inf后以保护jsp源代码
  
  为了更好地保护你的jsp避免未经授权的访问和窥视, 一个好办法是将页面文件存放在web应用的web-inf目录下。
  
  通常jsp开发人员会把他们的页面文件存放在web应用相应的子目录下。一个典型的商店应用程序的目录结构如图2所示。跟catalog (商品目录)相关的jsp被保存在catalog子目录下。跟customer相关的jsp,跟订单相关的jsp等都按照这种方法存放。
  
   jakarta struts应用的七个经验(3)(图一)
  
  这种方法的问题是这些页面文件容易被偷看到源代码,或被直接调用。某些场合下这可能不是个大问题,可是在特定情形中却可能构成安全隐患。用户可以绕过struts的controller直接调用jsp同样也是个问题。
  为了减少风险,可以把这些页面文件移到web-inf 目录下。基于servlet的声明,web-inf不作为web应用的公共文档树的一部分。因此,web-inf 目录下的资源不是为客户直接服务的。我们仍然可以使用web-inf目录下的jsp页面来提供视图给客户,客户却不能直接请求访问jsp。
  
  采用前面的例子,图3显示将jsp页面移到web-inf 目录下后的目录结构
  
  
  jakarta struts应用的七个经验(3)(图二)
  
  
  
  
  
  如果把这些jsp页面文件移到web-inf 目录下,在调用页面的时候就必须把"web-inf"添加到url中。例如,在一个struts配置文件中为一个logoff action写一个action mapping。其中jsp的路径必须以"web-inf"开头。如下所示:请注意粗体部分.
  
  这个方法在任何情况下都不失为struts实践中的一个好方法。是唯一要注意的技巧是你必须把jsp和一个struts action联系起来。即使该action只是一个很基本的很简单jsp,也总是要调用一个action,再由它调用jsp。
  
  最后要说明的是,并不是所有的容器都能支持这个特性。weblogic早期的版本不能解释servlet声明,因此无法提供支持,据报道在新版本中已经改进了。总之使用之前先检查一下你的servlet容器。

扫描关注微信公众号