forked from mty2015/study_notes
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
409 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
<groupId>cnblogs.jcli</groupId> | ||
<artifactId>spring</artifactId> | ||
<packaging>war</packaging> | ||
<version>0.0.1-SNAPSHOT</version> | ||
<name>spring Maven Webapp</name> | ||
<url>http://maven.apache.org</url> | ||
|
||
<properties> | ||
<org.springframework.version>4.0.4.RELEASE</org.springframework.version> | ||
<!-- mybatis generator configuration --> | ||
|
||
</properties> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>com.googlecode.lambdaj</groupId> | ||
<artifactId>lambdaj</artifactId> | ||
<version>2.3.3</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>log4j</groupId> | ||
<artifactId>log4j</artifactId> | ||
<version>1.2.17</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>commons-lang</groupId> | ||
<artifactId>commons-lang</artifactId> | ||
<version>2.6</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.codehaus.jackson</groupId> | ||
<artifactId>jackson-mapper-asl</artifactId> | ||
<version>1.9.10</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-jdbc</artifactId> | ||
<version>${org.springframework.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-aspects</artifactId> | ||
<version>${org.springframework.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-webmvc</artifactId> | ||
<version>${org.springframework.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-test</artifactId> | ||
<version>${org.springframework.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.mybatis</groupId> | ||
<artifactId>mybatis</artifactId> | ||
<version>3.2.3</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.mybatis</groupId> | ||
<artifactId>mybatis-spring</artifactId> | ||
<version>1.2.1</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>mysql</groupId> | ||
<artifactId>mysql-connector-java</artifactId> | ||
<version>5.1.26</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>commons-dbcp</groupId> | ||
<artifactId>commons-dbcp</artifactId> | ||
<version>1.4</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>junit</groupId> | ||
<artifactId>junit</artifactId> | ||
<version>4.11</version> | ||
<scope>test</scope> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.dbunit</groupId> | ||
<artifactId>dbunit</artifactId> | ||
<version>2.4.9</version> | ||
<scope>test</scope> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.slf4j</groupId> | ||
<artifactId>slf4j-api</artifactId> | ||
<version>1.7.5</version> | ||
<scope>test</scope> | ||
</dependency> | ||
|
||
|
||
|
||
|
||
<dependency> | ||
<groupId>com.qiniu</groupId> | ||
<artifactId>sdk</artifactId> | ||
<version>6.0.7</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.apache.geronimo.specs</groupId> | ||
<artifactId>geronimo-servlet_2.5_spec</artifactId> | ||
<version>1.2</version> | ||
<scope>provided</scope> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>opensymphony</groupId> | ||
<artifactId>sitemesh</artifactId> | ||
<version>2.4.2</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>jstl</groupId> | ||
<artifactId>jstl</artifactId> | ||
<version>1.2</version> | ||
</dependency> | ||
|
||
|
||
|
||
|
||
</dependencies> | ||
<build> | ||
<finalName>spring</finalName> | ||
</build> | ||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package spring; | ||
|
||
import javax.servlet.http.HttpServletRequest; | ||
|
||
import org.springframework.stereotype.Controller; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.ResponseBody; | ||
|
||
import spring.util.ApiVersion; | ||
|
||
@Controller | ||
@RequestMapping("/{version}/") | ||
public class HelloController { | ||
|
||
@RequestMapping("hello/") | ||
@ApiVersion(1) | ||
@ResponseBody | ||
public String hello(HttpServletRequest request){ | ||
System.out.println("haha1.........."); | ||
|
||
return "hello"; | ||
} | ||
|
||
@RequestMapping("hello/") | ||
@ApiVersion(2) | ||
@ResponseBody | ||
public String hello2(HttpServletRequest request){ | ||
System.out.println("haha2........."); | ||
|
||
return "hello"; | ||
} | ||
|
||
@RequestMapping("hello/") | ||
@ApiVersion(5) | ||
@ResponseBody | ||
public String hello5(HttpServletRequest request){ | ||
System.out.println("haha5........."); | ||
|
||
return "hello"; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package spring.util; | ||
|
||
import java.lang.annotation.Documented; | ||
import java.lang.annotation.ElementType; | ||
import java.lang.annotation.Retention; | ||
import java.lang.annotation.RetentionPolicy; | ||
import java.lang.annotation.Target; | ||
|
||
import org.springframework.web.bind.annotation.Mapping; | ||
|
||
/** | ||
* | ||
* 接口版本标识注解 | ||
* | ||
*/ | ||
@Target({ElementType.METHOD, ElementType.TYPE}) | ||
@Retention(RetentionPolicy.RUNTIME) | ||
@Documented | ||
@Mapping | ||
public @interface ApiVersion { | ||
int value(); | ||
} |
45 changes: 45 additions & 0 deletions
45
spring/samples/src/java/spring/util/ApiVesrsionCondition.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package spring.util; | ||
|
||
import java.util.regex.Matcher; | ||
import java.util.regex.Pattern; | ||
|
||
import javax.servlet.http.HttpServletRequest; | ||
|
||
import org.springframework.web.servlet.mvc.condition.RequestCondition; | ||
|
||
public class ApiVesrsionCondition implements RequestCondition<ApiVesrsionCondition> { | ||
|
||
// 路径中版本的前缀, 这里用 /v[1-9]/的形式 | ||
private final static Pattern VERSION_PREFIX_PATTERN = Pattern.compile("v(\\d+)/"); | ||
|
||
private int apiVersion; | ||
|
||
public ApiVesrsionCondition(int apiVersion){ | ||
this.apiVersion = apiVersion; | ||
} | ||
|
||
public ApiVesrsionCondition combine(ApiVesrsionCondition other) { | ||
// 采用最后定义优先原则,则方法上的定义覆盖类上面的定义 | ||
return new ApiVesrsionCondition(other.getApiVersion()); | ||
} | ||
|
||
public ApiVesrsionCondition getMatchingCondition(HttpServletRequest request) { | ||
Matcher m = VERSION_PREFIX_PATTERN.matcher(request.getPathInfo()); | ||
if(m.find()){ | ||
Integer version = Integer.valueOf(m.group(1)); | ||
if(version >= this.apiVersion) // 如果请求的版本号大于配置版本号, 则满足 | ||
return this; | ||
} | ||
return null; | ||
} | ||
|
||
public int compareTo(ApiVesrsionCondition other, HttpServletRequest request) { | ||
// 优先匹配最新的版本号 | ||
return other.getApiVersion() - this.apiVersion; | ||
} | ||
|
||
public int getApiVersion() { | ||
return apiVersion; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package spring.util; | ||
|
||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
|
||
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; | ||
|
||
public class AuthInteceptor extends HandlerInterceptorAdapter | ||
{ | ||
|
||
@Override | ||
public boolean preHandle(HttpServletRequest request, | ||
HttpServletResponse response, Object handler) throws Exception | ||
{ | ||
System.out.println("URI: " + request.getRequestURI()); | ||
return true; | ||
} | ||
|
||
|
||
} |
26 changes: 26 additions & 0 deletions
26
spring/samples/src/java/spring/util/CustomRequestMappingHandlerMapping.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package spring.util; | ||
|
||
import java.lang.reflect.Method; | ||
|
||
import org.springframework.core.annotation.AnnotationUtils; | ||
import org.springframework.web.servlet.mvc.condition.RequestCondition; | ||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; | ||
|
||
public class CustomRequestMappingHandlerMapping extends RequestMappingHandlerMapping { | ||
|
||
@Override | ||
protected RequestCondition<ApiVesrsionCondition> getCustomTypeCondition(Class<?> handlerType) { | ||
ApiVersion apiVersion = AnnotationUtils.findAnnotation(handlerType, ApiVersion.class); | ||
return createCondition(apiVersion); | ||
} | ||
|
||
@Override | ||
protected RequestCondition<ApiVesrsionCondition> getCustomMethodCondition(Method method) { | ||
ApiVersion apiVersion = AnnotationUtils.findAnnotation(method, ApiVersion.class); | ||
return createCondition(apiVersion); | ||
} | ||
|
||
private RequestCondition<ApiVesrsionCondition> createCondition(ApiVersion apiVersion) { | ||
return apiVersion == null ? null : new ApiVesrsionCondition(apiVersion.value()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package spring.util; | ||
|
||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.context.annotation.Configuration; | ||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; | ||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; | ||
|
||
@Configuration | ||
public class WebConfig extends WebMvcConfigurationSupport{ | ||
|
||
@Override | ||
@Bean | ||
public RequestMappingHandlerMapping requestMappingHandlerMapping() { | ||
RequestMappingHandlerMapping handlerMapping = new CustomRequestMappingHandlerMapping(); | ||
handlerMapping.setOrder(0); | ||
handlerMapping.setInterceptors(getInterceptors()); | ||
return handlerMapping; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
|
||
<beans xmlns="http://www.springframework.org/schema/beans" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" | ||
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" | ||
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:context="http://www.springframework.org/schema/context" | ||
xsi:schemaLocation=" | ||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd | ||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd | ||
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd | ||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd | ||
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> | ||
|
||
|
||
|
||
</beans> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
log4j.rootLogger=WARN, stdout | ||
|
||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender | ||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout | ||
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n | ||
|
||
|
||
log4j.logger.java.sql=DEBUG | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<beans xmlns="http://www.springframework.org/schema/beans" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" | ||
xmlns:context="http://www.springframework.org/schema/context" | ||
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" | ||
xmlns:util="http://www.springframework.org/schema/util" | ||
xsi:schemaLocation=" | ||
http://www.springframework.org/schema/beans | ||
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd | ||
http://www.springframework.org/schema/context | ||
http://www.springframework.org/schema/context/spring-context-3.0.xsd | ||
http://www.springframework.org/schema/mvc | ||
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd | ||
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd | ||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> | ||
|
||
|
||
|
||
<bean name="haha" class="java.lang.Object"></bean> | ||
|
||
<bean name="myInt" class="spring.util.AuthInteceptor"></bean> | ||
<bean class="org.springframework.web.servlet.handler.MappedInterceptor"> | ||
<constructor-arg> | ||
<list> | ||
<value>/*</value> | ||
</list> | ||
</constructor-arg> | ||
<constructor-arg ref="myInt"></constructor-arg> | ||
</bean> | ||
|
||
<context:component-scan base-package="spring" /> | ||
|
||
</beans> |
Oops, something went wrong.