parent
							
								
									59a41de04e
								
							
						
					
					
						commit
						5b04c4fbc9
					
				| @ -0,0 +1,25 @@ | ||||
| /target/ | ||||
| !.mvn/wrapper/maven-wrapper.jar | ||||
| 
 | ||||
| ### STS ### | ||||
| .apt_generated | ||||
| .classpath | ||||
| .factorypath | ||||
| .project | ||||
| .settings | ||||
| .springBeans | ||||
| .sts4-cache | ||||
| 
 | ||||
| ### IntelliJ IDEA ### | ||||
| .idea | ||||
| *.iws | ||||
| *.iml | ||||
| *.ipr | ||||
| 
 | ||||
| ### NetBeans ### | ||||
| /nbproject/private/ | ||||
| /nbbuild/ | ||||
| /dist/ | ||||
| /nbdist/ | ||||
| /.nb-gradle/ | ||||
| /build/ | ||||
| @ -0,0 +1,164 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <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>com.gitee.sop</groupId> | ||||
|     <artifactId>sop-springmvc</artifactId> | ||||
|     <name>sop-springmvc</name> | ||||
|     <packaging>war</packaging> | ||||
|     <version>1.0.0-SNAPSHOT</version> | ||||
| 
 | ||||
|     <properties> | ||||
|         <java-version>1.8</java-version> | ||||
|         <org.springframework-version>5.0.7.RELEASE</org.springframework-version> | ||||
|         <org.aspectj-version>1.6.10</org.aspectj-version> | ||||
|         <org.slf4j-version>1.6.6</org.slf4j-version> | ||||
|     </properties> | ||||
| 
 | ||||
|     <dependencies> | ||||
|         <!-- sop接入依赖 --> | ||||
|         <dependency> | ||||
|             <groupId>com.gitee.sop</groupId> | ||||
|             <artifactId>sop-service-common</artifactId> | ||||
|             <version>1.2.0-SNAPSHOT</version> | ||||
|         </dependency> | ||||
|         <!-- eureka 服务发现 --> | ||||
|         <dependency> | ||||
|             <groupId>com.netflix.eureka</groupId> | ||||
|             <artifactId>eureka-client</artifactId> | ||||
|             <version>1.7.0</version> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <!-- sop接入依赖 end --> | ||||
| 
 | ||||
|         <!-- Spring --> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework</groupId> | ||||
|             <artifactId>spring-context</artifactId> | ||||
|             <version>${org.springframework-version}</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework</groupId> | ||||
|             <artifactId>spring-webmvc</artifactId> | ||||
|             <version>${org.springframework-version}</version> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <!-- jackson --> | ||||
|         <dependency> | ||||
|             <groupId>com.fasterxml.jackson.core</groupId> | ||||
|             <artifactId>jackson-core</artifactId> | ||||
|             <version>2.9.6</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>com.fasterxml.jackson.core</groupId> | ||||
|             <artifactId>jackson-databind</artifactId> | ||||
|             <version>2.9.6</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>com.fasterxml.jackson.core</groupId> | ||||
|             <artifactId>jackson-annotations</artifactId> | ||||
|             <version>2.9.6</version> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <!-- AspectJ --> | ||||
|         <dependency> | ||||
|             <groupId>org.aspectj</groupId> | ||||
|             <artifactId>aspectjrt</artifactId> | ||||
|             <version>${org.aspectj-version}</version> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <!-- Logging --> | ||||
|         <dependency> | ||||
|             <groupId>org.slf4j</groupId> | ||||
|             <artifactId>slf4j-api</artifactId> | ||||
|             <version>${org.slf4j-version}</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.slf4j</groupId> | ||||
|             <artifactId>jcl-over-slf4j</artifactId> | ||||
|             <version>${org.slf4j-version}</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.slf4j</groupId> | ||||
|             <artifactId>slf4j-log4j12</artifactId> | ||||
|             <version>${org.slf4j-version}</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|        <dependency> | ||||
| 		    <groupId>log4j</groupId> | ||||
| 		    <artifactId>log4j</artifactId> | ||||
| 		    <version>1.2.17</version> | ||||
| 		</dependency> | ||||
| 
 | ||||
