"+handlermethod.getbean().getclass().getname()); public void aftercompletion(httpservletrequest req, HttpServletResponse resp, Object handler, Excepti

Similar documents
将 MD5 的工具类拷贝到项目中 二 微服务模块的搭建 我们将权限的查询放到一个单独的模块中, 这个模块提供接口供给消费者远程调用 (RPC), 这次范例是微服开发的雏形, 在以后你使用 springcloud 的时候会使用到今天的概念 1 使用 maven 创建新的模块 (microboot-sh

Flume-ng与Mysql整合开发

新・解きながら学ぶJava

untitled

PrintWriter s = new PrintWriter(writer); ex.printstacktrace(s); mv.addobject("exception", writer.tostring()); mv.setviewname("error"); return

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

EJB-Programming-4-cn.doc

Microsoft Word - 01.DOC

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Chapter 9: Objects and Classes

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

RUN_PC連載_10_.doc

使用Cassandra和Spark 2.0实现Rest API服务

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问

拦截器(Interceptor)的学习

本章学习目标 小风 Java 实战系列教程 Shiro 核心功能 Shiro 的 Web 集成 Spring 与 Shiro 整合 SpringBoot 整合 Shiro 1. Shiro 核心功能 1.1. RBAC 模型 在 RBAC 的模型, 涉及到三个关键的元素 : 1) 用户 : 系统的使

Microsoft Word - 第3章.doc

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

FileMaker 16 ODBC 和 JDBC 指南

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

RUN_PC連載_12_.doc

EJB-Programming-3.PDF

FileMaker 15 ODBC 和 JDBC 指南

JBuilder Weblogic

chp6.ppt

Microsoft Word - 朱晔和你聊Spring系列S1E4:灵活但不算好用的SpringMVC.docx

Java

在 ongodb 中实现强事务

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

untitled

基于ECO的UML模型驱动的数据库应用开发1.doc

IoC容器和Dependency Injection模式.doc

Microsoft PowerPoint - ch6 [相容模式]

untitled

正文(新).indd

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Oracle高级复制配置手册_业务广告_.doc

untitled

Perl

untitled

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

untitled

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

untitled

回滚段探究

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ

javaexample-02.pdf

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

untitled

<!-- import outer proper

JavaIO.PDF

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Hive:用Java代码通过JDBC连接Hiveserver

在Spring中使用Kafka:Producer篇

untitled

untitled

Chapter 9: Objects and Classes

第一章 章标题-F2 上空24,下空24

jdbc:hsqldb:hsql: jdbc:hsqldb:hsqls: jdbc:hsqldb:http: jdbc:hsqldb:https: //localhost // :9500 / /dbserver.somedomain.com /an_alias /enrollme

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

RunPC2_.doc

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

使用MapReduce读取XML文件

f2.eps

Windows 2000 Server for T100

《大话设计模式》第一章

Microsoft Word - Learn Objective-C.doc

Simulator By SunLingxi 2003

untitled

untitled

國家圖書館典藏電子全文

PowerPoint 演示文稿

SQL Server SQL Server SQL Mail Windows NT

第一章

目錄

Swing-02.pdf

untitled

untitled

概述

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

mvc

untitled

Serial ATA ( Silicon Image SiI3114)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 5 (4) S A T A... 8 (5) S A T A... 10

java2d-4.PDF

Transcription:

