struts+mybatis 拦截器系统日志生成

简单的实现方法,数据库部分就不展示了

1.Syslog.java 实体类(实体类放在Po包中)

package com.hotel.po;

/**
 * 系统日志实体类
 * @author Administrator
 *
 */
public class Syslog {

	
	private int logid;
	private String logname;
	private String logurl;
	private String staffname;
	private String description;
	private String logtime;
	public int getLogid() {
		return logid;
	}
	public void setLogid(int logid) {
		this.logid = logid;
	}
	public String getLogname() {
		return logname;
	}
	public void setLogname(String logname) {
		this.logname = logname;
	}
	public String getLogurl() {
		return logurl;
	}
	public void setLogurl(String logurl) {
		this.logurl = logurl;
	}
	
	public String getStaffname() {
		return staffname;
	}
	public void setStaffname(String staffname) {
		this.staffname = staffname;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getLogtime() {
		return logtime;
	}
	public void setLogtime(String logtime) {
		this.logtime = logtime;
	}

}
2.Loglink.java另一张表的实体类

package com.hotel.po;

public class Loglink {
	
	private int linkId;
	private String logurl;
	private String logname;
	private String description;
	
	public int getLinkId() {
		return linkId;
	}
	public void setLinkId(int linkId) {
		this.linkId = linkId;
	}
	public String getLogurl() {
		return logurl;
	}
	public void setLogurl(String logurl) {
		this.logurl = logurl;
	}
	public String getLogname() {
		return logname;
	}
	public void setLogname(String logname) {
		this.logname = logname;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	
	

}
3.SyslogDaoImpl.java该方法用于后台数据操作

package com.hotel.dao.impl;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.hotel.dao.ISyslogDao;
import com.hotel.po.Syslog;
import com.hotel.util.MyBatisUtil;

public class SyslogDaoImpl implements ISyslogDao {

	public SyslogDaoImpl() {
	}

	private static ISyslogDao logDao = new SyslogDaoImpl();

	public static ISyslogDao getInstance() {
		return logDao;
	}

	SqlSession sqlSession = null;
	

	public List<Syslog> getAllLog() {
		sqlSession = MyBatisUtil.getSqlSession();
		List<Syslog> logList = sqlSession.getMapper(ISyslogDao.class)
				.getAllLog();
		MyBatisUtil.closeSqlSession(sqlSession);
		return logList;
	}

	public boolean saveLog(Syslog log) {
		boolean flag = false;
		sqlSession = MyBatisUtil.getSqlSession();
		try{
			flag = sqlSession.getMapper(ISyslogDao.class).saveLog(log);
			sqlSession.commit();
		}catch (Exception e) {
			sqlSession.rollback();
		}
		MyBatisUtil.closeSqlSession(sqlSession);
		return flag;
	}

	

	public int getSyslogCount() {
		sqlSession = MyBatisUtil.getSqlSession();
		int logCount = sqlSession.getMapper(ISyslogDao.class).getSyslogCount();
		MyBatisUtil.closeSqlSession(sqlSession);
		return logCount;
	}
	
	public List<Syslog> getPageSyslog() {
		sqlSession = MyBatisUtil.getSqlSession();
		List<Syslog> logList = sqlSession.getMapper(ISyslogDao.class).getPageSyslog();
		MyBatisUtil.closeSqlSession(sqlSession);
		return logList;
	}

	

}
4.ISyslogDao.java以上方法的接口

public  List<Syslog> getAllLog();
	
	public  int getSyslogCount();
	
	public  boolean saveLog(Syslog log);
	