| 
 | ||||
|         <!-- @Inject --> | ||||
|         <dependency> | ||||
|             <groupId>javax.inject</groupId> | ||||
|             <artifactId>javax.inject</artifactId> | ||||
|             <version>1</version> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <!-- Servlet --> | ||||
|         <dependency> | ||||
|             <groupId>javax.servlet</groupId> | ||||
|             <artifactId>servlet-api</artifactId> | ||||
|             <version>2.5</version> | ||||
|             <scope>provided</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>javax.servlet.jsp</groupId> | ||||
|             <artifactId>jsp-api</artifactId> | ||||
|             <version>2.1</version> | ||||
|             <scope>provided</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>javax.servlet</groupId> | ||||
|             <artifactId>jstl</artifactId> | ||||
|             <version>1.2</version> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <!-- Test --> | ||||
|         <dependency> | ||||
|             <groupId>junit</groupId> | ||||
|             <artifactId>junit</artifactId> | ||||
|             <version>4.8</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework</groupId> | ||||
|             <artifactId>spring-tx</artifactId> | ||||
|             <version>5.1.5.RELEASE</version> | ||||
|             <scope>compile</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.projectlombok</groupId> | ||||
|             <artifactId>lombok</artifactId> | ||||
|             <version>1.18.4</version> | ||||
|             <scope>provided</scope> | ||||
|         </dependency> | ||||
|     </dependencies> | ||||
|     <build> | ||||
|         <plugins> | ||||
|             <!-- 打包时跳过测试 --> | ||||
|             <plugin> | ||||
|                 <groupId>org.apache.maven.plugins</groupId> | ||||
|                 <artifactId>maven-surefire-plugin</artifactId> | ||||
|                 <version>2.18.1</version> | ||||
|                 <configuration> | ||||
|                     <skipTests>true</skipTests> | ||||
|                 </configuration> | ||||
|             </plugin> | ||||
| 
 | ||||
|             <plugin> | ||||
|                 <groupId>org.apache.maven.plugins</groupId> | ||||
|                 <artifactId>maven-compiler-plugin</artifactId> | ||||
|                 <configuration> | ||||
|                     <source>${java-version}</source> | ||||
|                     <target>${java-version}</target> | ||||
|                     <encoding>UTF-8</encoding> | ||||
|                 </configuration> | ||||
|             </plugin> | ||||
|         </plugins> | ||||
|     </build> | ||||
| </project> | ||||
| @ -0,0 +1,54 @@ | ||||
| package com.gitee.app; | ||||
| 
 | ||||
| import com.gitee.app.model.Goods; | ||||
| import com.gitee.sop.servercommon.annotation.ApiMapping; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.stereotype.Controller; | ||||
| import org.springframework.ui.Model; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RequestMethod; | ||||
| import org.springframework.web.bind.annotation.ResponseBody; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.text.DateFormat; | ||||
| import java.util.Date; | ||||
| import java.util.Locale; | ||||
| 
 | ||||
