微信开发准备(三)--框架以及工具的基本使用

转载 2017年11月28日 09:57:56

转载自崔用志个人博客:http://www.cuiyongzhi.com/post/35.html


在前面两篇中我们从基本的项目建立到框架搭建,将项目已经搭建成功,并将基本的配置项也都已经配置完成,那么这里我们就进入到对框架的熟悉和一个工具generator的使用!

(一)项目部分配置文件的初始化

我们在前面框架中层在web.xml文件中配置了一个启动Servlet初始化文件,这里做的就是在项目中需要用到某些配置文件的时候,我们在这个时候对配置文件中的值初始化到公共Properties中,以方便后面的调用,基本代码实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.cuiyongzhi.web.start;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
 
/**
 
 * ClassName: InterfaceUrlIntiServlet
 
 * @Description: 項目文件初始化
 * @author dapengniao
 * @date 2015/10/13
 */
public class InterfaceUrlIntiServlet extends HttpServlet {
 
    private static final long serialVersionUID = 1L;
 
    @Override
    public void init(ServletConfig config) throws ServletException {
        InterfaceUrlInti.init();
    }
 
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.cuiyongzhi.web.start;
 
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
 
import com.cuiyongzhi.web.util.GlobalConstants;
 
/**
 
 * ClassName: InterfaceUrlInti
 * @Description: 項目啓動配置文件初始化
 * @author dapengniao
 * @date 2015/10/13
 */
public class InterfaceUrlInti {
 
