Thymeleaf虚拟购物商店【二】
2017-10-19 15:41
399 查看
购物商店网站
为了更好的解释与Thymeleaf处理模板的概念,本教程将使用一个演示应用程序,您可以从项目的Web站点下载该应用程序。
这个应用程序是一个假想的虚拟购物网站,并将为我们提供了很多场景来展示Thymeleaf的许多特点。
首先,我们需要一组简单的模型实体作为应用程序:通过创建订单向客户销售的产品。我们还将管理有关这些产品的评论:
我们的应用程序也将有一个非常简单的服务层,由包含方法的服务对象组成:
public class ProductService {
...
public List<Product> findAll() {
return ProductRepository.getInstance().findAll();
}
public Product findById(Integer id) {
return ProductRepository.getInstance().findById(id);
}
}
在Web层应用程序将有一个过滤器,将委托执行Thymeleaf启用取决于请求的URL的命令:
private boolean process(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
try {
// This prevents triggering engine executions for resource URLs
if (request.getRequestURI().startsWith("/css") ||
request.getRequestURI().startsWith("/images") ||
request.getRequestURI().startsWith("/favicon")) {
return false;
}
/*
* Query controller/URL mapping and obtain the controller
* that will process the request. If no controller is available,
* return false and let other filters/servlets process the request.
*/
IGTVGController controller = this.application.resolveControllerForRequest(request);
if (controller == null) {
return false;
}
/*
* Obtain the TemplateEngine instance.
*/
ITemplateEngine templateEngine = this.application.getTemplateEngine();
/*
* Write the response headers
*/
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
/*
* Execute the controller and process view template,
* writing the results to the response writer.
*/
controller.process(
request, response, this.servletContext, templateEngine);
return true;
} catch (Exception e) {
try {
respo
4000
nse.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
} catch (final IOException ignored) {
// Just ignore this
}
throw new ServletException(e);
}
}
下面使我们的IGTVGController接口:
public interface IGTVGController {
public void process(
HttpServletRequest request, HttpServletResponse response,
ServletContext servletContext, ITemplateEngine templateEngine);
}
现在我们需要去做的就是实现IGTVGController接口,从服务层返回数据并且使用ITemplateEngine对象处理模板。
最后他是这样的
但是首先让我们看看模板引擎是如何初始化的。
为了更好的解释与Thymeleaf处理模板的概念,本教程将使用一个演示应用程序,您可以从项目的Web站点下载该应用程序。
这个应用程序是一个假想的虚拟购物网站,并将为我们提供了很多场景来展示Thymeleaf的许多特点。
首先,我们需要一组简单的模型实体作为应用程序:通过创建订单向客户销售的产品。我们还将管理有关这些产品的评论:
我们的应用程序也将有一个非常简单的服务层,由包含方法的服务对象组成:
public class ProductService {
...
public List<Product> findAll() {
return ProductRepository.getInstance().findAll();
}
public Product findById(Integer id) {
return ProductRepository.getInstance().findById(id);
}
}
在Web层应用程序将有一个过滤器,将委托执行Thymeleaf启用取决于请求的URL的命令:
private boolean process(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
try {
// This prevents triggering engine executions for resource URLs
if (request.getRequestURI().startsWith("/css") ||
request.getRequestURI().startsWith("/images") ||
request.getRequestURI().startsWith("/favicon")) {
return false;
}
/*
* Query controller/URL mapping and obtain the controller
* that will process the request. If no controller is available,
* return false and let other filters/servlets process the request.
*/
IGTVGController controller = this.application.resolveControllerForRequest(request);
if (controller == null) {
return false;
}
/*
* Obtain the TemplateEngine instance.
*/
ITemplateEngine templateEngine = this.application.getTemplateEngine();
/*
* Write the response headers
*/
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
/*
* Execute the controller and process view template,
* writing the results to the response writer.
*/
controller.process(
request, response, this.servletContext, templateEngine);
return true;
} catch (Exception e) {
try {
respo
4000
nse.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
} catch (final IOException ignored) {
// Just ignore this
}
throw new ServletException(e);
}
}
下面使我们的IGTVGController接口:
public interface IGTVGController {
public void process(
HttpServletRequest request, HttpServletResponse response,
ServletContext servletContext, ITemplateEngine templateEngine);
}
现在我们需要去做的就是实现IGTVGController接口,从服务层返回数据并且使用ITemplateEngine对象处理模板。
最后他是这样的
但是首先让我们看看模板引擎是如何初始化的。
相关文章推荐
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf教程 (二) 虚拟购物商店
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】
- Thymeleaf教程 (二) 虚拟购物商店
- Thymeleaf虚拟购物商店【二】
- Thymeleaf虚拟购物商店【二】