| /** | ||||
|  * Handles requests for the application home page. | ||||
|  */ | ||||
| @Controller | ||||
| public class HomeController { | ||||
| 	 | ||||
| 	private static final Logger logger = LoggerFactory.getLogger(HomeController.class); | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Simply selects the home view to render by returning its name. | ||||
| 	 */ | ||||
| 	@RequestMapping(value = "/", method = RequestMethod.GET) | ||||
| 	public String home(Locale locale, Model model) { | ||||
| 		logger.info("Welcome home! The client locale is {}.", locale); | ||||
| 		 | ||||
| 		Date date = new Date(); | ||||
| 		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); | ||||
| 		 | ||||
| 		String formattedDate = dateFormat.format(date); | ||||
| 		 | ||||
| 		model.addAttribute("serverTime", formattedDate ); | ||||
| 		 | ||||
| 		return "home"; | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	@ApiMapping(value = "springmvc.goods.get") | ||||
| 	@ResponseBody | ||||
| 	public Goods getGoods(Goods param) { | ||||
| 		Goods goods = new Goods(); | ||||
| 		goods.setId(1L); | ||||
| 		goods.setGoods_name(param.getGoods_name() + " 1"); | ||||
| 		goods.setPrice(new BigDecimal(5000)); | ||||
| 		return goods; | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,61 @@ | ||||
| package com.gitee.app.config; | ||||
| 
 | ||||
| import com.netflix.appinfo.ApplicationInfoManager; | ||||
| import com.netflix.appinfo.InstanceInfo; | ||||
| import com.netflix.appinfo.MyDataCenterInstanceConfig; | ||||
| import com.netflix.discovery.DefaultEurekaClientConfig; | ||||
| import com.netflix.discovery.DiscoveryManager; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.PropertySource; | ||||
| 
 | ||||
| import javax.servlet.ServletContextEvent; | ||||
| import javax.servlet.ServletContextListener; | ||||
| import java.net.InetAddress; | ||||
| import java.net.UnknownHostException; | ||||
| 
 | ||||
| /** | ||||
|  * 初始化Eureka Client | ||||
|  * @author thc | ||||
|  */ | ||||
| @Slf4j | ||||
| public class EurekaInitAndRegisterListener implements ServletContextListener { | ||||
| 
 | ||||
|     @Override | ||||
|     public void contextInitialized(ServletContextEvent sce) { | ||||
|         // 初始化Eureka Client
 | ||||
|         log.info("Eureka初始化完成,正在注册Eureka Server"); | ||||
|         DiscoveryManager.getInstance().initComponent(new MyInstanceConfig(), new DefaultEurekaClientConfig()); | ||||
|         ApplicationInfoManager.getInstance().setInstanceStatus(InstanceInfo.InstanceStatus.UP); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * * Notification that the servlet context is about to be shut down. | ||||
|      * * All servlets and filters have been destroy()ed before any | ||||
|      * * ServletContextListeners are notified of context | ||||
|      * * destruction. | ||||
|      * | ||||
|      * @param sce | ||||
|      */ | ||||
|     @Override | ||||
|     public void contextDestroyed(ServletContextEvent sce) { | ||||
|         DiscoveryManager.getInstance().shutdownComponent(); | ||||
|     } | ||||
| 
 | ||||
|     @Configuration | ||||
|     @PropertySource(value = "classpath:eureka-client.properties") | ||||
|     public static class AppConfig { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public static class MyInstanceConfig extends MyDataCenterInstanceConfig { | ||||
|         @Override | ||||
|         public String getHostName(boolean refresh) { | ||||
|             try { | ||||
|                 return InetAddress.getLocalHost().getHostAddress(); | ||||
|             } catch (UnknownHostException e) { | ||||
|                 return super.getHostName(refresh); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,20 @@ | ||||
| package com.gitee.app.config; | ||||
| 
 | ||||
| import com.gitee.sop.servercommon.configuration.AlipayServiceConfiguration; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; | ||||
| 
 | ||||
| /** | ||||
|  * 使用支付宝开放平台功能 | ||||
|  * | ||||
|  * @author tanghc | ||||
|  */ | ||||
| public class OpenServiceConfig extends AlipayServiceConfiguration { | ||||
| 
 | ||||
|     @Bean | ||||
|     @Override | ||||
|     public RequestMappingHandlerMapping requestMappingHandlerMapping() { | ||||
|         return super.requestMappingHandlerMapping(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.gitee.app.model; | ||||
| 
 | ||||
| 
 | ||||
| import lombok.Data; | ||||
| 
 | ||||
| import javax.validation.constraints.NotBlank; | ||||
| import java.math.BigDecimal; | ||||
| 
 | ||||
| @Data | ||||
| public class Goods { | ||||
| 
 | ||||
|     private Long id; | ||||
|     @NotBlank(message = "goods_name不能为空") | ||||
|     private String goods_name; | ||||
|     private BigDecimal price; | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,27 @@ | ||||
| # tomcat端口,根据实际情况填 | ||||
| server.port=2223 | ||||
| # 应用名称serviceId,根据实际情况填 | ||||
| spring.application.name=sop-springmvc | ||||
| # 注册中心地址,根据实际情况填 | ||||
| eureka.url=http://localhost:1111/eureka/ | ||||
| # zookeeper地址,根据实际情况填 | ||||
| spring.cloud.zookeeper.connect-string=localhost:2181 | ||||
| 
 | ||||
| # ----------- 以下内容不用改 ----------- | ||||
| 
 | ||||
| # 控制是否注册自身到eureka中,本项目虽然不对外提供服务,但需要Eureka监控,在Eureka列表上显示 | ||||
| eureka.registration.enabled=true | ||||
| # eureka相关配置 | ||||
| # 默认为true,以实现更好的基于区域的负载平衡。 | ||||
| eureka.preferSameZone=true | ||||
| # 是否要使用基于DNS的查找来确定其他eureka服务器 | ||||
| eureka.shouldUseDns=false | ||||
| # 由于shouldUseDns为false,因此我们使用以下属性来明确指定到eureka服务器的路由(eureka Server地址) | ||||
| eureka.serviceUrl.default=${eureka.url} | ||||
| eureka.decoderName=JacksonJson | ||||
| # 客户识别此服务的虚拟主机名,这里指的是eureka服务本身 | ||||
| eureka.vipAddress=${spring.application.name} | ||||
| #服务指定应用名,这里指的是eureka服务本身 | ||||
| eureka.name=${spring.application.name} | ||||
| #服务将被识别并将提供请求的端口 | ||||
| eureka.port=${server.port} | ||||
| @ -0,0 +1,41 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> | ||||
| <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> | ||||
| 
 | ||||
| 	<!-- Appenders --> | ||||
| 	<appender name="console" class="org.apache.log4j.ConsoleAppender"> | ||||
| 		<param name="Target" value="System.out" /> | ||||
| 		<layout class="org.apache.log4j.PatternLayout"> | ||||
| 			<param name="ConversionPattern" value="%-5p: %c - %m%n" /> | ||||
| 		</layout> | ||||
| 	</appender> | ||||
| 	 | ||||
| 	<!-- Application Loggers --> | ||||
| 	<logger name="com.gitee"> | ||||
| 		<level value="debug" /> | ||||
| 	</logger> | ||||
| 	 | ||||
| 	<!-- 3rdparty Loggers --> | ||||
| 	<logger name="org.springframework.core"> | ||||
| 		<level value="info" /> | ||||
| 	</logger> | ||||
| 	 | ||||
| 	<logger name="org.springframework.beans"> | ||||
| 		<level value="info" /> | ||||
| 	</logger> | ||||
| 	 | ||||
| 	<logger name="org.springframework.context"> | ||||
| 		<level value="info" /> | ||||
| 	</logger> | ||||
| 
 | ||||
| 	<logger name="org.springframework.web"> | ||||
| 		<level value="info" /> | ||||
| 	</logger> | ||||
| 
 | ||||
| 	<!-- Root Logger --> | ||||
| 	<root> | ||||
| 		<priority value="warn" /> | ||||
| 		<appender-ref ref="console" /> | ||||
| 	</root> | ||||
| 	 | ||||
| </log4j:configuration> | ||||
| @ -0,0 +1,39 @@ | ||||
| <?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:context="http://www.springframework.org/schema/context" | ||||
| 	   xmlns:mvc="http://www.springframework.org/schema/mvc" | ||||
| 	   xmlns:aop="http://www.springframework.org/schema/aop" | ||||
| 	   xsi:schemaLocation="http://www.springframework.org/schema/beans | ||||
| 						http://www.springframework.org/schema/beans/spring-beans.xsd | ||||
| 						http://www.springframework.org/schema/context | ||||
| 						http://www.springframework.org/schema/context/spring-context.xsd | ||||
| 						http://www.springframework.org/schema/mvc | ||||
| 						http://www.springframework.org/schema/mvc/spring-mvc.xsd | ||||
| 						http://www.springframework.org/schema/aop | ||||
| 						http://www.springframework.org/schema/aop/spring-aop.xsd"> | ||||
| 
 | ||||
| 	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> | ||||
| 
 | ||||
| 	<!-- 只扫描Controller类 --> | ||||
| 	<context:component-scan base-package="com.gitee.app" use-default-filters="false"> | ||||
| 		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> | ||||
| 	</context:component-scan> | ||||
| 
 | ||||
| 	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> | ||||
| 	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> | ||||
| 		<property name="prefix" value="/WEB-INF/views/" /> | ||||
| 		<property name="suffix" value=".jsp" /> | ||||
| 	</bean> | ||||
| 
 | ||||
| 	<!-- 接入SOP配置 --> | ||||
| 	<mvc:annotation-driven> | ||||
| 		<mvc:argument-resolvers> | ||||
| 			<bean class="com.gitee.sop.servercommon.param.ApiArgumentResolver"/> | ||||
| 		</mvc:argument-resolvers> | ||||
| 	</mvc:annotation-driven> | ||||
| 
 | ||||
| 	<bean class="com.gitee.app.config.OpenServiceConfig"/> | ||||
| 	<!-- 接入SOP配置 end --> | ||||
| 
 | ||||
| </beans> | ||||
| @ -0,0 +1,22 @@ | ||||
| <?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:context="http://www.springframework.org/schema/context" | ||||
|        xmlns:mvc="http://www.springframework.org/schema/mvc" | ||||
|        xmlns:aop="http://www.springframework.org/schema/aop" | ||||
|        xsi:schemaLocation="http://www.springframework.org/schema/beans | ||||
| 						http://www.springframework.org/schema/beans/spring-beans.xsd | ||||
| 						http://www.springframework.org/schema/context | ||||
| 						http://www.springframework.org/schema/context/spring-context.xsd | ||||
| 						http://www.springframework.org/schema/mvc | ||||
| 						http://www.springframework.org/schema/mvc/spring-mvc.xsd | ||||
| 						http://www.springframework.org/schema/aop | ||||
| 						http://www.springframework.org/schema/aop/spring-aop.xsd"> | ||||
| 
 | ||||
|     <!-- Root Context: defines shared resources visible to all other web components --> | ||||
|     <!-- 排除Controller类 --> | ||||
|     <context:component-scan base-package="com.gitee.app"> | ||||
|         <context:exclude-filter expression="org.springframework.stereotype.Controller" | ||||
|                                 type="annotation" /> | ||||
|     </context:component-scan> | ||||
| </beans> | ||||
| @ -0,0 +1,15 @@ | ||||
| <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> | ||||
| <%@ page session="false" pageEncoding="utf-8" %> | ||||
| <html> | ||||
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | ||||
| <head> | ||||
| 	<title>Home</title> | ||||
| </head> | ||||
| <body> | ||||
| <h1> | ||||
| 	Hello world!   | ||||
| </h1> | ||||
| 
 | ||||
| <P>  The time on the server is ${serverTime}. </P> | ||||
| </body> | ||||
| </html> | ||||
| @ -0,0 +1,37 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" | ||||
| 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
| 	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> | ||||
| 
 | ||||
| 	<!-- The definition of the Root Spring Container shared by all Servlets and Filters --> | ||||
| 	<context-param> | ||||
| 		<param-name>contextConfigLocation</param-name> | ||||
| 		<param-value>/WEB-INF/spring/root-context.xml</param-value> | ||||
| 	</context-param> | ||||
| 	 | ||||
| 	<!-- Creates the Spring Container shared by all Servlets and Filters --> | ||||
| 	<listener> | ||||
| 		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> | ||||
| 	</listener> | ||||
| 	 | ||||
| 	<listener> | ||||
| 		<listener-class>com.gitee.app.config.EurekaInitAndRegisterListener</listener-class> | ||||
| 	</listener> | ||||
| 
 | ||||
| 	<!-- Processes application requests --> | ||||
| 	<servlet> | ||||
| 		<servlet-name>appServlet</servlet-name> | ||||
| 		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> | ||||
| 		<init-param> | ||||
| 			<param-name>contextConfigLocation</param-name> | ||||
| 			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> | ||||
| 		</init-param> | ||||
| 		<load-on-startup>1</load-on-startup> | ||||
| 	</servlet> | ||||
| 		 | ||||
| 	<servlet-mapping> | ||||
| 		<servlet-name>appServlet</servlet-name> | ||||
| 		<url-pattern>/</url-pattern> | ||||
| 	</servlet-mapping> | ||||
| 
 | ||||
| </web-app> | ||||
| @ -0,0 +1,41 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> | ||||
| <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> | ||||
| 
 | ||||
| 	<!-- Appenders --> | ||||
| 	<appender name="console" class="org.apache.log4j.ConsoleAppender"> | ||||
| 		<param name="Target" value="System.out" /> | ||||
| 		<layout class="org.apache.log4j.PatternLayout"> | ||||
| 			<param name="ConversionPattern" value="%-5p: %c - %m%n" /> | ||||
| 		</layout> | ||||
| 	</appender> | ||||
| 	 | ||||
| 	<!-- Application Loggers --> | ||||
| 	<logger name="com.gitee.app"> | ||||
| 		<level value="info" /> | ||||
| 	</logger> | ||||
| 	 | ||||
| 	<!-- 3rdparty Loggers --> | ||||
| 	<logger name="org.springframework.core"> | ||||
| 		<level value="info" /> | ||||
| 	</logger>	 | ||||
| 	 | ||||
| 	<logger name="org.springframework.beans"> | ||||
| 		<level value="info" /> | ||||
| 	</logger> | ||||
| 	 | ||||
| 	<logger name="org.springframework.context"> | ||||
| 		<level value="info" /> | ||||
| 	</logger> | ||||
| 
 | ||||
| 	<logger name="org.springframework.web"> | ||||
| 		<level value="info" /> | ||||
| 	</logger> | ||||
| 
 | ||||
| 	<!-- Root Logger --> | ||||
| 	<root> | ||||
| 		<priority value="info" /> | ||||
| 		<appender-ref ref="console" /> | ||||
| 	</root> | ||||
| 	 | ||||
| </log4j:configuration> | ||||
| @ -0,0 +1,57 @@ | ||||
| package com.gitee.sop; | ||||
| 
 | ||||
| import com.alibaba.fastjson.JSON; | ||||
| import com.gitee.sop.alipay.AlipaySignature; | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| import java.text.SimpleDateFormat; | ||||
| import java.util.Date; | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| /** | ||||
|  * 模仿支付宝客户端请求接口 | ||||
|  */ | ||||
| public class SpringmvcDemoPostTest extends TestBase { | ||||
| 
 | ||||
|     String url = "http://localhost:8081/api"; // zuul
 | ||||
|     String appId = "2019032617262200001"; | ||||
|     // 支付宝私钥
 | ||||
|     String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXJv1pQFqWNA/++OYEV7WYXwexZK/J8LY1OWlP9X0T6wHFOvxNKRvMkJ5544SbgsJpVcvRDPrcxmhPbi/sAhdO4x2PiPKIz9Yni2OtYCCeaiE056B+e1O2jXoLeXbfi9fPivJZkxH/tb4xfLkH3bA8ZAQnQsoXA0SguykMRZntF0TndUfvDrLqwhlR8r5iRdZLB6F8o8qXH6UPDfNEnf/K8wX5T4EB1b8x8QJ7Ua4GcIUqeUxGHdQpzNbJdaQvoi06lgccmL+PHzminkFYON7alj1CjDN833j7QMHdPtS9l7B67fOU/p2LAAkPMtoVBfxQt9aFj7B8rEhGCz02iJIBAgMBAAECggEARqOuIpY0v6WtJBfmR3lGIOOokLrhfJrGTLF8CiZMQha+SRJ7/wOLPlsH9SbjPlopyViTXCuYwbzn2tdABigkBHYXxpDV6CJZjzmRZ+FY3S/0POlTFElGojYUJ3CooWiVfyUMhdg5vSuOq0oCny53woFrf32zPHYGiKdvU5Djku1onbDU0Lw8w+5tguuEZ76kZ/lUcccGy5978FFmYpzY/65RHCpvLiLqYyWTtaNT1aQ/9pw4jX9HO9NfdJ9gYFK8r/2f36ZE4hxluAfeOXQfRC/WhPmiw/ReUhxPznG/WgKaa/OaRtAx3inbQ+JuCND7uuKeRe4osP2jLPHPP6AUwQKBgQDUNu3BkLoKaimjGOjCTAwtp71g1oo+k5/uEInAo7lyEwpV0EuUMwLA/HCqUgR4K9pyYV+Oyb8d6f0+Hz0BMD92I2pqlXrD7xV2WzDvyXM3s63NvorRooKcyfd9i6ccMjAyTR2qfLkxv0hlbBbsPHz4BbU63xhTJp3Ghi0/ey/1HQKBgQC2VsgqC6ykfSidZUNLmQZe3J0p/Qf9VLkfrQ+xaHapOs6AzDU2H2osuysqXTLJHsGfrwVaTs00ER2z8ljTJPBUtNtOLrwNRlvgdnzyVAKHfOgDBGwJgiwpeE9voB1oAV/mXqSaUWNnuwlOIhvQEBwekqNyWvhLqC7nCAIhj3yvNQKBgQCqYbeec56LAhWP903Zwcj9VvG7sESqXUhIkUqoOkuIBTWFFIm54QLTA1tJxDQGb98heoCIWf5x/A3xNI98RsqNBX5JON6qNWjb7/dobitti3t99v/ptDp9u8JTMC7penoryLKK0Ty3bkan95Kn9SC42YxaSghzqkt+uvfVQgiNGQKBgGxU6P2aDAt6VNwWosHSe+d2WWXt8IZBhO9d6dn0f7ORvcjmCqNKTNGgrkewMZEuVcliueJquR47IROdY8qmwqcBAN7Vg2K7r7CPlTKAWTRYMJxCT1Hi5gwJb+CZF3+IeYqsJk2NF2s0w5WJTE70k1BSvQsfIzAIDz2yE1oPHvwVAoGAA6e+xQkVH4fMEph55RJIZ5goI4Y76BSvt2N5OKZKd4HtaV+eIhM3SDsVYRLIm9ZquJHMiZQGyUGnsvrKL6AAVNK7eQZCRDk9KQz+0GKOGqku0nOZjUbAu6A2/vtXAaAuFSFx1rUQVVjFulLexkXR3KcztL1Qu2k5pB6Si0K/uwQ="; | ||||
| 
 | ||||
| 
 | ||||
|     @Test | ||||
|     public void testPost() throws Exception { | ||||
| 
 | ||||
|         // 公共请求参数
 | ||||
|         Map<String, String> params = new HashMap<String, String>(); | ||||
|         params.put("app_id", appId); | ||||
|         params.put("method", "springmvc.goods.get"); | ||||
|         params.put("format", "json"); | ||||
|         params.put("charset", "utf-8"); | ||||
|         params.put("sign_type", "RSA2"); | ||||
|         params.put("timestamp", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); | ||||
|         params.put("version", "1.0"); | ||||
| 
 | ||||
|         // 业务参数
 | ||||
|         Map<String, String> bizContent = new HashMap<>(); | ||||
|         bizContent.put("goods_name", "iphone6"); | ||||
| 
 | ||||
|         params.put("biz_content", JSON.toJSONString(bizContent)); | ||||
| 
 | ||||
|         System.out.println("----------- 请求信息 -----------"); | ||||
|         System.out.println("请求参数:" + buildParamQuery(params)); | ||||
|         System.out.println("商户秘钥:" + privateKey); | ||||
|         String content = AlipaySignature.getSignContent(params); | ||||
|         System.out.println("待签名内容:" + content); | ||||
|         String sign = AlipaySignature.rsa256Sign(content, privateKey, "utf-8"); | ||||
|         System.out.println("签名(sign):" + sign); | ||||
| 
 | ||||
|         params.put("sign", sign); | ||||
| 
 | ||||
|         System.out.println("----------- 返回结果 -----------"); | ||||
|         String responseData = post(url, params);// 发送请求
 | ||||
|         System.out.println(responseData); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue