saas-export项目-系统日志管理**

系统日志管理

  • (1)分析
    记录用户的访问的Controller与ip等信息
    属于监控功能
    在这里插入图片描述
    只要查看与保存功能

  • (2)数据组成
    //设置登录用户信息 seesion获取
    //设置企业信息
    //IP地址request获取
    //设置记录时间
    //执行的方法名称 新方法获取
    //执行的类名称
    在这里插入图片描述

系统日志管理

两个功能,一个是分页显示,一个是保存日志
》SysLog
》TestSysLogService
》ISysLogService,SysLogServiceImpl
》 ISysLogDao,ISysLogDao.xml
》SysLogController,xxx.jsp

SysLog

public class SysLog {
    
    
    private String id            ;
    private String userName      ;
    private String ip            ;
    private Date time          ;
    private String method        ;
    private String action        ;
    private String companyId     ;
    private String companyName   ;

TestSysLogService

分页查询
添加

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:spring/applicationContext-*.xml")
public class TestSysLogService {
    
    

    @Autowired
    ISysLogService iSysLogService;
    //增*删改查*
    @Test
    public void test01(){
    
    
        //分页列表
        //页面上显示分页列表,就要求业务方法中提供查询PageInfo的方法
        PageInfo<SysLog> pi= iSysLogService.findByPage(1,3,"1");

    }
    @Test
    public void test02(){
    
    

        //将一个表单数据保存在javaBean中,再将javaBean存到数据库
        SysLog sysLog = new SysLog();
        //设置登录用户信息
        sysLog.setUserName("老玉");
        //设置企业信息
        sysLog.setCompanyId("1");
        sysLog.setCompanyName("吉首大学");
        //IP地址
        sysLog.setIp("192.168.10.11");
        //设置记录时间
        sysLog.setTime(new Date());
        //执行的方法名称
        sysLog.setMethod("toList");
        //执行的类名称
        sysLog.setAction("com.wzx.web.company.CompanyController");

        sysLog.setCompanyId("1");
        sysLog.setCompanyName("吉首大学");
        iSysLogService.saveSysLog(sysLog);
    }
}

ISysLogService,SysLogServiceImpl

public interface ISysLogService {
    
    
    PageInfo<SysLog> findByPage(int curr, int pageSize, String companyId);
    void saveSysLog(SysLog sysLog);
}
@Service
public class SysLogServiceImpl implements ISysLogService {
    
    
    //service调用dao
    @Autowired
    ISysLogDao iSysLogDao;
    @Override
    public PageInfo<SysLog> findByPage(int curr, int pageSize, String companyId) {
    
    
        //设置参数
        PageHelper.startPage(curr,pageSize);
        //调用全查
        List<SysLog> list = iSysLogDao.findAll(companyId);
        //包装成PageInfo
        PageInfo<SysLog> pi = new PageInfo<>(list);
        return pi;
    }

    @Override
    public void saveSysLog(SysLog sysLog) {
    
    
        String uuid= UUID.randomUUID().toString();
        sysLog.setId(uuid);
        iSysLogDao.save(sysLog);
    }
}

ISysLogDao,ISysLogDao.xml

public interface ISysLogDao {
    
    
    List<SysLog> findAll(String companyId);
    void save(SysLog sysLog);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<!--namespace: 需要映射的Dao接口类型-->
<mapper namespace="com.wzx.dao.system.syslog.ISysLogDao">
    <!-- 配置映射 字段-->
    <resultMap id="syslogMap" type="sysLog">
        <id column="id"           property="id"          />
        <result column="user_name"    property="userName"    />
        <result column="ip"           property="ip"          />
        <result column="time"         property="time"        />
        <result column="method"       property="method"      />
        <result column="ACTION"       property="action"      />
        <result column="company_id"   property="companyId"   />
        <result column="company_name" property="companyName" />
    </resultMap>
<!--    List<SysLog> findAll(String companyId);-->
    <select id="findAll" parameterType="string" resultMap="syslogMap">
        select * from st_sys_log where company_id =#{companyId} order by time desc
    </select>
<!--    void save(SysLog sysLog);-->
    <insert id="save" parameterType="sysLog">
    insert into st_sys_log
        (
        id            ,
        user_name     ,
        ip            ,
        time          ,
        method        ,
        ACTION        ,
        company_id    ,
        company_name
        )
        values
        (
        #{id            },
        #{userName      },
        #{ip            },
        #{time          },
        #{method        },
        #{action        },
        #{companyId     },
        #{companyName   }
        )
    </insert>
</mapper>

SysLogController,log-list.jsp.jsp

@Controller
@RequestMapping("/system/syslog")
public class SysLogController extends BaseController {
    
    
    @Autowired
    ISysLogService iSysLogService;

    @RequestMapping(path = "/toList", method = {
    
    RequestMethod.GET, RequestMethod.POST})
    public String toList(@RequestParam(defaultValue = "1") int curr, @RequestParam(defaultValue = "3") int pageSize){
    
    

        //分页列表
        //页面上显示分页列表,就要求业务方法中提供查询PageInfo的方法
        PageInfo<SysLog> pi= iSysLogService.findByPage(curr,pageSize,getLoginCompanyId());
        request.setAttribute("pi",pi);
        return "system/log/log-list";
    }
}
  <table id="dataList" class="table table-bordered table-striped table-hover dataTable">
                    <thead>
                    <tr>
                        <th class="sorting">序号</th>
                        <th class="sorting">用户名</th>
                        <th class="sorting">ip</th>
                        <th class="sorting">时间</th>
                        <th class="sorting">类和方法</th>
                    </tr>
                    </thead>
                    <tbody>
                    <c:forEach items="${pi.list}" var="log"  varStatus="st">
                        <tr>
                            <td>${st.count }</td>
                            <td>${log.userName }</td>
                            <td>${log.ip}</td>
                            <td>${log.time}</td>
                            <td>${log.action}.${log.method}</td>
                        </tr>
                    </c:forEach>
                    </tbody>
                </table>

系统日志管理 优化日志列表

  • (1)分析
    日志记录多,生成的页号按钮多
  • (2)实现
    控制循环次数
    并进行边界判断
    在这里插入图片描述

base.jsp

<c:forEach begin="${pi.pageNum-5 <= 0 ? 1:pi.pageNum-5 }" end="${pi.pageNum+5>pi.pages?pi.pages:pi.pageNum+5}"
                   var="i">
            <li class="paginate_button ${pi.pageNum==i ? 'active':''}"><a href="javascript:goPage(${i})">${i}</a></li>
        </c:forEach>

在这里插入图片描述

Guess you like

Origin blog.csdn.net/qq_40711092/article/details/109543673