Java+freemarker生成HTML模板页
来源:互联网 发布:java 图片合成pdf 编辑:程序博客网 时间:2024/05/02 06:10
Java+freemarker生成HTML模板页
需求有多个样式板式结构不一样模板页:用户选择自己喜欢的样式结构页面,然后就渲染出改html页面。不选择就显示默认的样式结构HTML页面
package com.school.web.controller;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.io.Reader;import java.io.StringReader;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.ServletRequestUtils;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.view.RedirectView;import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;import com.school.business.CategoryManager;import com.school.business.CourseInstructorManager;import com.school.business.CourseManager;import com.school.domain.Category;import com.school.domain.CourseBean;import com.school.domain.LiveCourse;import com.school.domain.User;import com.school.util.PageRequest;import com.school.util.Pageable;import com.school.util.Paginator;import com.school.util.SystemMailConfig;import freemarker.template.Configuration;import freemarker.template.DefaultObjectWrapper;import freemarker.template.Template;/** * 课程浏览查询的控制器。 */@Controller@RequestMapping("/course/explore")public class ExploreCourseController extends AbstractController { @Autowired private CourseManager courseManager; @Autowired private CategoryManager categoryManager; @Autowired private CourseInstructorManager courseInstructorManager; @Autowired private FreeMarkerConfigurer freeMarkerConfigurer; /** * 浏览所有课程。 */ @RequestMapping public ModelAndView index(HttpServletRequest request,HttpServletResponse response) { return this.doResponse(null, request,response); } /** * 根据分类ID浏览课程。 */ @RequestMapping("/{categoryId}") public ModelAndView explore(@PathVariable String categoryId, HttpServletRequest request,HttpServletResponse response) { return this.doResponse(categoryId, request,response); } /** * 处理请求。 */ private ModelAndView doResponse(String categoryId, HttpServletRequest request,HttpServletResponse response) { String schoolId = this.getSchoolId(request); // 网校ID String sort = ServletRequestUtils.getStringParameter(request, "sort", ""); // 排序方式 // 分页查询 int page = ServletRequestUtils.getIntParameter(request, "page", 1); // 第几页 Pageable pageable = new PageRequest(page, 16); // 分页课程信息 Paginator<CourseBean> paginator = null; if ("popular".equals(sort)) { paginator = courseManager.getPopularCourseBeans(schoolId, categoryId, pageable); } else if ("latest".equals(sort)) { paginator = courseManager.getLatestCourseBeans(schoolId, categoryId, pageable); } else if ("recommended".equals(sort)) { paginator = courseManager.getRecommendedCourseBeans(schoolId, categoryId, pageable); } else { // 默认按热门课程排序 sort = "popular"; paginator = courseManager.getPopularCourseBeans(schoolId, categoryId, pageable); } //创建者、教师 if(paginator.getContents().size()>0){ for(int i=0;i<paginator.getContents().size();i++){ String courseId=paginator.getContents().get(i).getCourseId(); List<User> instructor=courseInstructorManager.getInstructors(schoolId, courseId); if(instructor.size()>0){ paginator.getContents().get(i).setUserId(instructor.get(0).getUserId()); paginator.getContents().get(i).setCreatorNickname(instructor.get(0).getNickname()); paginator.getContents().get(i).setCreatorAvatar(instructor.get(0).getAvatar()); } } } // 课程分类 List<Category> categories = categoryManager.getCategories(schoolId); String categoryName = ""; //当前课程分类名称 if(null != categories){ for(Category category : categories){ if(category.getCategoryId().equals(categoryId)){ categoryName = category.getName(); } } } categoryName = categoryName.trim().length()==0 ? "全部":categoryName; boolean test=false; if(test){ // 渲染FreeMarker模版用到的数据模型 //参数列表 Map<String, Object> rootMap = new HashMap<String, Object>(); rootMap.put("schoolId", schoolId); rootMap.put("currentUser", this.getCurrentUser(request)); rootMap.put("sort", sort); rootMap.put("categoryId", categoryId); rootMap.put("categories", categories); rootMap.put("categoryName", categoryName); // 分页代码 String queryString = "sort=" + sort; rootMap.put("paginator", paginator); rootMap.put("paginationHtml", paginator.toPaginationHtml(queryString)); rootMap.put("totalCourse", paginator.getTotalItems()); // 处理模版 PrintWriter out = null; String templateName = "explore";//模板页的标记名称 Configuration cfg = freeMarkerConfigurer.getConfiguration(); String templateSource=""; InputStream inStream = null; try { inStream = SystemMailConfig.class.getResourceAsStream("/explore.ftl"); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] data = new byte[4096]; int count = -1; while ((count = inStream.read(data, 0, 4096)) != -1) { outStream.write(data, 0, count); } templateSource = outStream.toString("UTF-8"); } catch (Exception e) { logger.error("读取忘记密码邮件模板时发生异常,Cause: ", e); } finally { if (null != inStream) { try { inStream.close(); } catch (IOException e) { } } } logger.info("测试代码:{}",templateSource); Reader reader = new StringReader(templateSource); try { out = response.getWriter(); Template template = new Template(templateName, reader, cfg, "UTF-8"); template.process(rootMap, out, new DefaultObjectWrapper());//动态加载模板 } catch (Exception e) { logger.error("处理网校自定义首页模版出错,templateId=" + templateName, e); return new ModelAndView(new RedirectView("/school?from=home")); // 使用默认首页 } finally { if (null != out) { out.close(); } } return null; }else{ // 页面模版 ModelAndView mav = this.createModelAndView(request); mav.setViewName(getFrontViewDir(request) + "/course/explore"); mav.addObject("sort", sort); mav.addObject("categoryId", categoryId); mav.addObject("categories", categories); mav.addObject("categoryName", categoryName); // 分页代码 String queryString = "sort=" + sort; mav.addObject("paginator", paginator); mav.addObject("paginationHtml", paginator.toPaginationHtml(queryString)); mav.addObject("totalCourse", paginator.getTotalItems()); return mav; } }}
0 0
- Java+freemarker生成HTML模板页
- java 使用freemarker 生成word模板
- java使用 freemarker 模板生成word文件
- 使用Freemarker模板生成JAVA代码
- 【java】模板freemarker实现word生成导出
- Freemarker模板自动生成java代码
- Java实现freemarker生成word模板
- 利用freemarker、java生成html静态页面
- Flying-Saucer使用HTML或者FTL(Freemarker模板)生成PDF
- freemarker 模板生成 文件
- java word 导出(FreeMarker,HTML模板,包含图片)
- 使用FreeMarker模板生成java代码的例子
- 在java 用xml模板通过freemarker生成word文档
- 【java】javamail+freemarker生成邮件模板,并发送邮件
- java freemarker模板生成复杂格式的文档
- FreeMarker工具类,用来根据模板文件生成html文件,html字符串等
- HTML模板引擎-freemarker入门
- JAVA程序通过freemarker生成静态HTML页面
- MAVEN搭建SPRINGMVC+HIBERNATE遇到的问题及解决方案
- UIScrollView
- 几种常见容器比较和分析 hashmap, map, vector, list, hash table
- 自适应解决方案
- 机器学习中距离和相似性度量方法(比较全)
- Java+freemarker生成HTML模板页
- wifi伴侣如何打造wifi众联开放平台这座殿堂
- HTML之h1 h2 h3 h4标签知识经验篇
- qyz
- 关于Fedora 22在虚拟机中的安装详解
- mvc中实现异步刷新页面
- mysql 修改root密码
- OpenCV的IplImage转bmp
- leetcode: Perfect Squares