文档章节

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+mybatis的一个简单例子

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

wangxuwei
2016/01/09
744
0
spring 学习(五):spring 事务

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

希希里之海
08/20
0
0
【第一章】 Spring概述 —— 跟我学Spring3

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

C-Kellen
2016/02/02
33
0

没有更多内容

加载失败,请刷新页面

加载更多

最重要的是做什么,而不是怎么做。

最重要的是做什么,而不是怎么做。 做什么是战略,怎么做是战术。将军下令说,天黑前拿下这座山头,这是战略。手下的士兵可以不知道为什么要拿下这座山头,还非得是天黑之前,但士兵必须知道...

我是菜鸟我骄傲
29分钟前
0
0
w, vmstat, top, sar, nload命令查看系统状态信息

w/uptime 查看系统负载 cat /proc/cpuinfo 查看cpu核数 vmstat 监控系统状态,用法 vmstat 1,关键的几列: r, b, swpd, si, so, bi, bo, us, wa top 查看进程使用资源情况 top -c 显示详细的...

野雪球
今天
2
0
小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
3
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
2
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部