`
cuisuqiang
  • 浏览: 3960662 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3670404
社区版块
存档分类
最新评论

FreeMarker 整合Struts2示例

    博客分类:
  • J2EE
阅读更多

struts2可以非常简单地使用FreeMarker模板作为视图技术,对于传统的jsp页面而言,FreeMarker是一个绝佳的替代方案。
除此之外,Struts2默认采用FreeMarker作为其模板文件,而Struts2所有的主题模板文件都是采用FreeMarker编写的
Struts2使用FreeMarker作为其黙认的模板技术,因此Strus2对FreeMarker的支持非常良好。因此,为了在Struts2应用中使用FreeMarker模板技术,只需要在Struts.xml文件中进行简单配置即可

 

在FreeMarker模板中使用Struts2标签,将struts-tags.tld文件复制到WEB-INF目录下:
将Struts2-core.jar包解压,取出其中的struts-tags.tld文件,并复制到web应用的WEB-INF目录下。你可以使用解压软件打开JAR包,文件在META-INF下。

 

在web.xml文件中启动JspSupportServlet:
在web.xml文件中作如下配置

<servlet>
 <servlet-name>JspSupportServlet</servlet-name>
 <servlet-class>
  org.apache.struts2.views.JspSupportServlet
 </servlet-class>
 <!--配置JspSupportServlet自启动-->
 <load-on-startup>1</load-on-startup>
</servlet>

 

在FreeMarker模板文件中使用“assign指令”导入标签库

<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />

 

编写登录页面FTL文件:

<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />
<html>
<head>
<title>登录页面</title>
</head>
<body>
登陆<br>
<@s.form action="Login.action">
 <@s.textfield name="username" label="用户名"/>
 <@s.textfield name="password" label="密码"/>
 <@s.submit value="提交"/>
</@s.form>
提示:${name1}=${name2}
</body>
</html>

 注意:
name1和name2属性,是后面从Action里面获取的属性,这里是为了验证在模版中获取属性值
WEB容器默认不会处理 FreeMarker模板页面,如果直接通过浏览器直接请求该页面,否则看到的不是我们想要的结果,而是该模板页面的源代码

 

编辑Struts2配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <package name="default" namespace="/" extends="struts-default">
        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>
        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>
    </package>
    <package name="example" namespace="/example" extends="default">
        <action name="HelloWorld" class="com.test.LoginAction">
            <result name="success" type="freemarker">/WEB-INF/ftl/welcome.ftl</result>
        </action>
    </package>
</struts>

 注意:result视图类型是freemarker

 

编写Action类处理代码:

package com.test;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.Action;
@SuppressWarnings("serial")
public class LoginAction  implements Action {
 private String name1 = "AAAAA";
 public String execute() throws Exception {
  HttpServletRequest request = ServletActionContext.getRequest();
  request.setAttribute("name2", "BBBBB");
  return SUCCESS;
 }
 public String getName1() {
  return name1;
 }
 public void setName1(String name1) {
  this.name1 = name1;
 }
}

 

访问路径http://127.0.0.1:8080/f/example/HelloWorld.action
输出内容如下

 

特别提示:
在Struts中配置编码<constant name="struts.i18n.encoding" value="UTF-8"/>
在页面文件中指定编码<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
特别还要注意welcome.ftl文件属性里面的编码格式,如果不是统一格式,会有乱码

 

请您到ITEYE网站看 java小强 原创,谢谢!

http://cuisuqiang.iteye.com/ 

自建博客地址:http://www.javacui.com/ ,内容与ITEYE同步!

2
2
分享到:
评论
1 楼 怪客打三分 2016-09-13  
为什么我的都按上面复制的,也没报错就是访问不了呢

相关推荐

    struts2和freemarker整合

    **Struts2与FreeMarker的整合** Struts2框架允许开发者选择不同的视图技术,FreeMarker就是其中一种。整合过程包括以下几个步骤: 1. **添加依赖**:在项目中添加FreeMarker和Struts2 FreeMarker插件的依赖。 2. **...

    Struts2整合Freemarker生成静态页面

    8. **静态页面生成**:整合Struts2和Freemarker的一个常见应用是生成静态页面,提高网站性能。这通常通过在Action中触发静态化逻辑,将Freemarker渲染后的HTML保存到磁盘,然后直接返回这些静态页面。 9. **错误和...

    freemarker_struts2_demo

    标题“freemarker_struts2_demo”提示我们这是一个关于FreeMarker和Struts2结合使用的示例项目。FreeMarker是一个模板引擎,常用于Web应用中的视图层,而Struts2是一个基于MVC设计模式的Java Web框架。这篇博客文章...

    spring与struts2整合

    6. **视图解析**:Struts2 可以通过 JSP、FreeMarker 或其他模板技术来展示视图。视图结果通常由 Action 方法返回的字符串决定,该字符串作为视图资源的路径。 7. **测试与调试**:完成整合后,需要进行单元测试和...

    struts2 freemarker

    在提供的压缩包文件"Struts2_12(none_jsp_view_freeMarker)"中,很可能是包含了Struts2框架的一个版本,以及针对Freemarker视图的示例或教程。这些资源可能包括Action类、Freemarker模板文件、配置文件等,用于帮助...

    Java Struts框架示例项目

    对于视图部分,Struts2使用JSP和FreeMarker作为默认模板引擎,可以结合OGNL(Object-Graph Navigation Language)表达式来动态地显示数据。例如,`&lt;s:property value="someProperty"/&gt;`会显示Action对象中的`some...

    Struts2, Spring与myBatis整合示例项目

    Struts2支持多种结果类型,如JSP、FreeMarker、Velocity等,方便视图的渲染。 Spring框架的核心在于其IoC(Inversion of Control)容器,它管理着应用中的对象生命周期和依赖关系。Spring的AOP模块使得我们可以编写...

    struts2整合FreeMarker开发HelloWorld

    在"Struts2整合FreeMarker开发HelloWorld"的项目中,我们将学习如何在Struts2框架下使用FreeMarker模板技术来创建一个简单的 HelloWorld 示例。首先,我们需要确保我们的开发环境中已经安装了Apache Struts2和...

    struts2 freemarker hibernate spring 整合框架

    Struts2、Freemarker、Hibernate和Spring是Java开发中常用的四大开源框架,它们的整合应用可以构建出高效、灵活的企业级Web应用。这个压缩包文件的标题表明它包含了一个整合了这四个框架的示例项目,主要是实现登录...

    struts+freemarker 源码例

    在Struts与FreeMarker的整合中,通常需要在Struts的配置文件(struts-config.xml或struts2的struts.xml)中定义Action和对应的Result,指定使用FreeMarker来渲染结果。例如: ```xml &lt;result type="freemarker"&gt;/...

    Struts2+hibernate示例

    在"Struts2+Hibernate示例"中,开发者通常会首先介绍如何搭建整合这两个框架的基础环境。这通常包括以下几个步骤: 1. **Struts2的配置**:首先,你需要在项目中引入Struts2的核心库,这些库通常包含在struts2-core...

    Struts2+Hibernate+Spring 整合示例

    7. **视图渲染**:Struts2的Result配置决定请求完成后跳转到哪个页面,通常使用JSP、FreeMarker或其他模板技术来生成视图。 通过这样的整合,开发人员可以利用Struts2的MVC架构管理用户请求,使用Hibernate简化...

    mybatis+struts2整合demo

    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级...通过这个示例,你可以学习到MyBatis的动态SQL、Struts2的MVC模式以及两者之间的协同工作方式。这对于提升开发效率和代码可维护性具有重要意义。

    手动整合struts2+spring3.

    ### 手动整合Struts2与Spring3 在软件开发领域,尤其是Java Web开发中,Struts2与Spring是两个非常重要的框架。Struts2是一个用于构建动态Web应用的MVC(Model-View-Controller)框架,而Spring则是一个提供全面...

    整合 Struts 2 + Spring 2 + JPA + AJAX

    通过整合这些技术,开发者能够构建出一个高度模块化、松耦合的 Java Web 应用,既能利用 Struts 2 的 MVC 优势,又能享受到 Spring 的 IoC 和 AOP 带来的便利,同时利用 JPA 处理数据,通过 AJAX 提升用户体验。...

    struts综合示例

    在图形报表展示方面,Struts支持多种视图技术,如JSP、FreeMarker或Velocity,这些技术可以帮助开发者创建动态、交互式的页面。示例中可能包含了如何使用Struts与图表库(如JFreeChart)结合,生成数据报表的过程。...

    struts2 例子和包

    - `struts2-spring-plugin`:Spring集成插件,用于整合Spring框架。 通过学习和实践这个"Struts2 例子和包",开发者可以深入理解Struts2的架构和工作原理,提高Java web开发技能。同时,这也为将来整合Spring、...

    Hibernate与struts2结合使用的demo

    1. **配置struts2-hibernate整合** 在struts.xml中,我们需要配置Struts2-Hibernate插件,以便Struts2能够识别Hibernate的相关操作: ```xml &lt;constant name="struts.objectFactory" value="org.apache.struts2....

    struts2,spring3,mybatis3整合示例

    总的来说,`ssmdemo`项目是Java Web开发中一个典型的Struts2、Spring3和MyBatis3整合示例,它展示了如何将这三个框架有效地结合在一起,以提高开发效率和代码质量。通过深入研究这个示例,开发者可以更好地理解和...

    Struts2 Spring hibernate 整合示例

    在 `WEB-INF/lib` 目录下添加 Struts2 的核心库,包括 `freemarker-2.3.8.jar`、`ognl-2.6.11.jar`、`struts2-core-2.0.14.jar`、`struts2-spring-plugin-2.0.14.jar` 和 `xwork-2.0.7.jar`。这些库文件是 Struts2 ...

Global site tag (gtag.js) - Google Analytics