(四十一)使用FreeMarker页面引擎、前端 twbs-pagination 分页插件、后端 PageHelper 分页插件概括

FreeMarker页面引擎


什么是Freemarker?

FreeMarker 是一款免费的模板引擎:即一种基于模板和数据,用来生成输出文本(HTML 网页,电子邮件,配置文件,源代码等)的通用工具.FreeMarker比JSP渲染性能更好,不跟web环境耦合,模板文件写不了java代码,责任更分离。FreeMarker解析优先于JS


FreeMarker原理

模板+数据=输出。模板只负责数据在页面中的表现,不涉及逻辑代码。逻辑由数据模型处理


使用Freemarker添加依赖

<!-- FreeMarker -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.30</version>
</dependency>

Freemarker是一个模板引擎,能够用来生成各种文件


空值处理

FreeMarker 中的变量必须要赋值,如果不赋值,那么就会抛出异常.可以使用 **!**来指定默认值,例如:

${name!"这是默认值"}
${} 不能直接获取集合/数组/date类型的数据


Freemarker常用指令

一般以#开头

  • include指令
当前模板引入另一个模板文件 
<#include "/common/link.ftl" >
  • assign 指令
创建变量赋值
    <#assign name="小罗"/>
使用${} 获取该变量值   
     ${name}
  • list指令
用于循环遍历
  <#list pageInfo.list as department>
      <tr>
           <td>${department.id}</td>
           <td>${department.name}</td>
           <td>${department.sn}</td>
           <td>${department_index}</td> //索引
           <td>
      </tr>
   <#/list>   
  • if指令
条件判断 condition:将被计算成布尔值的表达式
<#if condition>
   <#elseif condition2> //可选
    <#else>
</#if> //一定要if结尾


前端 twbs-pagination 分页插件

twbs-pagination 是一个简单的自适应 Bootstarp 样式的分页插件,用于前端绘制分页相关的样式效果。网址:https://esimakin.github.io/twbs-pagination/

例子:

<script>
    //分页
    $(function(){
        $("#pagination").twbsPagination({
                totalPages: ${pageInfo.pages} || 1,
                startPage: ${pageInfo.pageNum} || 1,
                visiblePages:5,
                first:"首页",
                prev:"上页",
                next:"下页",
                last:"尾页",
                initiateStartPageClick:false,
                onPageClick:function(event,page){
					$("#currentPage").val(page);
					$("#searchForm").submit();
				}
		});
    })
</script>


后端 PageHelper 分页插件

Pagehelper属于MyBatis的一个分页插件,需要添加依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.2</version>
</dependency>

Pagehelper属于后端的分页插件,能够帮我们节省代码去计算,还有改sql,它自己就会帮我们去计算,执行

  • 需要修改配置文件applicationContext.xml,在sqlSessionFactory下,添加属性
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 注意其他配置 -->
    <property name="plugins">
        <array>
            <bean class="com.github.pagehelper.PageInterceptor">
                <property name="properties">
                    <!--使用下面的方式配置参数,一行配置一个,下面配的是合理化分页 -->
                    <value>
                        pageSizeZero=true
                        reasonable=true
                    </value>
                </property>
            </bean>
        </array>
    </property>
</bean>
  • 使用Pagehelper中提供的 PageInfo 类进行封装,还是要传入当前页和每页条数,以部门为例

    • 类QueryObject
    //封装分页查询需要的参数
    @Setter
    @Getter
    public class QueryObject {
        private int currentPage=1; //当前页
        private int PageSize=5; //每页条数}
    
    • 部门接口IDepartmentService
    PageInfo<Department> query(QueryObject qo);
    
    • 实现类DepartmentServiceImpl
    @Override
        public PageInfo<Department> query(QueryObject qo) {
            //告诉插件我们查询第几页,每页多少条
            PageHelper.startPage(qo.getCurrentPage(),qo.getPageSize());
            //查询当前页数据
            List<Department> departments = departmentMapper.selectForList(qo);
            return new PageInfo<>(departments);
        }
    
    • 部门控制器
    //处理分页查询页面请求
        @RequestMapping("/list")
        public String list(QueryObject qo, Model model){
            PageInfo<Department> pageInfo = departmentService.query(qo);
            model.addAttribute("pageInfo",pageInfo);
            return "department/list";
        }
    
    • 对应前端页面参数,进行传入
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
可以使用 Spring Boot 中的 Freemarker 模板引擎来生成静态 HTML 页面,然后让前端通过 HTTP 请求访问这些页面。 下面是一个简单的示例: 1. 在 Spring Boot 项目中添加 Freemarker 依赖,比如: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> ``` 2. 在 application.properties 文件中配置 Freemarker 相关属性,比如: ``` # 模板文件所在目录 spring.freemarker.template-loader-path=classpath:/templates/ # 静态文件生成目录 spring.freemarker.static-file-location=file:/path/to/static/files/ ``` 3. 创建一个 Freemarker 模板文件,比如 `/templates/index.ftl`: ``` <!DOCTYPE html> <html> <head> <title>My Page</title> </head> <body> <h1>Hello, ${name}!</h1> </body> </html> ``` 4. 创建一个 Spring Controller 类,生成静态 HTML 页面: ``` @Controller public class MyController { @Autowired private Configuration freemarkerConfig; @GetMapping("/generate") public void generateHtml(@RequestParam("name") String name, HttpServletResponse response) throws Exception { Template template = freemarkerConfig.getTemplate("index.ftl"); Map<String, Object> model = new HashMap<>(); model.put("name", name); StringWriter stringWriter = new StringWriter(); template.process(model, stringWriter); String html = stringWriter.toString(); response.setContentType("text/html;charset=UTF-8"); response.getWriter().write(html); response.getWriter().flush(); response.getWriter().close(); } } ``` 5. 启动 Spring Boot 应用,访问 `http://localhost:8080/generate?name=World`,即可生成静态 HTML 页面,并在浏览器中显示。 注意:在实际生产环境中,你需要将生成的静态 HTML 页面放到一个静态文件目录中(比如 `/path/to/static/files/`),然后让前端通过 HTTP 请求访问这些页面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值