文档章节

Spring+SpringMVC+Mybatis+EasyUI古诗搜索系统(五--控制层及事务管理)

northsailor
 northsailor
发布于 2016/07/14 17:41
字数 461
阅读 14
收藏 0

自定义注解MyBatisRepositors.java

package com.jikexueyuan.annotation;
/**
 * MyBatis使用该注解标识DAO
 */
public @interface MyBatisRepository {

}

记录日志的方面组件OperateLogger.java

package com.jikexueyuan.aspect;

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

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
/**
 *    用于记录日志的方面组件,演示Spring AOP的各种通知类型。
 */
@Component
@Aspect
public class OperateLogger {
    /**
     * 前置通知、后置通知、最终通知使用的方法
     */
    @Before("within(com.jikexueyuan.controller..*)")
    public void log1() {
        // 记录日志
        System.out.println("-->记录用户操作信息");
    }
    /**
     * 环绕通知使用的方法
     */
    @Around("within(com.jikexueyuan.controller..*)")
    public Object log2(ProceedingJoinPoint p) throws Throwable {
        // 目标组件的类名
        String className = p.getTarget().getClass().getName();
        // 调用的方法名
        String method = p.getSignature().getName();
        // 当前系统时间
        String date = new SimpleDateFormat(
                "yyyy-MM-dd hh:mm:ss").format(new Date());
        // 拼日志信息
        String msg = "-->用户在" + date + ",执行了" 
                + className + "." + method + "()";
        // 记录日志
        System.out.println(msg);        
        
        // 执行目标组件的方法
        Object obj = p.proceed();
        
        // 在调用目标组件业务方法后也可以做一些业务处理
        System.out.println("-->调用目标组件业务方法后...");
        
        return obj;
    }
    
    /**
     * 异常通知使用的方法
     */
    @AfterThrowing(pointcut="within(com.jikexueyuan.controller..*)",throwing="e")
    public void log3(Exception e) {
        StackTraceElement[] elems = e.getStackTrace();
        // 将异常信息记录
        System.out.println("-->" + elems[0].toString());
    }
}

控制层

package com.jikexueyuan.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class IndexController {
	/**
	 * 页面跳转
	 * @return
	 */
	@RequestMapping(value="toPoetriesSearch.do")
	public String toPoetriesSearch(){
		return "poetriesSearch";
	}
	@RequestMapping(value="toPoetsSearch.do")
	public String toPoetsSearch(){
		return "poetsSearch";
	}
}
package com.jikexueyuan.controller;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.jikexueyuan.entity.PageModel;
import com.jikexueyuan.entity.Poetries;
import com.jikexueyuan.service.PoetriesService;

@Controller
public class PoeController{
	@Resource
	private PoetriesService poetriesService;
	/**
	 * 用题目或名句搜索
	 * @param pageModel
	 * @param poetries
	 * @return
	 */
	@RequestMapping(value ="listPoeWithPageForJson.do")
    @ResponseBody
    public Object listPoeWithPageForJson(PageModel<Poetries> pageModel,Poetries poetries) {
        Object jsonObject = null;
        try {
        	pageModel.setQueryObj(poetries);
        	poetriesService.listPoeWithPage(pageModel);
            jsonObject = JSONObject.toJSON(pageModel);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonObject;
	}

}
package com.jikexueyuan.controller;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.jikexueyuan.entity.PageModel;
import com.jikexueyuan.entity.Poets;
import com.jikexueyuan.service.PoetsService;
@Controller
public class PoetsController {
	@Resource
	private PoetsService poetsService;
	/**
	 * 诗人名搜索诗句
	 * @param pageModel
	 * @param poets
	 * @return
	 */
	@RequestMapping(value ="listByNameWithPageForJson.do")
    @ResponseBody
    public Object listByNameWithPageForJson(PageModel<Poets> pageModel,Poets poets) {
        Object jsonObject = null;
        try {
        	pageModel.setQueryObj(poets);
        	poetsService.listByName(pageModel);
            jsonObject = JSONObject.toJSON(pageModel);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonObject;
	}

}

 

© 著作权归作者所有

共有 人打赏支持
northsailor
粉丝 1
博文 5
码字总数 3598
作品 0
兰州
程序员
私信 提问
ZHENFENGSHISAN/perfect-ssm

Quick Start 项目简介 ssm系列 ssm-demo:Spring+SpringMVC+Mybatis+easyUI整合 perfect-ssm:RESTful API+redis缓存 ssm-cluster:前后端分离+集群部署 ssm-dubbo:dubbo服务化 ssm-micro-se......

ZHENFENGSHISAN
2017/09/18
0
0
【2016-02-24】Spring的事务到底该给Dao配置还是给Service配置?

1、至于第一点说的web层事务,暂时没有接触到,需要找些案例了解下~ 2、从我们现有项目上来看,事务是控制在service层的:因为一个完整的业务操作涉及到几个service,它们之间互相调用,一个...

rathan0
2016/02/24
146
0
spring 学习(五):spring 事务

spring 学习(五):spring 事务 事务概要 一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的: 为数据库操作序列提供了一个从失败中恢复到正常状态的方法...

希希里之海
08/20
0
0
Spring+mybatis的一个简单例子

一、eclipse新建java项目取名SpringTest 二、导入sping,mybatis,jdbc(这里用postgresql)包到构建路径 三、在psql中建库、建表的脚本。 四、创建java类 student表对应的pojo对象 映射文件cn/...

wangxuwei
2016/01/09
744
0
【第一章】 Spring概述 —— 跟我学Spring3

1.1 Spring概括 1.1.1 Spring是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互...

C-Kellen
2016/02/02
33
0

没有更多内容

加载失败,请刷新页面

加载更多

解析JQuery中each方法的使用

each() 方法规定为每个匹配元素规定运行的函数。写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 概述: each() 方法规定为每个匹配...

前端攻城小牛
3分钟前
0
0
深入解析Vue开发动态刷新Echarts组件的教程

需求背景:dashboard作为目前企业中后台产品的“门面”,如何更加实时、高效、炫酷的对统计数据进行展示,是值得前端开发工程师和UI设计师共同思考的一个问题。今天就从0开始,封装一个动态渲...

peakedness丶
16分钟前
2
0
memcached

memcached 为了避免内存碎片化(传统的内存管理方式是,使用完通过malloc分配的内存后通过free来回收内存,这种方式容易产生内存碎片并降低操作系统对内存的管理效率),采用了 slab allocatio...

Cobbage
17分钟前
2
0
keepalived的介绍及配置高可用集群

12月19日任务 18.1 集群介绍 18.2 keepalived介绍 18.3/18.4/18.5 用keepalived配置高可用集群 集群介绍 根据功能划分为2类:高可用和负载均衡 高可用集群:通常为两台服务器,一台工作,另外...

robertt15
18分钟前
5
0
WiFi攻击的三种方式

导读 WiFi的安全问题已经引起了不少的使用者重视,甚至已经出现草木皆兵的现象。那么黑客到底是如何做到绕过身份验证来获取WiFi使用权的呢?主要有以下三种方式,其中最后一种方式十分简单。 ...

问题终结者
32分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部