Prechádzať zdrojové kódy

add path content_type

zhzhenqin 6 rokov pred
rodič
commit
5f2bff3b5d

+ 84 - 1
pom.xml

@@ -17,6 +17,89 @@
         <java.main.class>com.yiidata.katta.ui.Booster</java.main.class>
     </properties>
 
+
+  <repositories>
+    <repository>
+      <id>central</id>
+      <!-- This should be at top, it makes maven try the central repo first and then others and hence faster dep resolution -->
+      <name>Maven Repository</name>
+      <url>https://repo1.maven.org/maven2</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+    <repository>
+      <id>apache-repo</id>
+      <name>Apache Repository</name>
+      <url>https://repository.apache.org/content/repositories/releases</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+    <repository>
+      <id>cloudera-repo</id>
+      <name>Cloudera Repository</name>
+      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+    <repository>
+      <id>mapr-repo</id>
+      <name>MapR Repository</name>
+      <url>http://repository.mapr.com/maven</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+    <repository>
+      <!-- for Pivotal's distribution -->
+      <id>spring-releases</id>
+      <name>Spring Release Repository</name>
+      <url>http://repo.spring.io/libs-release</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+    <repository>
+      <id>HDPReleases</id>
+      <name>HDP Releases</name>
+      <url>http://repo.hortonworks.com/content/repositories/releases/</url>
+      <layout>default</layout>
+      <releases>
+        <enabled>true</enabled>
+        <updatePolicy>always</updatePolicy>
+        <checksumPolicy>warn</checksumPolicy>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+        <updatePolicy>never</updatePolicy>
+        <checksumPolicy>fail</checksumPolicy>
+      </snapshots>
+    </repository>
+    <repository>
+      <id>miredot</id>
+      <name>MireDot Releases</name>
+      <url>http://nexus.qmino.com/content/repositories/miredot</url>
+    </repository>
+  </repositories>
+
+
     <dependencies>
         <dependency>
             <groupId>com.google.inject</groupId>
@@ -139,4 +222,4 @@
         </plugins>
     </build>
 
-</project>
+</project>

+ 2 - 1
src/main/java/com/yiidata/katta/ui/Booster.java

@@ -141,7 +141,8 @@ public class Booster implements Module {
                     // 有 Path 注解
                     String[] values = annotation1.value();
                     for (String value : values) {
-                        handler.addServletWithMapping(new ServletHolder(new DynamicRequestServlet(instance, method)), value);
+                        handler.addServletWithMapping(new ServletHolder(
+						    new DynamicRequestServlet(instance, method, annotation1)), value);
                         LOG.info("add path: " + value);
                     }
                 }

+ 7 - 0
src/main/java/com/yiidata/katta/ui/annaotion/Path.java

@@ -22,4 +22,11 @@ import java.lang.annotation.*;
 public @interface Path {
 
     String[] value() default "/";
+
+
+    /**
+     * 返回 Type
+     * @return 返回 Context——Type
+     */
+    String contentType() default "text/html";
 }

+ 11 - 3
src/main/java/com/yiidata/katta/ui/handle/DynamicRequestServlet.java

@@ -1,6 +1,7 @@
 package com.yiidata.katta.ui.handle;
 
 import com.alibaba.fastjson.JSON;
+import com.yiidata.katta.ui.annaotion.Path;
 import org.apache.commons.lang.exception.ExceptionUtils;
 
 import javax.servlet.ServletException;
@@ -46,15 +47,22 @@ public class DynamicRequestServlet extends HttpServlet {
     private final Method method;
 
 
+    /**
+     * 当前方法上 Path
+     */
+    protected final Path pathAnno;
+
+
     /**
      * 输出的字符编码
      */
     protected Charset utf8 = Charset.forName("utf-8");
 
 
-    public DynamicRequestServlet(Object instance, Method method) {
+    public DynamicRequestServlet(Object instance, Method method, Path pathAnno) {
         this.instance = instance;
         this.method = method;
+        this.pathAnno = pathAnno;
     }
 
 
@@ -75,8 +83,8 @@ public class DynamicRequestServlet extends HttpServlet {
             if(r != null) {
                 if(r instanceof String) {
                     resp.setCharacterEncoding(utf8.name());
-                    resp.setContentType("text/html; charset=" + utf8);
-                    resp.setHeader("Content-type", "text/html;charset=" + utf8);
+                    resp.setContentType(pathAnno.contentType() + "; charset=" + utf8);
+                    resp.setHeader("Content-type", pathAnno.contentType()+ ";charset=" + utf8);
                     new FreemarkerView((String)r).out(new OutputStreamWriter(out, utf8), params);
                 } else if((r instanceof Map) || (r instanceof Collection)) {
                     resp.setCharacterEncoding("utf-8");

+ 2 - 0
src/main/java/com/yiidata/katta/ui/handle/FreemarkerView.java

@@ -37,6 +37,8 @@ public class FreemarkerView {
             conf.setTemplateLoader(new ClassTemplateLoader(Thread.currentThread().getContextClassLoader(), "/templates"));
             conf.setNumberFormat("#");//防止页面输出数字,变成2,000
             //可以添加很多自己的要传输到页面的[方法、对象、值]
+            conf.setDefaultEncoding("utf-8");
+            conf.setOutputEncoding("utf-8");
         } catch (Exception e) {
             e.printStackTrace();
         }