个人随笔
目录
静态资源文件发布设想(jsp,html)
2023-03-02 12:31:01

需求背景

我们有时候可能需要快速发布一些专题活动或者页面,并且这些专题页面排版布局每一次都完全不一样或者说变化很大,那么就需要提供个上传html压缩包的功能,上传完后就自动解压到项目目录下,然后就可以直接访问了,当然权限安全自己考虑,那怎么做呢?下面是基于Struts2的jsp架构基础上的设想。

面对的困难

1、html静态资源页面需要获取一些业务参数,以及调用一些js方法,但是这些业务参数需要授权获取
2、html静态资源页面不能跟原有项目放在一起,需要独立部署为静态资源文件
3、html静态资源页面需要本地可以打开调试,然后打包就可以直接上传,不需要对路径进行任何修改

如果你的用途只是纯静态,没有任何业务属性,比如获取用户身份什么的,那么可以不考虑1,如果你不介意静态资源文件跟项目放一起导致项目慢慢变得臃肿,可以不考虑2,同时也不用考虑3了,因为都是同一个项目下,用相对路径即可。

实现思路

1、jsp动态包含

如果我们html静态资源文件和项目是可以放在同一个目录下面的,那么就可以使用JSP动态包含实现,具体思路如下
1-1、用户请求一个Action,执行相关业务逻辑,比如微信登录,获取用户信息等后跳转到jsp页面
1-2、jsp页面把相关业务参数封装成js变量,或者方法
1-3、用户jsp:include 引入html文件
1-4、这样html文件里面也可以使用1-3封装的业务属性和方法,伪代码如下

  1. @ParentPackage(value = "default")
  2. @Namespace(value = "/act")
  3. @Action(value = "myAction", results = {
  4. @Result(name = "index", location = "index.jsp"))
  5. })
  6. public class MyAction{
  7. public String index(){
  8. return "index";
  9. }
  10. }

上面是请求,下面是jsp页面

  1. ...
  2. <script>
  3. var username = "从后台传过来的相关业务属性";
  4. function addVisit(){
  5. //封装好的相关业务方法
  6. ...
  7. }
  8. </script>
  9. <!--jsp include-->
  10. <jsp:include page="/act/xxxx/index.html"/>
  11. ...

这样就可以实现想要的功能啦,统一入口

  1. https://域名/act/myAction.do?param=xxxx

只需要动态替换index.html的内容即可,做到了静态资源可配置。


但是如果我们要求把静态资源部署到独立的静态资源服务器呢?也就是这个index.html跟项目不在一起,那怎么办?jsp:include并不支持引入远程page。怎么办呢?那就要用下面的方案了?

2、ajax读取流

其实就是相当于把index.html用ajax请求回来放到某一个div中,原理很简单,如下

  1. <body>
  2. <div id="includeHtml"></div>
  3. </body>
  4. <script>
  5. var baseUrl = "文件所在路径";
  6. var username = "从后台传过来的相关业务属性";
  7. function addVisit(){
  8. //封装好的相关业务方法
  9. ...
  10. }
  11. $(function(){
  12. $.ajax({
  13. type:"GET",
  14. url:baseUrl+"/index.html",
  15. data: "",
  16. success:function(msg){
  17. //因为msg是一个html文件,里面也有很多引用的相对路径的图片样式资源
  18. //所以这里需要对./进行替换
  19. var html = msg.replace(/\.\//g,baseUrl);
  20. $("#includeHtml").html(html);
  21. },
  22. error:function(XMLHttpRequest, textStatus, thrownError){}
  23. })
  24. })
  25. </script>

这样就好了,主要难点就是对./这里进行替换,不替换的话,html里面的资源路径全都错乱

 114

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2