Discuz! Board
标题:
研究几个html是如何合成一个html返回给客户的
[打印本页]
作者:
zangcf
时间:
2016-3-10 11:02
标题:
研究几个html是如何合成一个html返回给客户的
研究几个html是如何合成一个html返回给客户的
作者:
zangcf
时间:
2016-3-10 16:16
以seller/index.htm为例子研究,这个页面对应的处理action是:
src/com/shopping/manage/seller/action/BaseSellerAction.java: @RequestMapping({"/seller/index.htm"})
这个对应的ModelAndView是:
ModelAndView mv = new JModelAndView(
"user/default/usercenter/seller_index.html", this.configService
.getSysConfig(),
this.userConfigService.getUserConfig(), 0, request, response);
作者:
zangcf
时间:
2016-3-10 16:22
从代码可以看出:
$!httpInclude.include("/top.htm")
<div class="main"> $!httpInclude.include("/seller/nav_head.htm")
<div class="user_center">
<table width="1000" border="0" cellspacing="0" cellpadding="0" class="user_table">
<tr> $!httpInclude.include("/seller/nav.htm")
<td id="centerbg" valign="top">
#if($!user.store)
作者:
zangcf
时间:
2016-3-10 16:29
为velocity,freemarker提供jsp:include功能:
一.介绍
使用JSP的都知道jsp:include指令,可以使用如下功能,动态的加载其它请求。
Jsp代码 收藏代码
<jsp:include page="/header.jsp" />
<jsp:include page="/servlet/header" />
<jsp:include page="/header.do" />
而如果你不是使用JSP,而是使用模板引擎如Freemarker,Velocity。有该功能也将十分方便。
Freemarker提供了<@include_page path="/servlet/header"/>指令,使freemarker可以完成jsp:include功能,但velocity则没有提供该功能。
二.扩展
现扩展实现一个比Freemarker更加通用的HttpInclude对象,可以适用于Freemarker及Velocity。
Freemarker及Velocity示例使用:
${httpInclude.include("/servlet/head?p1=v1&p2=v2")};
${httpInclude.include("/head.jsp")};
${httpInclude.include("http://www.google.com")};
与jsp:include相比:
与jsp:include完成相同的功能
可以include远程的http内容.并且会将session_id等cookie传递至该请求,如:
http://www.google.com
三.使用
以springmvc为例,笔者编写了一个拦截器.用于拦截所有的controller方法.( struts2可以编写类似拦截器)
Java代码 收藏代码
import freemarker.ext.servlet.IncludePage;
import cn.org.rapid_framework.web.httpinclude.HttpInclude;
public class ShareRenderArgsVariableInterceptor extends HandlerInterceptorAdapter {
static Log log = LogFactory.getLog(ShareRenderArgsVariableInterceptor.class);
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
String viewName = modelAndView.getViewName();
if(viewName != null && !viewName.startsWith("redirect:")) {
//笔者扩展的httpInclude
modelAndView.addObject("httpInclude", new HttpInclude(request, response));
//freemarker 原生的IncludePage指令
modelAndView.addObject("include_page", new IncludePage(request, response));
}
}
}
然后在freemarker或者是velocity中,就可使用: ${httpInclude.include("/head.jsp")};
欢迎光临 Discuz! Board (http://47.89.242.157:9000/bbs/discuz/)
Powered by Discuz! X3.2