文档章节

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概述 —— 跟我学Spring3

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

C-Kellen
2016/02/02
33
0
搜索引擎--Compass

Compass是一个强大的,事务的,高性能的对象/搜索引擎映射(OSEM:object/search engine mapping)与一个Java持久层框架.Compass包括: 搜索引擎抽象层(使用Lucene搜索引荐), OSEM (Object/Search ...

匿名
2008/09/07
30.9K
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nexus Repository Manager 搭建私有docker仓库

Nexus Repository Manager 搭建私有docker仓库 2018年05月08日 14:44:23 阅读数:115 1.下载nexus3的镜像: docker pull sonatype/nexus3 2.使用镜像启动一个容器: docker run -d --name n...

linjin200
8分钟前
0
0
大数据技术的发展趋势

大数据领域已经涌现出了大量新的技术,它们成为大数据采集、存储、处理和呈现的有力武器。这些技术下一步将如何发展?它们之中哪些技术 将广为流行?又会诞生哪些新的技术? 技术趋向多样化,...

董黎明
10分钟前
1
0
谷歌浏览器插件入门示例

实现:任何网址实现图片下载和获取当前域名的cookies的json字符串。 图片下载是给小白用的,可以选中批量下载,获取cookies 是为了方便程序员调试用。 获取cookies: git地址: https://gite...

NLGBZJ
12分钟前
2
0
152. Maximum Product Subarray - LeetCode

Question 152. Maximum Product Subarray Solution 题目大意:求数列中连续子序列的最大连乘积 思路:动态规划实现,现在动态规划理解的还不透,照着公式往上套的,这个问题要注意正负,需要...

yysue
13分钟前
0
0
IDEA工具 jdk,tomcat,maven 配置

设置JDK、tomcat、maven的版本 一、JDK      如果下拉列表没有,SDKS ---> + ----> 选择下载的JDK目录 ---> APPLY OK    二、tomcat 三、Maven    四、生成 git 本地创库...

君千殇520
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部