SpringBoot 的配置 一 拦截器的配置 1 定义一个表单 <form action="/add" method="post"> 用户名 :<input type="text" name="name"/><br/> 密 码 :<input type="password" name="pwd"/><br/> <input type="submit" value=" 提交 "/> </form> </body> 2 定义表单数据的控制器 @RequestMapping("/addPre") public String addpre() { return "pages/emp"; @RequestMapping("/add") @ResponseBody public Object add(emp emp) { System.out.println(emp); return emp; 3 定义拦截器 package com.sun.interceptor; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.springframework.context.annotation.configuration; import org.springframework.web.method.handlermethod; import org.springframework.web.servlet.handlerinterceptor; import org.springframework.web.servlet.modelandview; @Configuration public class MyInterceptor implements HandlerInterceptor{ public boolean prehandle(httpservletrequest req, HttpServletResponse resp, Object handler) throws Exception { HandlerMethod handlermethod = (HandlerMethod) handler; System.out.println("++++++++++++++ 处理表单参数之前 : "+handlermethod.getbean().getclass().getname()); return true; public void posthandle(httpservletrequest req, HttpServletResponse resp, Object handler, ModelAndView arg3) throws Exception { HandlerMethod handlermethod = (HandlerMethod) handler; System.out.println("++++++++++++++ 目标控制器正在处理表单参数 :

"+handlermethod.getbean().getclass().getname()); public void aftercompletion(httpservletrequest req, HttpServletResponse resp, Object handler, Exception arg3) throws Exception { HandlerMethod handlermethod = (HandlerMethod) handler; System.out.println("++++++++++++++ 目标控制器处理表单参数完毕 : "+handlermethod.getbean().getclass().getname()); 4 定义配置类 package com.sun.microboot.config; import org.springframework.context.annotation.configuration; import org.springframework.web.servlet.config.annotation.interceptorregistry; import org.springframework.web.servlet.config.annotation.webmvcconfigureradapter; import com.sun.interceptor.myinterceptor; @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter{ public void addinterceptors(interceptorregistry registry) { registry.addinterceptor(new MyInterceptor()).addPathPatterns("/**"); super.addinterceptors(registry); 5 测试 http://localhost/addpre ++++++++++++++ 处理表单参数之前 :com.sun.controller.empcontroller ++++++++++++++ 目标控制器正在处理表单参数 :com.sun.controller.empcontroller ++++++++++++++ 目标控制器处理表单参数完毕 :com.sun.controller.empcontroller ++++++++++++++ 处理表单参数之前 :com.sun.controller.empcontroller Emp [eid=null, name=, age=null, sal=null, email=null, hiredate=null] ++++++++++++++ 目标控制器正在处理表单参数 :com.sun.controller.empcontroller ++++++++++++++ 目标控制器处理表单参数完毕 :com.sun.controller.empcontroller 二 AOP 的配置 1 定义业务层接口 package com.sun.service.impl; import org.springframework.stereotype.service; import com.sun.service.iempservice; @Service public class EmpServiceImpl implements IEmpService{

public boolean add() throws Exception { System.out.println(" 插入数据成功 "); return true; public boolean update() throws Exception { System.out.println(" 修改数据成功 "); return false; 2 业务层的实现类 package com.sun.service; public interface IEmpService { /** * 增加数据 * @return 成功返回 true, 否则返回 false * @throws Exception */ public boolean add() throws Exception; /** * 实现数据的修改 * @return 成功返回 true 否则返回 false * @throws Exception */ public boolean update() throws Exception; 3 导入 AOP 开发包 4 定义切面类 package com.sun.aop; import java.util.arrays; <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-aop</artifactid> import org.aspectj.lang.proceedingjoinpoint; import org.aspectj.lang.annotation.around; import org.aspectj.lang.annotation.aspect; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.stereotype.component; @Aspect @Component

public class EmpAop { Logger logger = LoggerFactory.getLogger(EmpAop.class); @Around("execution(* com.sun.service..*.*(..))") public Object arroundinvoke(proceedingjoinpoint point) throws Throwable{ // 取得参数 logger.info(" 执行方法之前的参数是 :"+Arrays.toString(point.getArgs())); // 执行目标方法 Object result = point.proceed(); // 将目标方法返回值继续返回给调用处 logger.info(" 执行方法后取得返回值 :"+result); return result; 5 在控制层调用业务层的方法 @RequestMapping("/add") @ResponseBody public Object add(emp emp) throws Exception { this.empservice.add(); System.out.println(emp); return emp; 6 测试 http://localhost/add 三 Druid 连接池 1 创建数据库脚本执行 -- 删除数据库 DROP DATABASE IF EXISTS bootdb; -- 创建数据库 CREATE DATABASE bootdb CHARACTER SET utf8; -- 使用数据库 USE bootdb; -- 删除数据表 DROP TABLE IF EXISTS dept; -- 创建数据表 CREATE TABLE dept( deptno INT AUTO_INCREMENT, title VARCHAR(100), CONSTRAINT pk_deptno PRIMARY KEY(deptno) ); INSERT INTO dept(title)values(' 研发部门 '); INSERT INTO dept(title)values(' 测试部门 '); INSERT INTO dept(title)values(' 市场部门 ');

2 导入 mysql 驱动包和 Druid 连接池的开发包 <!-- mysql 驱动包 --> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>5.1.20</version> <!-- Druid 开发包 --> <groupid>com.alibaba</groupid> <artifactid>druid</artifactid> <version>1.1.2</version> <!-- mybatis 的开发包 --> <groupid>org.mybatis.spring.boot</groupid> <artifactid>mybatis-spring-boot-starter</artifactid> <version>1.3.0</version> </dependencies> 3 在子 pom 文件在次导入驱动和连接池的开发包 <!-- mysql 驱动包 --> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <!-- Druid 开发包 --> <groupid>com.alibaba</groupid> <artifactid>druid</artifactid> <!-- mybatis 开发包 --> <groupid>org.mybatis.spring.boot</groupid> <artifactid>mybatis-spring-boot-starter</artifactid> 4 配置 application.yml 文件 server: port: 80 # 端口号 spring: # 表示该配置是交给 spring 进行处理 messages: # 处理的内容是资源文件 basename: i18n/messages,i18n/pages # 资源看文件爱你所在的目录和名称 datasource: type: com.alibaba.druid.pool.druiddatasource driver-class-name: com.mysql.jdbc.driver

url: jdbc:mysql://localhost:3306/bootdb username: root password: 1234 dbcp2: min-idle: 5 # 指定连接池维持的最少连接数 initial-size: 10 # 初始化连接数 max-total: 100 # 最大连接数 max-wait-millis: 1000 # 最大连接等待时间 5 导入 Druid 连接池需要集合 ORM 框架一起使用, 因此需要导入 Mybatis-spring-boot-starter 的开发包 <!-- mybatis 集合开发包 --> <groupid>org.mybatis.spring.boot</groupid> <artifactid>mybatis-spring-boot-starter</artifactid> 6 使用 Junit 进行测试 package com.sun.test; import java.sql.sqlexception; import javax.annotation.resource; import javax.sql.datasource; import org.junit.test; import org.junit.runner.runwith; import org.springframework.boot.test.context.springboottest; import org.springframework.test.context.junit4.springjunit4classrunner; import org.springframework.test.context.web.webappconfiguration; import com.sun.springbootstartclass; @SpringBootTest(classes=SpringBootStartClass.class) @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration public class TestDataSource { @Resource private DataSource datasource; @Test public void testdatasource() { try { System.out.println(this.dataSource.getConnection()); catch (SQLException e) { e.printstacktrace();