此处记录项目中的问题, 以此帮助自己成长!!
- springmvc 拦截根目录时, 无法访问文件MP_verify_fAnwMsm7TpQ9HJax.txt
- 测试公众号切换线上公众号, 提示redirect_uri错误
springmvc 拦截根目录时, 无法访问文件配置如下:
- web.xml
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
spring-mvc.xml
...
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<mvc:exclude-mapping path="/statics/**" />
<bean class="com.heitong.web.interceptors.LoginInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
<!-- 过滤静态资源 -->
<mvc:resources location="/statics/" mapping="/statics/**"/>
...
由于公众号要求在根目录可以访问授权文件MP_verify_fAnwMsm7TpQ9HJax.txt,
...
3、将文件MP_verify_fAnwMsm7TpQ9HJax.txt(点击下载)上传至填写域名或路径指向的web服务器(或虚拟主机)的目录
(若填写域名,将文件放置在域名根目录下,例如wx.qq.com/MP_verify_fAnwMsm7TpQ9HJax.txt;
若填写路径,将文件放置在路径目录下,例如wx.qq.com/mp/MP_verify_fAnwMsm7TpQ9HJax.txt),
并确保可以访问。
...
而war包是部署到服务器根目录, 也就导致springmvc会拦截根目录所有请求
tomcat:server.xml
<Context
docBase="projectName"
path="/yuezang"
reloadable="false"
source="org.eclipse.jst.j2ee.server:projectName"
/>
解决方案:
在启用tomcat默认处理器
<!-- 先配置*.txt的默认处理器 -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.txt</url-pattern>
</servlet-mapping>
<!-- 再配置springmvc处理器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
测试公众号切换线上公众号, 提示redirect_uri错误
由于之前一直是在本地开发, 用ngrok穿墙做公众号测试, APP_ID/SECURITY一直用的测试账号, 转到线上后只在公众号中设置了网页授权域名, 而忘记修改程序中的APP_ID/SECURITY, 公众号页面一直提示 redirect_uri 错误, 纠结半天, 一直在想:
为啥测试时没有任何问题, 到了线上就不行了 (# ̄~ ̄#)
解决思路一直朝 redirect_uri 方向, 发现 redirect_uri 地址没有任何问题, 域名绑定也OK. 当找到问题后发现提示也没有错误:
APP_ID 公众号唯一标识
SECURITY 程序访问通行证
用测试公众号的 APP_ID 重定向到线上项目 callback 当然就是 redirect_uri 参数错误了.
解决方案:
在配置文件中(project.properties)配置测试or线上标识, 程序中保留两套 APP_ID/SECURITY, 根据不同标识启用不同配置