`

freemarker 使用jsp标签

阅读更多

freemarker 可以使用jsp标签,但只有你用了他的 freemarkerservlet,这个功能才能有效。如果你想生成静态文件那么这样就不行了

使用jsp标签的方法  使用心得
    <#global hm=JspTaglibs["/WEB-INF/struts-html.tld"]>
   <@hm.form action="logon.do" method="post">
          <input name="username" type="text" />
          <input name="password" type="password"/>
          <input type="submit" name="submit"></button>
      </@hm.form>
      <@include_page path= "/error.jsp"/>

可以这样来支持jsp标签
也可以支持jsp:include 这个标签  
其本质是在model中添加了 对jsptaglibs和tabinclude 的标记
这是 freemarkerservlet 中 对templateModel的初始化  从以下红色代码可以看出,想要自己处理jsptaglibs 而不去调用它的servlet 只需要在自己的model中添加上这个值对就可以了,应用环境  servlet
需 要注意的一个问题  使用include这个标签是 由于传入的是request和response这两个参数,include来的内容会写入到response中,而不是自己指定的out中,所以这部分可 能需要进行一些修改,如果只是其用来做表示层 那么很容易(本来就是这么做的)

protected TemplateModel createModel(ObjectWrapper wrapper,
                                        ServletContext servletContext,
                                        final HttpServletRequest request,
                                        final HttpServletResponse response) throws TemplateModelException {
        try {
            AllHttpScopesHashModel params = new AllHttpScopesHashModel(wrapper, servletContext, request);
   
            // Create hash model wrapper for servlet context (the application)
            ServletContextHashModel servletContextModel =
                (ServletContextHashModel) servletContext.getAttribute(
                    ATTR_APPLICATION_MODEL);
            if (servletContextModel == null)
            {
                servletContextModel = new ServletContextHashModel(this, wrapper);
                servletContext.setAttribute(
                    ATTR_APPLICATION_MODEL,
                    servletContextModel);
                TaglibFactory taglibs = new TaglibFactory(servletContext);
                servletContext.setAttribute(
                    ATTR_JSP_TAGLIBS_MODEL,
                    taglibs);
                initializeServletContext(request, response);
            }
            params.putUnlistedModel(KEY_APPLICATION, servletContextModel);
            params.putUnlistedModel(KEY_APPLICATION_PRIVATE, servletContextModel);
            params.putUnlistedModel(KEY_JSP_TAGLIBS, (TemplateModel)servletContext.getAttribute(ATTR_JSP_TAGLIBS_MODEL));
            // Create hash model wrapper for session
            HttpSessionHashModel sessionModel;
            HttpSession session = request.getSession(false);
            if(session != null) {
                sessionModel = (HttpSessionHashModel) session.getAttribute(ATTR_SESSION_MODEL);
                if (sessionModel == null || sessionModel.isZombie()) {
                    sessionModel = new HttpSessionHashModel(session, wrapper);
                    session.setAttribute(ATTR_SESSION_MODEL, sessionModel);
                    if(!sessionModel.isZombie()) {
                        initializeSession(request, response);
                    }
                }
            }
            else {
                sessionModel = new HttpSessionHashModel(this, request, response, wrapper);
            }
            params.putUnlistedModel(KEY_SESSION, sessionModel);
   
            // Create hash model wrapper for request
            HttpRequestHashModel requestModel =
                (HttpRequestHashModel) request.getAttribute(ATTR_REQUEST_MODEL);
            if (requestModel == null || requestModel.getRequest() != request)
            {
                requestModel = new HttpRequestHashModel(request, response, wrapper);
                request.setAttribute(ATTR_REQUEST_MODEL, requestModel);
                request.setAttribute(
                    ATTR_REQUEST_PARAMETERS_MODEL,
                    createRequestParametersHashModel(request));
            }
            params.putUnlistedModel(KEY_REQUEST, requestModel);
            params.putUnlistedModel(KEY_INCLUDE, new IncludePage(request, response));
            params.putUnlistedModel(KEY_REQUEST_PRIVATE, requestModel);
   
            // Create hash model wrapper for request parameters
            HttpRequestParametersHashModel requestParametersModel =
                (HttpRequestParametersHashModel) request.getAttribute(
                    ATTR_REQUEST_PARAMETERS_MODEL);
            params.putUnlistedModel(KEY_REQUEST_PARAMETERS, requestParametersModel);
            return params;
        } catch (ServletException e) {
            throw new TemplateModelException(e);
        } catch (IOException e) {
            throw new TemplateModelException(e);
        }
    }

分享到:
评论

相关推荐

    FreeMarKer+jsp使用(Struts2+Servlet).

    需要注意的是,FreeMarker模板中的Struts2标签使用`&lt;@s.tagname&gt;`,而在JSP中则是`&lt;s:tagname&gt;`。此外,如果遇到中文乱码问题,可以在Struts2的配置文件(如`struts.xml`)中设置字符编码: ```xml ``` 总的来说...

    struts2中jsp和freemarker模板视图的案例

    2. **Struts2 JSP标签库**:`&lt;s:form&gt;`、`&lt;s:textfield&gt;`、`&lt;s:submit&gt;`等标签的使用,以及如何通过`&lt;s:property&gt;`标签显示数据。 3. **JSP和Freemarker的比较**:两者在代码组织、可维护性和开发效率上的差异。 4. ...

    分享一个freemarker sitemesh jsp ext整合的完整项目

    4. **JSP Ext增强**:JSP Ext库提供了一些额外的JSP标签,可以增强JSP的功能,比如方便的数据绑定、更灵活的条件语句等。在整合项目中,JSP Ext可以帮助简化JSP页面的编写,提高可读性和维护性。 5. **后端控制**:...

    从jsp到freemarker2.3.23

    对于页面导入或包含,Freemarker使用`&lt;#include&gt;`标签,这与JSP的`&lt;%@ include %&gt;`非常相似。这种变化使得页面结构更加清晰,同时也提高了代码的复用性。 #### 绑定数据 **JSP:** ```jsp ${vo.title} ``` **...

    在struts2中使用freemarker模版

    接下来,在`web.xml`中,你需要配置一个名为`JSPSupportServlet`的servlet,这个servlet是Struts2用来支持JSP标签的。这样做是为了确保Struts2在服务器启动时能优先加载这个servlet,以便支持FreeMarker模板中使用...

    Struts2、Spring、Freemarker自定义标签

    Freemarker支持条件判断、循环结构、内置函数,以及自定义标签,增强了模板的灵活性。与JSP相比,Freemarker通常被认为更简洁、易读且更易于维护。 将这三个框架结合使用,可以构建出高效、灵活的Java Web应用。...

    struts2、JSTL、Spring、JS、JSP标签大全

    Struts2、JSTL、Spring、JavaScript(JS)以及JSP标签是Java Web开发中的核心组件,它们各自承担着不同的职责,共同构建了强大的Web应用程序。以下是对这些技术的详细解释: 1. **Struts2**:Struts2是一个基于MVC...

    Freemarker简介及标签详解大全.pdf

    4. 为Web准备:内置处理Web相关任务的结构,如HTML转义,可与Model2 Web应用框架集成,如Struts,作为JSP的替代品,支持JSP标签库,实现MVC模式下的可视化设计与应用程序逻辑分离。 5. 国际化和本地化支持:包括字符...

    freemarker生成html

    为了缓解这一问题,可以通过使用Freemarker将JSP生成的动态页面转换为静态HTML文件,从而提高系统性能和响应速度。 #### 三、Freemarker与JSP生成HTML的区别 1. **JSP**:是一种基于Java的服务器端脚本技术,用于...

    批量转换jsp为freemarker

    当前java web开发的主流已是spring boot,但还有很多老项目是基于spring web以及jsp...此工具使用python解析jsp文件并把Jsp标准标签解析为freemarker模板语言,以协助开发者把spring web项目转换为spring boot项目。

    freemarker入门Demo

    虽然Freemarker不使用JSP,但它提供了类似于JSP标签的功能,称为“指令”(Directives)。这些指令可以用来控制流程、包含其他模板、循环、条件判断等,为开发者提供了一种灵活的方式来构建复杂的页面结构。 4. **...

    springboot集成freemarker和shiro框架

    1. 在FreeMarker模板中使用Shiro标签库:在.ftl文件顶部引入Shiro标签库: ```html ${'@org.apache.shiro.web.tags.ShiroTagLibHandler@getTagLibUri()'}"&gt; ${shiro}" as shiro/&gt; ``` 2. 使用Shiro标签:在模板中...

    shiro.freemarker.ShiroTags已打包

    ShiroTags 是 Shiro 提供的一套用于模板引擎的标签库,如 Freemarker 和 JSP,它们使得在视图层集成权限控制变得更为便捷。 `com.jagregory.shiro.freemarker.ShiroTags` 是 Jagregory 开发的一个扩展,将 Apache ...

    freemarker概述

    - **支持JSP标记库**: 允许在模板中使用JSP标签。 - **国际化和本地化**: - **字符集智能处理**: 内部使用Unicode字符集,支持多种字符集。 - **本地化敏感**: 数字、日期和时间格式都支持本地化处理。 - **多...

    FreeMarker相关学习文档

    4. 国际化支持:通过使用`&lt;#t&gt;`标签,FreeMarker可以轻松实现多语言环境下的文本处理。 三、FreeMarker的常用语法 1. 输出表达式:`${expression}`,用于输出数据模型中的值。 2. 条件语句:`&lt;#if&gt;...&lt;#else&gt;......

    Struts2 与Freemarker 的配置方法

    - 将struts-tags.tld复制到工程的WEB-INF目录下,这将使Struts2的标签能在JSP或Freemarker模板中使用。 - 配置web.xml,添加Struts2的过滤器和过滤器映射,确保所有请求都经过Struts2处理。同时,为在Freemarker中...

    FreeMarker中文文档

    Freemaker是一个”模板引擎”,也可以说是一个基于模板技术的生成文本输出的一个通用工具.它是一个JAVA的包,一个JAVA程序员可以使用的类库....注意,它是MVC框架的一个组件(如STRUTS),也可以在模板中使用JSP标签.

    sitemesh和freemarker结合自我总结

    **注意**:为了让Freemarker能识别并使用Struts2提供的标签,需要在`web.xml`中配置相应的过滤器。 - **Struts.xml配置**:定义不同业务场景的结果视图。 ```xml &lt;result name="success" type="freemarker"&gt;/...

Global site tag (gtag.js) - Google Analytics