Spring FreeMarker整合Struts2过程详解

下面是“Spring FreeMarker整合Struts2过程详解”的完整攻略:

1. 初步准备

  • 在项目中引入Spring和Struts2框架;
  • 引入FreeMarker模板引擎。

2. 添加Spring配置文件

在Spring配置文件中,需要添加以下内容:

<!-- 引入FreeMarker视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="cache" value="true"/>
    <property name="prefix" value="/WEB-INF/ftl/"/>
    <property name="suffix" value=".ftl"/>
    <property name="contentType" value="text/html;charset=UTF-8"/>
</bean>

<!-- 配置FreeMarker模板引擎 -->
<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/ftl/"/>
    <property name="freemarkerSettings">
        <props>
            <prop key="template_update_delay">0</prop>
            <prop key="defaultEncoding">UTF-8</prop>
            <prop key="locale">zh_CN</prop>
            <prop key="whitespace_stripping">true</prop>
        </props>
    </property>
</bean>

以上配置中的 viewResolver 是Spring MVC中的视图解析器,freeMarkerConfigurer 则是FreeMarker模板引擎的配置类。

3. 添加Struts2配置

在Struts2的 struts.xml 配置文件中添加以下内容:

<!-- 配置Freemarker结果视图 -->
<result-types>
    <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
</result-types>

<!-- 局部结果视图 -->
<action name="test" class="com.example.action.TestAction" method="test">
    <result type="freemarker">/test.ftl</result>
</action>

<!-- 全局结果视图 -->
<constant name="struts.freemarker.templateSuffix" value=".ftl"/>
<constant name="struts.freemarker.defaultEncoding" value="UTF-8"/>
<constant name="struts.freemarker.contentType" value="text/html;charset=UTF-8"/>

以上配置中的 test 是一个示例 Action;struts.freemarker.* 是Struts2中使用的FreeMarker配置项。

4. 示例1:在FreeMarker中使用参数

WEB-INF/ftl/ 目录下新建模板文件 test.ftl,内容如下:

<!DOCTYPE html>
<html>
<head>
    <title>测试页面</title>
</head>
<body>
    <h1>Hello, ${username}!</h1>
</body>
</html>

在示例Action TestAction 中添加代码:

public class TestAction extends ActionSupport {

    private String username;

    public String test() {
        username = "张三";
        return SUCCESS;
    }

    public String getUsername() {
        return username;
    }

}

以上代码中,设置了 username 的值为 "张三"。在模板文件中,使用 ${username} 引用了这个值,最终效果为在页面上显示出 "Hello, 张三!" 的文本。

5. 示例2:引入外部模板

WEB-INF/ftl/ 目录下,新建一个名为 header.ftl 的包含模板,用于引入外部模板。内容如下:

<!DOCTYPE html>
<html>
<head>
    <title>${title}</title>
</head>
<body>

在示例Action TestAction 中添加代码:

public String test() {
    request.setAttribute("title", "测试页面");
    return SUCCESS;
}

以上代码中,设置了 title 的值为 "测试页面",并绑定到了 HttpServletRequest 对象上,用于进行外部模板的引入。

test.ftl 模板中添加以下代码:

<#import "header.ftl" as header>
<@header/>
    <h1>Hello, ${username}!</h1>
</body>
</html>

以上代码中,使用 <#import "header.ftl" as header> 引入了外部模板 header.ftl,并给它取了一个别名 header;在模板文件中,使用 <@header/> 片段指令插入了这个外部模板,最终效果为将页面分为两部分,一部分进行了独立的处理,另一部分用于输出数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring FreeMarker整合Struts2过程详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Tomcat Cannot assign requested address: JVM_Bind 非端口占用冲突

    当运行Tomcat时,可能会出现以下错误: java.net.BindException: Cannot assign requested address: JVM_Bind 这个错误通常意味着Tomcat无法将其绑定到特定的IP地址和端口。以下是可能导致这个错误的几种原因,以及如何解决它们。 原因1: 该端口已被占用 此错误可能是因为要绑定的端口已经被其他…

    Java 2023年5月19日
    00
  • java使用Nagao算法实现新词发现、热门词的挖掘

    Java使用Nagao算法实现新词发现、热门词的挖掘攻略 本文将介绍如何使用Java实现Nagao算法对文本进行分析,从而实现新词发现和热门词挖掘。攻略分为以下四步: 数据预处理 在使用Nagao算法对文本进行分析前,需要对词语进行切分。Java中常用的中文分词工具有jieba、HanLP等,本文以使用HanLP为例: import com.hankcs.h…

    Java 2023年5月19日
    00
  • Java的Struts框架报错“TokenNotFoundException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“TokenNotFoundException”和“TokenExpiredException”错误。这些错误通常由以下原因之一起: 防止重复提交:Struts框架提供了一种防止重复提交的机制,即使用令牌(Token)来确保每个表单只能提交一次。如果令牌未找到或已过期,则可能会出现这些错误。 配置错误:如果配置文…

    Java 2023年5月5日
    00
  • Spring Boot+Jpa多数据源配置的完整步骤

    下面是Spring Boot+Jpa多数据源配置的完整攻略: 配置文件 首先需要在application.properties 或者 application.yml 配置文件中进行多数据源的配置。示例如下: # 数据源 1 spring.datasource.first.url=jdbc:mysql://localhost:3306/first_databa…

    Java 2023年5月20日
    00
  • Spring 注解

    @SpringBootApplication 申明让spring boot自动给程序进行必要的配置,这个配置等同于: @Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。 @RequestMapping 提供路由信息,负责URL到Controller中的具体函数的映射。 @Respon…

    Java 2023年5月9日
    00
  • springMVC框架下JQuery传递并解析Json数据

    下面是详细的攻略: 1. 概述 Spring MVC 是一个常用的 Java Web 开发框架,而 jQuery 是一个非常流行的 JavaScript 库。在前端和后端协作开发的过程中,我们常常需要通过 AJAX 来进行异步数据交互。传递 JSON 数据,并解析 JSON 数据是基于 AJAX 进行异步交互的常见需求之一。本文将详细介绍在 Spring M…

    Java 2023年6月15日
    00
  • Java如何计算两个时间段内的工作日天数

    针对Java如何计算两个时间段内的工作日天数,可以分成以下几个步骤: 1.确定工作日 首先,我们需要明确工作日的定义。工作日通常是指周一到周五,排除周末和法定节假日。 2.计算天数 其次,确认所需计算的两个时间段,并通过Java API获取这两个时间段之间的天数差。 3.排除非工作日 最后,遍历两个时间段中的每一天,将所有非工作日从计算结果中排除,得到最终的…

    Java 2023年5月20日
    00
  • 如何基于SpringMVC实现断点续传(HTTP)

    基于SpringMVC实现断点续传(HTTP) 断点续传是指在文件传输过程中,如果传输中断,可以从中断处继续传输,而不需要重新传输整个文件。在本文中,我们将详细介绍如何基于SpringMVC实现断点续传(HTTP)。 步骤一:添加依赖 在使用SpringMVC框架之前,我们需要在项目中添加SpringMVC依赖。我们可以在pom.xml文件中添加以下依赖: …

    Java 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部