接着web巩固项目
功能管理概要设计
功能列表展示
使用ajax技术。就可以先访问网页,在网页中发现缺少数据,再通过ajax请求数据https://fly.layui.com/extend/tableTree/
treetable不是layui自带组件,需要额外引入
treetable-lay文件夹包含:treeTable.csstreeTable.js
使用treetable组件,帮我们ajax请求数据,并自动组装数据
a)在网页中定义一个
标签指定treetable组件组装数据的位置
![image.png](/uploads/projects/kuailexiaohui@klxh/240efe053b82af68099c20209b17b77e.png)
b)在js中渲染treetable,通过配置信息告诉treetable组件如何处理表格**
![image.png](/uploads/projects/kuailexiaohui@klxh/240efe053b82af68099c20209b17b77e.png)
b)在js中渲染treetable,通过配置信息告诉treetable组件如何处理表格**
<script>
layui.config({
base: './treetable-lay/' //指定treetable组件所在的文件夹目录
}).use(['treeTable'], function () { //use() 使用指定的layui组件
var treeTable = layui.treeTable;
treeTable.render({
elem:'#funGrid',//指定渲染的位置
url:'funAll',//使用ajax技术展示请求表格中要展示的数据
cols:[[//告诉组件按照什么样的表格形式取展示数据
{title:'功能名称',field:'fname'},//<td>
{title:'功能类别',field:'ftype'},
{title:'请求url',field:'fhref'},
{title:'权限范围',field:'auth'},
]]
});
});
</script>
c)treetable组件会通过url属性向服务器发送(ajax技术的)请求)
服务器按照业务需求,需要返回所有的功能信息(List-》JsonStr)
服务器使用封装的mvc框架处理请求
i) 引入mvc框架源码
ii) 引入mvc框架的依赖(jar)
iii) 在web.xml中配置框架核心入口
iv) 在web.xml中配置核心入口时指定映射关系注解所在的类的所在包
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>myweb.DispatcherServlet</servlet-class>
<init-param>
<param-name>controller-scan</param-name>
<param-value>controller</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
d)创建controller和方法,通过注解配置映射关系
将查询结果直接响应
此次响应回浏览器的内容treetable组件使用
这就要求响应回去的内容必须符合treetable的规范
package controller;
import domain.Fun;
import myweb.annotation.Controller;
import myweb.annotation.RequestMapping;
import myweb.annotation.ResponseBody;
import service.FunService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class FunController {
private FunService service=new FunService();
@RequestMapping("/funAll")
@ResponseBody
public Map<String,Object> findAll(){
List<Fun> funs=service.findAll();
//将查询结果按照layui-treetable组件的规范组装并响应
Map<String,Object> map=new HashMap<>();
map.put("code",0);
map.put("msg","出错啦");
map.put("data",funs);
return map;
}
}
package service;
import dao.FunDao;
import domain.Fun;
import orm.SqlSession;
import java.util.List;
public class FunService {
FunDao dao=new SqlSession().getMapper(FunDao.class);
public List<Fun> findAll(){
return dao.findAll();
}
}
package dao;
import domain.Fun;
import orm.annotation.Select;
import java.util.List;
public interface FunDao {
@Select("select * from t_fun")
public List<Fun> findAll();
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<link rel="stylesheet" type="text/css" href="layui/css/layui.css"/>
<script src="./layui/layui.all.js"></script>
</head>
<body>
<%--数据展示的位置--%>
<div id="funGrid"></div>
<!-- layui-js代码实现 -->
<script>
layui.config({
base: './treetable-lay/' //指定treetable组件所在的文件夹目录
}).use(['treeTable'], function () { //use() 使用指定的layui组件
var treeTable = layui.treeTable;
treeTable.render({
elem: '#funGrid',//指定渲染的位置
url: 'funAll',//使用ajax技术展示请求表格中要展示的数据
cols: [[//告诉组件按照什么样的表格形式取展示数据
{title: '功能名称', field: 'fname'},//<td>
{title: '功能类别', field: 'ftype'},
{title: '请求url', field: 'fhref'},
{title: '权限范围', field: 'auth'},
]],
tree:{//设置查询数据之间的子父关系
iconIndex: 0,
idName:'fid',//按照id和pid的关系实现子父级别
pidName:'pid',
isPidData:true,//表示按照id和pid的关系实现子父级别
}
});
});
</script>
</body>
</html>