	public List<Syslog> getPageSyslog();

5.Loglink 同理,只需要写public Loglink getNameByLink(String linkurl);即可

6.Syslog.xml

<mapper namespace="com.hotel.dao.ISyslogDao">
	<select id="getSyslogById" resultType="com.hotel.po.Syslog">
		select * from syslog where logId=#{logId}
	</select>
	<insert id="saveLog"  parameterType="com.hotel.po.Syslog">
	 insert into syslog(logname,logurl,logtime,staffname,description) values(#{logname},#{logurl},#{logtime},#{staffname},#{description})
	</insert>
	
	<select id="getAllLog" resultType="com.hotel.po.Syslog">
		select * from syslog 
	</select>
	
	<select id="getSyslogCount"  resultType="com.hotel.po.Syslog">
	  select count(*) from syslog
	</select>
	
	<select id="getPageSyslog" resultType="com.hotel.po.Syslog">
	    select * from syslog group by logid desc limit #{page},#{size}
	</select>
</mapper>

7.SyslogServiceImpl.java(该方法用于前台调用)

package com.hotel.service.impl;

import java.util.List;

import com.hotel.dao.ISyslogDao;
import com.hotel.dao.impl.SyslogDaoImpl;
import com.hotel.po.Syslog;
import com.hotel.service.ISyslogService;

public class SyslogServiceImpl implements ISyslogService {
	
	public SyslogServiceImpl()
	{
		
	}
	private static ISyslogService logservice= new SyslogServiceImpl();
	
	public static ISyslogService getInstance()
	{
		return logservice;
	}
	
	ISyslogDao logdao=SyslogDaoImpl.getInstance();
	
	
	public boolean saveLog(Syslog log)
	{
		return logdao.saveLog(log);
	}
	
	
	public List<Syslog> getAllLogList()
	{
		return logdao.getAllLog();
	}
	
	public int getSyslogCount()
	{
		return logdao.getSyslogCount();
	}
	
	public List<Syslog> getPageSyslog()
	{
		return logdao.getPageSyslog();
	}

}

8.以上方法的接口
ISyslogService 

package com.hotel.service;

import java.util.List;

import com.hotel.po.Syslog;

public interface ISyslogService {

	public boolean saveLog(Syslog log);

	public List<Syslog> getAllLogList();
	
	public int getSyslogCount();
	
	public List<Syslog> getPageSyslog();

}
9.Filter

package com.hotel.filter;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hotel.po.Loglink;
import com.hotel.po.Syslog;
import com.hotel.service.ILoglinkService;
import com.hotel.service.ISyslogService;
import com.hotel.service.impl.LoglinkServiceImpl;
import com.hotel.service.impl.SyslogServiceImpl;

public class SyslogFilter implements Filter {

	public void destroy() {
		System.out.println("SyslogFilter:OFF");
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		System.out.println("------------------SyslogFilter--------------");
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;
		
		//Staff staff = (Staff) req.getSession().getAttribute("staff");
		SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
		ILoglinkService logservice=LoglinkServiceImpl.getInstance();
		Loglink link = logservice.getNameByLink(req.getServletPath());
		Syslog slog = new Syslog();
		slog.setLogname(link.getLogname());
		slog.setDescription(link.getLogname());
		slog.setLogtime(sdf.format(new Date()));
		slog.setLogurl(req.getServletPath());
		//slog.setStaffname(staff.getStaffname());
		slog.setStaffname("admin");
		ISyslogService slogservice=SyslogServiceImpl.getInstance();
		if(slogservice.saveLog(slog)){
			chain.doFilter(req, res);
		}else{
			System.out.println("操作失败");
			chain.doFilter(req, res);
		}
		
		
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		System.out.println("SyslogFilter:ON");
	}

}
10.web.xml配置

	
	<!-- 日志过滤器 -->
	<filter>
		<filter-name>SyslogFilter</filter-name>
		<filter-class>com.hotel.filter.SyslogFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>SyslogFilter</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
	










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在SpringBoot中使用Mybatis拦截器的方法有三种。 第一种方法是在启动项目时不会自动调用自定义拦截器的setProperties方法。可以通过在SpringBoot的配置类中使用@Bean注解进行配置。 第二种方法是在Mybatis核心配置文件中配置拦截器的顺序。拦截器的顺序是从上往下的顺序,按照Executor、ParameterHandler、StatementHandler、ResultSetHandler的顺序进行拦截。 第三种方法是在application.yml或application.properties文件中进行配置。可以使用mybatis.interceptor属性指定拦截器的类名。 需要注意的是,在配置Mybatis拦截器时,config-location属性和configuration属性不能同时指定。根据具体需求,可以选择其中一种方式进行配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springBoot+mybatis简单demo完整详细版](https://download.csdn.net/download/u010962837/85226352)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [在springboot中给mybatis拦截器](https://blog.csdn.net/qq_43985303/article/details/130378043)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值