發表文章

目前顯示的是 8月, 2016的文章

jersey + swagger server basic setting

本段程式碼為jersey 配置swagger的配置方式

tomcat gzip setting

tomcat/conf/web.xml 在裡面找到此行 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/> 修改為: <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla,traviata" compressableMimeType="text/html,text/xml,application/javascript,text/javascript,application/json,text/css,image/svg+xml" useSendfile="false" /> //啟用壓縮 compression="on" //最小壓縮大小 compressionMinSize="2048" //不支援壓縮的瀏覽器不壓縮 noCompressionUserAgents="gozilla,traviata" //需要壓縮的檔案格式 compressableMimeType="text/html,text/xml,application/javascript,text/javascript,application/json,text/css,image/svg+xml" //超過48k檔案預設不壓縮,需設定此參數強制壓縮 useSendfile="false" 強制壓縮的部分 是因為用scss作成一個main.js

jdbc tomcat pool setting

在tomcat 設定tomcat jdbc pool需要作以下這幾件事情 1.在tomcat目錄下找到lib資料夾將mysql.jar(https://mvnrepository.com/artifact/mysql/mysql-connector-java)丟進去 2.配置web.xml相關參數請看https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Common_Attributes 3.配置context.xml 4.設定連結資料庫的LocalhostConnection檔 另外要自己件資料庫喔不然連不上(廢話) 設置web.xml Resource需設置在GlobalNamingResources內   <GlobalNamingResources>  <Resource  auth="Container"  driverClassName="com.mysql.jdbc.Driver"  url="jdbc:mysql://localhost:3306"  connectionProperties="characterEncoding=utf8;useUnicode=true;autoReconnect=true"  name="jdbc/localhost"  username="root"  password="1234"  minIdle="1"  initialSize="1"  maxIdle="40"  maxActive="50"  maxWait="30000"  minEvictableIdleTimeMillis="30000"  factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"  jdbcInte

jersey CORS setting

配置如下: import java.io.IOException; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.ext.Provider; @Provider public class CORSFilter implements ContainerResponseFilter {   @Override   public void filter(ContainerRequestContext request,           ContainerResponseContext response) throws IOException {     response.getHeaders().add("Access-Control-Allow-Origin", "*");     response.getHeaders().add("Access-Control-Allow-Headers",             "origin, content-type, accept, authorization");     response.getHeaders().add("Access-Control-Allow-Credentials", "true");     response.getHeaders().add("Access-Control-Allow-Methods",             "GET, POST, PUT, DELETE, OPTIONS, HEAD");   } }

jersey gzip setting

jersey gzip setting如下 import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.zip.GZIPOutputStream; import javax.validation.constraints.NotNull; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.ext.WriterInterceptor; import javax.ws.rs.ext.WriterInterceptorContext; import org.slf4j.LoggerFactory; public class CompressionWriterInterceptor implements WriterInterceptor {     private static final org.slf4j.Logger log = LoggerFactory.getLogger(CompressionWriterInterceptor.class);     private HttpHeaders httpHeaders;       public CompressionWriterInterceptor (@Context @NotNull HttpHeaders httpHeaders) {         this.httpHeaders = httpHeaders;     }     @Override     public void aroundWriteTo (WriterInterceptorContext context)             throws IOException, WebApplicationException {         List<String> encodings = this.httpHeaders.getRequestHeader(HttpHead

jersey 檔案下載中文檔名處理

  範例程式碼如下   @GET   @Path("/File")   @Produces(MediaType.APPLICATION_OCTET_STREAM + "; charset=UTF-8")   public Response downloadFile(           @QueryParam("FileName") String FileName,           @QueryParam("FilePath") String FilePath,           @Context HttpServletRequest request   ) throws IOException { //依據瀏覽器的不同,檔名需要不同的編碼     if (request.getHeader("User-Agent").indexOf("MSIE") != -1) {       // IE 8 9 10       FileName = java.net.URLEncoder.encode(FileName, "UTF-8");     } else if (request.getHeader("User-Agent").indexOf("Trident") != -1) {       //IE11       FileName = java.net.URLEncoder.encode(FileName, "UTF-8");     } else {       //其他瀏覽器中文檔名處理       FileName = java.net.URLDecoder.decode(FileName, "UTF-8");       FileName = new String(FileName.getBytes("UTF-8"), "ISO8859-1");     } //取得檔案     File f = new File(Setting.SERVER_FILE_PATH + "/