编程语言 php java

FreeMarker+SpringMVC获取页面使用的内置对象request、session、param

java HTML我帮您 1年前  0次浏览
查看springweb下org.springframework.web.servlet.view.freemarker.FreeMarkerView中buildTemplateModel内置页面常用的内置对象
protected SimpleHash buildTemplateModel(Map model,
HttpServletRequest request, HttpServletResponse response) {
AllHttpScopesHashModel fmModel = new AllHttpScopesHashModel(
getObjectWrapper(), getServletContext(), request);
fmModel.put("JspTaglibs", taglibFactory);
fmModel.put("Application", servletContextHashModel);
fmModel.put("Session", buildSessionModel(request, response));
fmModel.put("Request", new HttpRequestHashModel(request, response,
getObjectWrapper()));
fmModel.put("RequestParameters", new HttpRequestParametersHashModel(
request));
fmModel.putAll(model);
return fmModel;
}


所以在模板使用过程可以使用JSP页面使用内置对象

使用Request里的Attribute值最简单的方法就是直接${AttributeName}或者安全一点:${AttributeName!"default Value"}

1.取Application范围的对象
<#if Application.myApplicationAttribute?exists>  

${Application.myApplicationAttribute}




或者 : ${Application.myApplicationAttribute!"default value"}

2.取session范围的对象
<#if Session.mySessionAttribute?exists>  
${Session.mySessionAttribute}



${Session.mySessionAttribute!"default value"}

3.取request范围的对象
<#if Request.myRequestAttribute?exists>
${Request.myRequestAttribute}



或者 :${Request.myRequestAttribute!"default value"}

4.取request parameter范围的对象
<#if Parameters.myParameter?exists> 
${Parameters.myParameter}

或者 : ${Parameters.myParameter!"default value"}

5.取context parameter范围的对象
${stack.findValue('#myContextParam')}
request 象直接对应 HttpServletResponse
例如 获取 当前网页地址: ${request.requestURL}
客户端IP地址: ${request.getRemoteAddr()} 或者 ${request.remoteAddr}
提交方式: ${request.method}
等等
Request: 用于获取Request对象中的attribute对象。
例如:${Request<"myRequestAttribute">} 这样是直接在页面输出属性值。相当于request.getAtrribute("myRequestAttribute");
如果要对这个值进行判断就必须使用如下格式:<#if Request<"myRequestAttribute">="edit">
或者 : ${Request<"myRequestAttribute">!"default value"}

Session:用于获取Session 对象中的attribute对象。
用法参照Request的用法。

Application:用于获取 Application(ServletContext)对象中的attribute对象。
用法参照Request的用法。
RequestParameters:用于获取Request对象的parameter参数(浏览器端发送的请求数据)

例如:${RequestParameters<"myRequestAttribute">}等同于request.getParameter("myRequestAttribute");
Parameters:属性获取,依次从 RequestParameters、Request、Session、Application对象中获取对应属性/参数,一旦获取,则不再向下查找。
例如:
${Parameters<"myRequestAttribute">}
${Request<"a">}
${RequestParameters<"a">}
${Session <"a">}
${Application <"a">}
${JspTaglibs <"a">}
注意RequestParameters等内部对象时常不能获得所以要:
${RequestParameters?default({})<"_errors">?default("params")}
${Request<"request">?default("request")}
${Session<"session">?default("session")}
${Application<"ctx">?default("ctx")}
${RequestParameters?default({})?keys?size}
${Request?keys?first}
Freemarker可以直接取pageContext,requestAttribute,session,application中的数据,就是不能取requestParameter;

发表评论