jsp、struts、spring、mybatis实现前端页面功能模块化拆分的方案

时间:2022-03-26 07:24:49

前端页面功能模块化拆分

当一个系统的功能很多时,不可能所有功能模块的页面都写在一个页面里面,这时就需要将不同功能模块的页面拆分出去,就像模板一样,需要哪块的功能就调用哪块的页面,然后加载相应数据并展示到相应的页面。

本应用的使用spring+struts+mybatis+jsp的方式,用两种方案来完成前端页面功能的拆分。

方案一:

在JSP页面中,利用EL表达式或者Java代码的方式,在后台完成页面数据的填充。然后在js中来完成页面的切换。

jsp代码:

业务详情模块页面:riskDetailItem.jsp页面代码使用EL表达式完成数据填充。

?
1
2
3
4
5
6
7
8
<div class="col-12 b-b">
  <table class="table table-form" style="font-size: 14px;">
    <tr>
      <td class="m_c" width="180px">客户名称 </td><td width="200px">${loanRiskBean.cusName}</td>
      <td class="m_l" width="180px">贷款金额 </td><td>${loanRiskBean.dueBillAmount} 元</td>
    </tr>
   </table>
</div>

 struts的xml文件代码:

?
1
2
3
<action name="riskDetailItem" class="riskRecheckAction" method="detailItem"
  <result name="success">/WEB-INF/jsp/riskrecheck/riskDetailItem.jsp</result>
</action>

 Action中的代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private LoanRiskBean loanRiskBean;
public String detailItem(){
    try{
      loanRiskBean = riskRecheckServiceImpl.detailItem(riskId);--调用service中的方法查询数据
    }catch(Exception e){
      e.printStackTrace();
      LoggerUtil.info("查看详情出现异常!------detailItem()");
      throw new RuntimeException("查看详情出现异常!");
    }
    return SUCCESS;
  }
 
public void setLoanRiskBean(LoanRiskBean loanRiskBean) {
    this.loanRiskBean = loanRiskBean;
  }

 js中的代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$(document).on('click','.related',function(){
      var loanid = $(this).attr("loanid");
      var urlSwitch = "/hbpost/riskRecheck/riskRelatedItemSwitch.action";
      var url = "/hbpost/riskRecheck/riskRelatedItem.action?time="+new Date()+"&loanid=" + loanid;
      //声明详情查询方法
      var relatedInfo = function(){
        $.ajax({
        url:url,
        type:'get',
        dataType:'json',
        success:function(data){
        }
      })
    }
      //请求加载相关组成员信息页面,并展示在dialog中
      $.ajax({
        url:urlSwitch,    
        type:"get",
        success:function(data){
          relatedInfo();//调用详情查询方法
          relatedDialog=$dialog({
            id:'relatedDialog',
            width:1000,
            title:"相关信息",
            cancelValue:'关闭',
            content:data,
            onshow:function(){
              $(".artui-dialog").css("max-height","450px");
              $(".artui-dialog").css("min-height","300px");
              $(".artui-popup").css("left","330px");
              $(".artui-popup").css("top","130px");
            }
          }).showModal();
        }
      })
   })

 第二种方案: 

在相应功能模块的JSP页面中,只是静态代码,需要在js中进行数据的填充,但是因为相应的jsp功能模块页面还没有加载(尽管可以在功能模块jsp页面引入相应的js,或者利用sea.js来加载js文件,但是本质是html或者jsp页面加载时才会加载相应的js文件),所以不能在js中领用jQuery来获取页面的dom元素。这时,就需要先加载jsp页面,例如可以在struts处进行一个页面的跳转,而不需要向后台发起请求。也就是说需要向后台发起两次请求,第一次请求是加载相应的功能模块页面,第二次请求是向后台请求数据,然后填充到第一次请求的页面中,并展示出来。

jsp代码:都是静态代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<div class="relatedInfo mainBusiness" style="overflow:auto;width:100%;*+width:1000px;">
  <div style="width:1300px;padding-left:20px;padding-right:20px;">
    <h5>经营名称不一致</h5>
        <table class="grid table table-striped addtable">
          <thead>
            <tr>
              <th style="width:35px;">客户名称</th>              
                  <th style="width:40px;">借据金额</th>             
            </tr>
          </thead>
          <tbody>
      </tbody>
       </table>
   </div>
</div>

struts中的xml文件:

?
1
2
3
4
5
6
<action name="riskRelatedItem" class="riskRecheckAction" method="relatedItem">
  </action>
<!-- 跳转到相关组页面 -->
<action name="riskRelatedItemSwitch" class="riskRecheckAction" method="relatedItemSwitch">
   <result name="success">/WEB-INF/jsp/riskrecheck/riskRelatedItem.jsp</result>
</action>

或者是: 

?
1
2
3
4
<!-- 跳转到相关组页面 -->不用再Action处写相应的方法,struts就负责了跳转。
<action name="riskRelatedItemSwitch" class="riskRecheckAction">
   <result>/WEB-INF/jsp/riskrecheck/riskRelatedItem.jsp</result>
</action>

  Action中的代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
 * 根据loanid查询相关组成员信息
 */
public void relatedItem(){
  List<LoanRiskBean> tmpRelatedList = null;
  try {
    tmpRelatedList = riskRecheckServiceImpl.relatedItem(loanid);
    this.outputStreamModelAndView(tmpRelatedList);
  } catch (Exception e) {
    e.printStackTrace();
    LoggerUtil.info("查看相关组成员信息出现异常!-----relatedItem()");
    throw new RuntimeException("查看相关组成员信息出现异常!");
  }
}
/**
 * 跳转到相关成员组页面
 * @return
 */
public String relatedItemSwitch(){
  return SUCCESS;
}

 js中的代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
   * 贷后专项检查录入信息展示--客户信息【相关】组展示
   */
    $(document).on('click','.related',function(){
      var loanid = $(this).attr("loanid");
      var urlSwitch = "/hbpost/riskRecheck/riskRelatedItemSwitch.action";
      var url = "/hbpost/riskRecheck/riskRelatedItem.action?time="+new Date()+"&loanid=" + loanid;
      //查询相关成员组信息,并循环判断append到页面
      var relatedInfo = function(){
        $.ajax({
        url:url,
        type:'get',
        dataType:'json',
        success:function(data){
          var tmpArray = data.object,,tipStr;
          for(var i = tmpArray.length-1; i >= 0; i--){
            tipStr = tmpArray[i].tipstr;                    
            if(tipStr == "住址相同"){
              $(".sameAddress tbody").append("<tr><td>"+tmpArray[i].cusName+"</td><td>"
                  +tmpArray[i].duebillNo+"</td></tr>");
              $(".sameAddress").css("display","block");
              continue;
            }
          }
        }
      })
    }
      //请求加载相关组成员信息页面,并展示在dialog中
      $.ajax({
        url:urlSwitch,    
        type:"get",
        success:function(data){
          relatedInfo();
          relatedDialog=$dialog({
            id:'relatedDialog',
            width:1000,
            title:"相关信息",
            cancelValue:'关闭',
            content:data,
            onshow:function(){
              $(".artui-dialog").css("max-height","450px");
              $(".artui-dialog").css("min-height","300px");
              $(".artui-popup").css("left","330px");
              $(".artui-popup").css("top","130px");
            }
          }).showModal();
        }
      })
   })

以上所述是小编给大家介绍的jsp、struts、spring、mybatis实现前端页面功能模块化拆分的方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:http://blog.csdn.net/h254532699/article/details/54312941