|
14 | 14 |
|
15 | 15 | package apijson.jfinal;
|
16 | 16 |
|
17 |
| -import java.util.Map; |
18 |
| -import java.util.regex.Pattern; |
19 |
| - |
20 |
| -import javax.servlet.http.HttpServletRequest; |
21 |
| -import javax.servlet.http.HttpServletResponse; |
22 |
| - |
23 | 17 | import com.jfinal.aop.Interceptor;
|
24 | 18 | import com.jfinal.aop.Invocation;
|
25 | 19 | import com.jfinal.config.Constants;
|
|
32 | 26 | import com.jfinal.server.undertow.UndertowServer;
|
33 | 27 | import com.jfinal.template.Engine;
|
34 | 28 |
|
| 29 | +import java.util.Map; |
| 30 | +import java.util.regex.Pattern; |
| 31 | + |
| 32 | +import javax.servlet.http.HttpServletRequest; |
| 33 | +import javax.servlet.http.HttpServletResponse; |
| 34 | + |
35 | 35 | import apijson.Log;
|
36 | 36 | import apijson.StringUtil;
|
37 | 37 | import apijson.demo.DemoFunctionParser;
|
|
47 | 47 | import apijson.orm.Verifier;
|
48 | 48 |
|
49 | 49 |
|
50 |
| -/**Demo JFinal Config 主应用程序启动类 |
| 50 | +/** |
| 51 | + * Demo JFinal Config 主应用程序启动类 |
51 | 52 | * 右键这个类 > Run As > Java Application
|
52 | 53 | * 具体见 JFinal 文档
|
53 | 54 | * https://jfinal.com/doc/2-1
|
| 55 | + * |
54 | 56 | * @author Lemon
|
55 | 57 | */
|
56 | 58 | public class DemoAppConfig extends JFinalConfig {
|
57 | 59 |
|
58 |
| - public static void main(String[] args) throws Exception { |
59 |
| - UndertowServer.start(DemoAppConfig.class); // src/main/resources/undertow.txt 中配置 undertow.port 优先于 UndertowServer.start 传参 int port |
| 60 | + public static void main(String[] args) throws Exception { |
| 61 | + UndertowServer.start(DemoAppConfig.class); // src/main/resources/undertow.txt 中配置 undertow.port 优先于 UndertowServer.start 传参 int port |
60 | 62 |
|
61 |
| - Log.DEBUG = true; // 上线生产环境前改为 false,可不输出 APIJSONORM 的日志 以及 SQLException 的原始(敏感)信息 |
62 |
| - APIJSONApplication.init(); |
63 |
| - } |
| 63 | + Log.DEBUG = true; // 上线生产环境前改为 false,可不输出 APIJSONORM 的日志 以及 SQLException 的原始(敏感)信息 |
| 64 | + APIJSONApplication.init(); |
| 65 | + } |
64 | 66 |
|
65 |
| - static { |
| 67 | + static { |
66 | 68 | // 把以下需要用到的数据库驱动取消注释即可,如果这里没有可以自己新增
|
67 | 69 | // try { //加载驱动程序
|
68 | 70 | // Log.d(TAG, "尝试加载 SQLServer 驱动 <<<<<<<<<<<<<<<<<<<<< ");
|
@@ -94,90 +96,94 @@ public static void main(String[] args) throws Exception {
|
94 | 96 | // Log.e(TAG, "加载 DB2 驱动失败,请检查 pom.xml 中 com.ibm.db2 版本是否存在以及可用 !!!");
|
95 | 97 | // }
|
96 | 98 |
|
97 |
| - // APIJSON 配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< |
| 99 | + // APIJSON 配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< |
| 100 | + |
| 101 | + Map<String, Pattern> COMPILE_MAP = AbstractVerifier.COMPILE_MAP; |
| 102 | + COMPILE_MAP.put("PHONE", StringUtil.PATTERN_PHONE); |
| 103 | + COMPILE_MAP.put("EMAIL", StringUtil.PATTERN_EMAIL); |
| 104 | + COMPILE_MAP.put("ID_CARD", StringUtil.PATTERN_ID_CARD); |
98 | 105 |
|
99 |
| - Map<String, Pattern> COMPILE_MAP = AbstractVerifier.COMPILE_MAP; |
100 |
| - COMPILE_MAP.put("PHONE", StringUtil.PATTERN_PHONE); |
101 |
| - COMPILE_MAP.put("EMAIL", StringUtil.PATTERN_EMAIL); |
102 |
| - COMPILE_MAP.put("ID_CARD", StringUtil.PATTERN_ID_CARD); |
| 106 | + // 使用本项目的自定义处理类 |
| 107 | + APIJSONApplication.DEFAULT_APIJSON_CREATOR = new APIJSONCreator<Long>() { |
103 | 108 |
|
104 |
| - // 使用本项目的自定义处理类 |
105 |
| - APIJSONApplication.DEFAULT_APIJSON_CREATOR = new APIJSONCreator<Long>() { |
| 109 | + @Override |
| 110 | + public Parser<Long> createParser() { |
| 111 | + return new DemoParser(); |
| 112 | + } |
106 | 113 |
|
107 |
| - @Override |
108 |
| - public Parser<Long> createParser() { |
109 |
| - return new DemoParser(); |
110 |
| - } |
111 |
| - @Override |
112 |
| - public FunctionParser createFunctionParser() { |
113 |
| - return new DemoFunctionParser(); |
114 |
| - } |
| 114 | + @Override |
| 115 | + public FunctionParser createFunctionParser() { |
| 116 | + return new DemoFunctionParser(); |
| 117 | + } |
115 | 118 |
|
116 |
| - @Override |
117 |
| - public Verifier<Long> createVerifier() { |
118 |
| - return new DemoVerifier(); |
119 |
| - } |
| 119 | + @Override |
| 120 | + public Verifier<Long> createVerifier() { |
| 121 | + return new DemoVerifier(); |
| 122 | + } |
120 | 123 |
|
121 |
| - @Override |
122 |
| - public SQLConfig createSQLConfig() { |
123 |
| - return new DemoSQLConfig(); |
124 |
| - } |
| 124 | + @Override |
| 125 | + public SQLConfig createSQLConfig() { |
| 126 | + return new DemoSQLConfig(); |
| 127 | + } |
125 | 128 |
|
126 |
| - }; |
| 129 | + }; |
127 | 130 |
|
128 |
| - // APIJSON 配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
| 131 | + // APIJSON 配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
129 | 132 |
|
130 |
| - } |
| 133 | + } |
131 | 134 |
|
| 135 | + // 支持 APIAuto 中 JavaScript 代码跨域请求 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< |
132 | 136 |
|
| 137 | + public void configRoute(Routes me) { |
| 138 | + me.add("/", DemoController.class); |
| 139 | + } |
133 | 140 |
|
134 |
| - // 支持 APIAuto 中 JavaScript 代码跨域请求 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< |
| 141 | + public void configEngine(Engine me) { |
| 142 | + me.setBaseTemplatePath("webapp").setToClassPathSourceFactory(); |
| 143 | + } |
135 | 144 |
|
136 |
| - public void configRoute(Routes me) { |
137 |
| - me.add("/", DemoController.class); |
138 |
| - } |
| 145 | + public void configConstant(Constants me) { |
| 146 | + } |
139 | 147 |
|
140 |
| - public void configEngine(Engine me) { |
141 |
| - me.setBaseTemplatePath("webapp").setToClassPathSourceFactory(); |
142 |
| - } |
| 148 | + public void configPlugin(Plugins me) { |
| 149 | + } |
143 | 150 |
|
144 |
| - public void configConstant(Constants me) {} |
145 |
| - public void configPlugin(Plugins me) {} |
146 |
| - public void configHandler(Handlers me) {} |
| 151 | + public void configHandler(Handlers me) { |
| 152 | + } |
147 | 153 |
|
148 |
| - public void configInterceptor(Interceptors me) { |
149 |
| - me.add(new Interceptor() { |
| 154 | + public void configInterceptor(Interceptors me) { |
| 155 | + me.add(new Interceptor() { |
150 | 156 |
|
151 |
| - @Override |
152 |
| - public void intercept(Invocation inv) { |
153 |
| - Controller controller = inv.getController(); |
154 |
| - HttpServletRequest request = controller == null ? null : controller.getRequest(); |
155 |
| - if (request == null) { |
156 |
| - return; |
157 |
| - } |
| 157 | + @Override |
| 158 | + public void intercept(Invocation inv) { |
| 159 | + Controller controller = inv.getController(); |
| 160 | + HttpServletRequest request = controller == null ? null : controller.getRequest(); |
| 161 | + if (request == null) { |
| 162 | + return; |
| 163 | + } |
158 | 164 |
|
159 |
| - String origin = request.getHeader("origin"); |
160 |
| - String corsHeaders = request.getHeader("access-control-request-headers"); |
161 |
| - String corsMethod = request.getHeader("access-control-request-method"); |
| 165 | + String origin = request.getHeader("origin"); |
| 166 | + String corsHeaders = request.getHeader("access-control-request-headers"); |
| 167 | + String corsMethod = request.getHeader("access-control-request-method"); |
162 | 168 |
|
163 |
| - HttpServletResponse response = controller.getResponse(); |
164 |
| - response.setHeader("Access-Control-Allow-Origin", StringUtil.isEmpty(origin, true) ? "*" : origin); |
165 |
| - response.setHeader("Access-Control-Allow-Credentials", "true"); |
166 |
| - response.setHeader("Access-Control-Allow-Headers", StringUtil.isEmpty(corsHeaders, true) ? "*" : corsHeaders); |
167 |
| - response.setHeader("Access-Control-Allow-Methods", StringUtil.isEmpty(corsMethod, true) ? "*" : corsMethod); |
168 |
| - response.setHeader("Access-Control-Max-Age", "86400"); |
| 169 | + HttpServletResponse response = controller.getResponse(); |
| 170 | + response.setHeader("Access-Control-Allow-Origin", StringUtil.isEmpty(origin, true) ? "*" : origin); |
| 171 | + response.setHeader("Access-Control-Allow-Credentials", "true"); |
| 172 | + response.setHeader("Access-Control-Allow-Headers", StringUtil.isEmpty(corsHeaders, true) ? "*" : corsHeaders); |
| 173 | + response.setHeader("Access-Control-Allow-Methods", StringUtil.isEmpty(corsMethod, true) ? "*" : corsMethod); |
| 174 | + response.setHeader("Access-Control-Max-Age", "86400"); |
169 | 175 |
|
170 |
| - if("OPTIONS".equals(request.getMethod().toUpperCase())){ |
171 |
| - controller.renderJson("{}"); |
172 |
| - return; |
173 |
| - } |
| 176 | + if ("OPTIONS".equals(request.getMethod().toUpperCase())) { |
| 177 | + controller.renderJson("{}"); |
| 178 | + return; |
| 179 | + } |
174 | 180 |
|
175 |
| - inv.invoke(); |
176 |
| - } |
177 |
| - }); |
| 181 | + inv.invoke(); |
| 182 | + } |
| 183 | + }); |
178 | 184 |
|
179 |
| - } |
| 185 | + } |
180 | 186 |
|
181 |
| - // 支持 APIAuto 中 JavaScript 代码跨域请求 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
| 187 | + // 支持 APIAuto 中 JavaScript 代码跨域请求 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
182 | 188 |
|
183 | 189 | }
|
0 commit comments