    public synchronized static void init(){
        ClassLoader cl = Thread.currentThread().getContextClassLoader();
        Properties props = new Properties();
        if(GlobalConstants.interfaceUrlProperties==null){
            GlobalConstants.interfaceUrlProperties = new Properties();
        }
        InputStream in = null;
        try {
            in = cl.getResourceAsStream("interface_url.properties");
            props.load(in);
            for(Object key : props.keySet()){
                GlobalConstants.interfaceUrlProperties.put(key, props.get(key));
            }
             
            props = new Properties();
            in = cl.getResourceAsStream("wechat.properties");
            props.load(in);
            for(Object key : props.keySet()){
                GlobalConstants.interfaceUrlProperties.put(key, props.get(key));
            }
             
        catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(in!=null){
                try {
                    in.close();
                catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return;
    }
 
}

在这里我初始化化了两个文件,一个是用来配置在微信开发中经常用的到appid、AppSecret的参数(wechat.properties),另外一个用来初始化我们经常用到的http请求的url地址interface_url.properties!

初始化成功之后我们只需要通过下面的方法即可在项目中任何想用的地方去使用:GlobalConstants.getInterfaceUrl(key),如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.cuiyongzhi.web.util;
 
import java.util.Properties;
 
public class GlobalConstants {
 
    public static Properties interfaceUrlProperties;
 
/**
 
 * @Description: TODO
 * @param @param key
 * @param @return   
 * @author dapengniao
 * @date 2015年10月13日 下午4:59:14
 */
    public static String getInterfaceUrl(String key) {
        return (String) interfaceUrlProperties.get(key);
    }
     
         
     
}

(二)对日志文件的配置说明

在我搭建的开发环境中采用的是log4j日志记录的方式,这种方式对普通项目是没有问题的,后续将有可能升级为logback,首先我们在resources下新建文件log4j.properties,简单配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
log4j.rootLogger=DEBUG,Console,File
#ERROR,WARN,INFO,DEBUG   日志输出等级依次降低,可以根据自己的需求自己调整输出等级
 
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Threshold=DEBUG
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n
 
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.File.File=${catalina.base}/wechatlogs/wechat.log
log4j.appender.File.Threshold=INFO
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.Append=true
log4j.appender.File.ImmediateFlush=true
log4j.appender.File.DatePattern=yyyy-MM-dd'.log'
log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n

有了上面的配置文件之后我们在web.xml中加入如下的启动配置即可:

1
2
3
4
5
6
7
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.properties</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

简单的使用如下图所示:

1.png

(三)Mybatis工具Generator

在这里我要推荐一款工具Generator,在项目开发中它帮我节省了很多时间,让我们能很方便生成我们需要的表对应的pojo、mapping、dao的代码,而且使用起来非常简单。 

MyBatis Generator(以下简称为MBG),可以逆向生成持久层的基本代码,而且mybatis的实现方案比较好,可以自由组合完成比较复杂的查询,当然更复杂的就需要手动写了,下面整理下基本使用!

①MBG的下载

我这里分享的是我经常使用的版本,百度云下载地址:http://pan.baidu.com/s/1dEvCThv   下载成功后的大致目录结构为:

1.png

②打开目录中的generator.xml文件,其中部分需要修改的地方我都有备注说明,我这里给出的示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!-- 数据库驱动包位置 -->
    <classPathEntry location="F:\generator\mysql.jar" /> 
    <!--<classPathEntry location="C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar" />-->
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!-- mysql数据库链接URL、用户名、密码 -->
         <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/wechat" userId="root" password="123456789"
        <!--Oracle数据库使用 -->
        <!--<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@localhost:1521:orcl" userId="msa" password="msa">-->
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <!-- 生成模型的包名和位置 -->
        <javaModelGenerator targetPackage="com.cuiyongzhi.web.pojo" targetProject="F:\generator\src">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- 生成的映射文件包名和位置 -->
        <sqlMapGenerator targetPackage="com.cuiyongzhi.web.mapping" targetProject="F:\generator\src">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        <!-- 生成DAO的包名和位置 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.cuiyongzhi.web.dao" targetProject="F:\generator\src">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
        <!-- 要生成那些表(更改tableName和domainObjectName就可以) -->
        <table tableName="t_wechatconfig" domainObjectName="WechatConfig" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />
         
    </context>
</generatorConfiguration>

这里的mysql的依赖包需要定位到自己的jar包目录,数据库账号密码、数据库选择、导出的位置、数据库表等设置成自己的即可!

③生成自己需要的文件的操作只需要到文件目录空白处按住【shift】然后邮件鼠标右击选择【在此处打开命令窗口】,然后复制【生成语句.txt】中的命令道cmd命令行,【回车】执行即可,然后我们就可以在【src】里面找到我们设置的目录和文件(下图)!

2.png

MBG的基本使用和注意事项也就是这样了,最后感谢你的翻阅,如有疑问可以留言讨论!



转--项目启动时加载自定义properties

首先创建一个类  public class ContextInitListener implements ServletContextListener  使得该类成为一个监听器。用于监听整个容器生命周...
  • cktmyh
  • cktmyh
  • 2016-10-19 09:57:08
  • 618

微信开发准备(三)——框架以及工具的基本使用

在前面两篇中我们从基本的项目建立到框架搭建,将项目已经搭建成功,并将基本的配置项也都已经配置完成,那么这里我们就进入到对框架的熟悉和一个工具generator的使用!(一)项目部分配置文件的初始化我们...
  • li943963645
  • li943963645
  • 2018-03-07 08:59:58
  • 43

常用的Java库、框架和工具清单

原文地址:http://www.indiageeks.in/list-of-commonly-used-java-libraries-frameworks-and-tools/ Java库和框架: 1...
  • dragon_dream
  • dragon_dream
  • 2014-04-04 19:21:00
  • 1387

Java微信公众平台开发(十三)——微信JSSDK中Config配置

前端开发工程师和关注前端开发的开发者们在2015年中肯定被腾讯的JSSDk引爆过,搞APP的、搞前端的甚至是是搞后端的都跑过来凑热闹,一时之间也把微信JSSDK捧得特别牛逼,但是在我们的技术眼里它的实...
  • li943963645
  • li943963645
  • 2018-03-07 09:16:16
  • 21

Java微信公众平台开发(六)——微信开发中的token获取

(一)token的介绍 引用:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要...
  • zhaojiacan
  • zhaojiacan
  • 2016-03-31 11:52:31
  • 8649

AFNetworking(v3.0+)框架学习总结(三框架基本使用)

本文来自简书,原文地址:http://www.jianshu.com/p/228b4b37093e Write in the first【写在最前】 AFNetWorking 基本是i...
  • qq_30513483
  • qq_30513483
  • 2017-04-19 16:04:42
  • 701

微信开发之外网映射工具

今天进行微信开发,结果进行微信Token验证时,一直失败!换了一个映射工具就好了… 选择natapp进行映射1.设置隧道2.下载客户端3.运行下载的客户端(win)运行后,在窗口中 输入命令: n...
  • allenjay11
  • allenjay11
  • 2017-06-14 23:32:20
  • 314

读写properties文件属性

读写properties文件属性
  • it_lihongmin
  • it_lihongmin
  • 2017-05-20 17:37:41
  • 311

Java微信公众平台开发(八)——多媒体消息回复

之前我们在做消息回复的时候我们对回复的消息简单做了分类,前面也有讲述如何回复【普通消息类型消息】,这里将讲述多媒体消息的回复方法,【多媒体消息】包含回复图片消息/回复语音消息/回复视频消息/回复音乐消...
  • li943963645
  • li943963645
  • 2018-03-07 09:11:29
  • 31

手游服务端框架之后台管理工具

后台管理工具在游戏运营中的作用手游功能的更新迭代是非常频繁的,有些项目甚至每个星期都会进行停服更新。也就是说,对于生产环境的游戏进程,我们必须有工具能够对游戏服务进行维护,例如更新维护,或者对游戏内部...
  • littleschemer
  • littleschemer
  • 2017-09-03 22:45:01
  • 2231
收藏助手
不良信息举报
您举报文章:微信开发准备(三)--框架以及工具的基本使用
举报原因:
原因补充:

(最多只允许输入30个字)