Servlet的轻巧高效,Freemarker的强大简便,两者结合将是超轻的组合,即可避免丑陋的Java代码和HTML代码杂揉,又可高效基于模板的站点开发。闲话少说,项目需要:
freemarker-2.3.13.jar
定义两个Servlet:
HelloAction.java 对应 /hello,借助Freemarker硬编码输出
public class HelloAction extends HttpServlet {
private static final long serialVersionUID = -6082007726831320176L;
private Configuration configuration;
public void init() throws ServletException {
configuration = new Configuration();
configuration.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/pages");
configuration.setEncoding(Locale.CHINA, "UTF-8");
}
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 填充数据类型
Map map = new HashMap();
map.put("userName", "小敏");
Template template = configuration.getTemplate("hello.html");
response.setContentType("text/html; charset=" + template.getEncoding());
Writer out = response.getWriter();
try{
template.process(map, out);
}catch (TemplateException e) {
e.printStackTrace();
}
}
public void destroy() {
super.destroy();
if(configuration != null){
configuration = null;
}
}
}
对应模板:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用Freemarker渲染2</title>
</head>
<body>
你好, $ {userName!} !
</body>
</html>
HiAction.java 对应 /hi ,借助Freemrker
Servlet的拦截功能,如以往写代码方式,感觉不到Freemarker的存在。
public class HiAction extends HttpServlet {
private static final long serialVersionUID = 518767483952153077L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("thename", "小敏");
request.getRequestDispatcher("/WEB-INF/pages/hi.html").forward(request, response);
}
}
对应的模板:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用Freemarker渲染</title>
</head>
<body>
hi $ {thename!}~<br />
</body>
</html>
但需要在web.xml 配置文件中定义如下:
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>
freemarker.ext.servlet.FreemarkerServlet
</servlet-class>
<!-- FreemarkerServlet settings: -->
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/</param-value>
</init-param>
<init-param>
<param-name>NoCache</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>ContentType</param-name>
<param-value>text/html; charset=UTF-8</param-value>
<!-- Forces UTF-8 output encoding! -->
</init-param>
<!-- FreeMarker settings: -->
<init-param>
<param-name>template_update_delay</param-name>
<param-value>0</param-value><!-- 0 is for development only! Use higher value otherwise. -->
</init-param>
<init-param>
<param-name>default_encoding</param-name>
<param-value>UTF-8</param-value><!-- The encoding of the template files. -->
</init-param>
<init-param>
<param-name>number_format</param-name>
<param-value>0.##########</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
使用哪一种组合方式,看您喜好了。
借助于Freemarker自身的Servlet工具,只是用于拦截Servlet中forward转向使用到的HTML资源文件。
很简陋,但凑合着能看。
分享到:
相关推荐
标题中的“PDF生产方案 maven + freemarker + flyingSaucer 实现”是指使用Java技术栈,结合Maven构建工具、FreeMarker模板引擎以及FlyingSaucer库来生成PDF文档的一种方法。这个方案通常用于将HTML内容转换为高质量...
Servlet与FreeMarker是Java Web开发中的两个重要技术,它们经常被组合使用来构建动态网站。Servlet是Java EE标准的一部分,它提供了一种服务器端处理HTTP请求的方法,而FreeMarker则是一个模板引擎,允许开发者将...
运算符的用法有如下两种: variable!或variable!defaultValue,第一种用法不给缺失的变量指定默认值,表明默认值是空字符串,长度为0的集合,或者长度为0的Map对象. 使用!指定默认值时,并不要求默认值的类型和变量类型...
Freemarker和Struts是两种在Java Web开发中广泛应用的技术,它们在构建动态网页和管理应用程序流程方面发挥着重要作用。 **Freemarker** 是一个基于模板的Java模板引擎,主要用于生成HTML、XML或其他文本格式的输出...
WebLogic作为成熟的应用服务器,提供了对Java EE标准的全面支持,包括EJB容器和Servlet容器,能够很好地托管和管理这两种技术的结合。 在学习和实践中,理解EJB3的组件模型、持久化机制和依赖注入,以及Struts2的...
FreeMarker 和 Struts2 是两种常见的 Java Web 开发技术,它们在构建 MVC(Model-View-Controller)架构的应用程序中发挥着关键作用。 **FreeMarker 知识点:** 1. **FreeMarker 是一个模板引擎**:它的主要功能是...
Spring 3.0.7是Spring的一个较旧但仍然广泛使用的版本,它支持XML和注解两种配置方式,可以与Struts2进行深度整合,实现模型对象的管理、依赖注入以及事务控制等功能。 Hibernate是一个对象关系映射(ORM)工具,它...
"Freemarker+Structs2.0文章上传生成静态页面"是这样一个系统,它结合了两个强大的Java技术来实现这一目标。 Freemarker是一个模板引擎,它允许开发者用简单的模板语言(FTL)编写设计模板,然后用数据模型填充这些...
【标题】"dwrDemo.rar_生成 静态"是一个关于使用...此外,还可以了解如何将这两种技术整合,以实现更高效、响应更快的Web应用。在实际项目中,这样的技术组合可以帮助优化用户体验,提高网站的加载速度和可伸缩性。
【标题】:“jsp+mysql的bbs论坛”是一种基于Java Server Pages(JSP)技术和MySQL数据库构建的在线讨论平台。...通过学习和实践,开发者不仅可以掌握这两种技术,还能了解Web开发中的许多核心概念和最佳实践。
在理解Struts2之前,我们首先需要回顾一下Web开发的两种经典模式:Model1和Model2。 Model1模式是早期的Web开发模式,它将JSP页面用于展示和数据处理,而JavaBean则用于存储业务逻辑和数据。这种模式导致了代码高度...
Struts和DWR(Direct Web Remoting)是两种在Web开发中广泛使用的开源技术。Struts是一种基于MVC(Model-View-Controller)设计模式的Java框架,用于构建可维护性和可扩展性良好的Web应用程序。而DWR则是一个...
Struts是Apache软件基金会下的一个开源项目,主要提供MVC(Model-View-Controller)设计模式的实现,帮助开发者构建可维护性和可扩展性良好的Java...同时,理解这两种框架的差异,有助于选择更适合项目需求的解决方案。
3. **配置方式**:Struts2支持XML和注解两种配置方式。XML配置文件通常是struts.xml,用于定义Action、结果类型、拦截器等。注解则可以直接在Action类或方法上声明,简化了配置过程。 4. **插件系统**:Struts2拥有...
学习文档会比较这两种方式的优缺点,指导读者根据项目需求选择合适的配置方式。 最后,文档可能还会涵盖 strut2与Spring、Hibernate等其他框架的集成,展示如何利用Structs2构建更完整的MVC架构。此外,安全问题也...
Struts的配置主要分为两个部分:struts-config.xml和web.xml。前者定义了Action及其关联的ActionForm、Forward、Result等信息;后者用于设置Struts拦截器和过滤器。 **4. ActionForm** ActionForm对象用于封装用户...
SSH(Struts+Spring+Hibernate)是一种常见的Java企业级开发组合,其中Struts负责表现层,Spring管理依赖注入(DI)和面向切面编程(AOP),同时整合其他框架,如数据访问层的Hibernate。Hibernate是一个ORM(对象...
- **XML配置文件/注解**:两种方式定义SQL语句,XML文件通常用于复杂查询,注解则更适用于简单场景。 - **Executor执行器**:MyBatis有简单执行器、复用执行器和批量执行器,根据需求选择。 3. **Web应用实现** ...
HandlerInterceptor 是一种拦截器,可以在请求处理前后执行自定义逻辑,如权限检查、日志记录等。 对于视图层,SpringMVC 支持多种视图技术,如 JSP、FreeMarker、Thymeleaf 等。通常,我们会在 ModelAndView 对象...
**Struts2** 是一个基于MVC设计模式的Web开发框架,它在Servlet容器(如Tomcat)中运行。Struts2提供了一种组织应用程序的方式,使得业务逻辑和视图层分离,增强了代码的可维护性和可扩展性。它通过拦截器实现动作...