步骤 1 : 拓扑图点亮 步骤 2 : Session 概念 步骤 3 : StandardSession 步骤 4 : web.xml 步骤 5 : SessionManager 步骤 6 : Request 步骤 7 : HttpProcessor 步骤 8 : SetSessionServlet 步骤 9 : GetSessionServlet 步骤 10 : web.xml 步骤 11 : TestTomcat 步骤 12 : chrome 步骤 13 : 比较可运行项目,快速定位问题
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.http;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionContext;
public class StandardSession implements HttpSession {
private Map<String, Object> attributesMap;
private String id;
private long creationTime;
private long lastAccessedTime;
private ServletContext servletContext;
private int maxInactiveInterval;
public StandardSession(String jsessionid, ServletContext servletContext) {
this.attributesMap = new HashMap<>();
this.id = jsessionid;
this.creationTime = System.currentTimeMillis();
this.servletContext = servletContext;
}
public void removeAttribute(String name) {
attributesMap.remove(name);
}
public void setAttribute(String name, Object value) {
attributesMap.put(name, value);
}
public Object getAttribute(String name) {
return attributesMap.get(name);
}
public Enumeration<String> getAttributeNames() {
Set<String> keys = attributesMap.keySet();
return Collections.enumeration(keys);
}
public long getCreationTime() {
return this.creationTime;
}
public String getId() {
return id;
}
public long getLastAccessedTime() {
return lastAccessedTime;
}
public void setLastAccessedTime(long lastAccessedTime) {
this.lastAccessedTime = lastAccessedTime;
}
public int getMaxInactiveInterval() {
return this.maxInactiveInterval;
}
public void setMaxInactiveInterval(int maxInactiveInterval) {
this.maxInactiveInterval = maxInactiveInterval;
}
public ServletContext getServletContext() {
return servletContext;
}
public HttpSessionContext getSessionContext() {
return null;
}
public Object getValue(String arg0) {
return null;
}
public String[] getValueNames() {
return null;
}
public void invalidate() {
attributesMap.clear();
}
public boolean isNew() {
return creationTime == lastAccessedTime;
}
public void putValue(String arg0, Object arg1) {
}
public void removeValue(String arg0) {
}
}
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<mime-mapping>
<extension>123</extension>
<mime-type>application/vnd.lotus-1-2-3</mime-type>
</mime-mapping>
<mime-mapping>
<extension>3dml</extension>
<mime-type>text/vnd.in3d.3dml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>3ds</extension>
<mime-type>image/x-3ds</mime-type>
</mime-mapping>
<mime-mapping>
<extension>3g2</extension>
<mime-type>video/3gpp2</mime-type>
</mime-mapping>
<mime-mapping>
<extension>3gp</extension>
<mime-type>video/3gpp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>7z</extension>
<mime-type>application/x-7z-compressed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aab</extension>
<mime-type>application/x-authorware-bin</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aac</extension>
<mime-type>audio/x-aac</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aam</extension>
<mime-type>application/x-authorware-map</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aas</extension>
<mime-type>application/x-authorware-seg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>abs</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>abw</extension>
<mime-type>application/x-abiword</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ac</extension>
<mime-type>application/pkix-attr-cert</mime-type>
</mime-mapping>
<mime-mapping>
<extension>acc</extension>
<mime-type>application/vnd.americandynamics.acc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ace</extension>
<mime-type>application/x-ace-compressed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>acu</extension>
<mime-type>application/vnd.acucobol</mime-type>
</mime-mapping>
<mime-mapping>
<extension>acutc</extension>
<mime-type>application/vnd.acucorp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>adp</extension>
<mime-type>audio/adpcm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aep</extension>
<mime-type>application/vnd.audiograph</mime-type>
</mime-mapping>
<mime-mapping>
<extension>afm</extension>
<mime-type>application/x-font-type1</mime-type>
</mime-mapping>
<mime-mapping>
<extension>afp</extension>
<mime-type>application/vnd.ibm.modcap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ahead</extension>
<mime-type>application/vnd.ahead.space</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ai</extension>
<mime-type>application/postscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aif</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aifc</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aiff</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aim</extension>
<mime-type>application/x-aim</mime-type>
</mime-mapping>
<mime-mapping>
<extension>air</extension>
<mime-type>application/vnd.adobe.air-application-installer-package+zip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ait</extension>
<mime-type>application/vnd.dvb.ait</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ami</extension>
<mime-type>application/vnd.amiga.ami</mime-type>
</mime-mapping>
<mime-mapping>
<extension>anx</extension>
<mime-type>application/annodex</mime-type>
</mime-mapping>
<mime-mapping>
<extension>apk</extension>
<mime-type>application/vnd.android.package-archive</mime-type>
</mime-mapping>
<mime-mapping>
<extension>appcache</extension>
<mime-type>text/cache-manifest</mime-type>
</mime-mapping>
<mime-mapping>
<extension>application</extension>
<mime-type>application/x-ms-application</mime-type>
</mime-mapping>
<mime-mapping>
<extension>apr</extension>
<mime-type>application/vnd.lotus-approach</mime-type>
</mime-mapping>
<mime-mapping>
<extension>arc</extension>
<mime-type>application/x-freearc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>art</extension>
<mime-type>image/x-jg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>asc</extension>
<mime-type>application/pgp-signature</mime-type>
</mime-mapping>
<mime-mapping>
<extension>asf</extension>
<mime-type>video/x-ms-asf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>asm</extension>
<mime-type>text/x-asm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aso</extension>
<mime-type>application/vnd.accpac.simply.aso</mime-type>
</mime-mapping>
<mime-mapping>
<extension>asx</extension>
<mime-type>video/x-ms-asf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>atc</extension>
<mime-type>application/vnd.acucorp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>atom</extension>
<mime-type>application/atom+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>atomcat</extension>
<mime-type>application/atomcat+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>atomsvc</extension>
<mime-type>application/atomsvc+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>atx</extension>
<mime-type>application/vnd.antix.game-component</mime-type>
</mime-mapping>
<mime-mapping>
<extension>au</extension>
<mime-type>audio/basic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>avi</extension>
<mime-type>video/x-msvideo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>avx</extension>
<mime-type>video/x-rad-screenplay</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aw</extension>
<mime-type>application/applixware</mime-type>
</mime-mapping>
<mime-mapping>
<extension>axa</extension>
<mime-type>audio/annodex</mime-type>
</mime-mapping>
<mime-mapping>
<extension>axv</extension>
<mime-type>video/annodex</mime-type>
</mime-mapping>
<mime-mapping>
<extension>azf</extension>
<mime-type>application/vnd.airzip.filesecure.azf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>azs</extension>
<mime-type>application/vnd.airzip.filesecure.azs</mime-type>
</mime-mapping>
<mime-mapping>
<extension>azw</extension>
<mime-type>application/vnd.amazon.ebook</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bat</extension>
<mime-type>application/x-msdownload</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bcpio</extension>
<mime-type>application/x-bcpio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bdf</extension>
<mime-type>application/x-font-bdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bdm</extension>
<mime-type>application/vnd.syncml.dm+wbxml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bed</extension>
<mime-type>application/vnd.realvnc.bed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bh2</extension>
<mime-type>application/vnd.fujitsu.oasysprs</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bin</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>blb</extension>
<mime-type>application/x-blorb</mime-type>
</mime-mapping>
<mime-mapping>
<extension>blorb</extension>
<mime-type>application/x-blorb</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bmi</extension>
<mime-type>application/vnd.bmi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bmp</extension>
<mime-type>image/bmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>body</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>book</extension>
<mime-type>application/vnd.framemaker</mime-type>
</mime-mapping>
<mime-mapping>
<extension>box</extension>
<mime-type>application/vnd.previewsystems.box</mime-type>
</mime-mapping>
<mime-mapping>
<extension>boz</extension>
<mime-type>application/x-bzip2</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bpk</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>btif</extension>
<mime-type>image/prs.btif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bz</extension>
<mime-type>application/x-bzip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bz2</extension>
<mime-type>application/x-bzip2</mime-type>
</mime-mapping>
<mime-mapping>
<extension>c</extension>
<mime-type>text/x-c</mime-type>
</mime-mapping>
<mime-mapping>
<extension>c11amc</extension>
<mime-type>application/vnd.cluetrust.cartomobile-config</mime-type>
</mime-mapping>
<mime-mapping>
<extension>c11amz</extension>
<mime-type>application/vnd.cluetrust.cartomobile-config-pkg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>c4d</extension>
<mime-type>application/vnd.clonk.c4group</mime-type>
</mime-mapping>
<mime-mapping>
<extension>c4f</extension>
<mime-type>application/vnd.clonk.c4group</mime-type>
</mime-mapping>
<mime-mapping>
<extension>c4g</extension>
<mime-type>application/vnd.clonk.c4group</mime-type>
</mime-mapping>
<mime-mapping>
<extension>c4p</extension>
<mime-type>application/vnd.clonk.c4group</mime-type>
</mime-mapping>
<mime-mapping>
<extension>c4u</extension>
<mime-type>application/vnd.clonk.c4group</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cab</extension>
<mime-type>application/vnd.ms-cab-compressed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>caf</extension>
<mime-type>audio/x-caf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cap</extension>
<mime-type>application/vnd.tcpdump.pcap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>car</extension>
<mime-type>application/vnd.curl.car</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cat</extension>
<mime-type>application/vnd.ms-pki.seccat</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cb7</extension>
<mime-type>application/x-cbr</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cba</extension>
<mime-type>application/x-cbr</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cbr</extension>
<mime-type>application/x-cbr</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cbt</extension>
<mime-type>application/x-cbr</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cbz</extension>
<mime-type>application/x-cbr</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cc</extension>
<mime-type>text/x-c</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cct</extension>
<mime-type>application/x-director</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ccxml</extension>
<mime-type>application/ccxml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdbcmsg</extension>
<mime-type>application/vnd.contact.cmsg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdf</extension>
<mime-type>application/x-cdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdkey</extension>
<mime-type>application/vnd.mediastation.cdkey</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdmia</extension>
<mime-type>application/cdmi-capability</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdmic</extension>
<mime-type>application/cdmi-container</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdmid</extension>
<mime-type>application/cdmi-domain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdmio</extension>
<mime-type>application/cdmi-object</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdmiq</extension>
<mime-type>application/cdmi-queue</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdx</extension>
<mime-type>chemical/x-cdx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdxml</extension>
<mime-type>application/vnd.chemdraw+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdy</extension>
<mime-type>application/vnd.cinderella</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cer</extension>
<mime-type>application/pkix-cert</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cfs</extension>
<mime-type>application/x-cfs-compressed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cgm</extension>
<mime-type>image/cgm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>chat</extension>
<mime-type>application/x-chat</mime-type>
</mime-mapping>
<mime-mapping>
<extension>chm</extension>
<mime-type>application/vnd.ms-htmlhelp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>chrt</extension>
<mime-type>application/vnd.kde.kchart</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cif</extension>
<mime-type>chemical/x-cif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cii</extension>
<mime-type>application/vnd.anser-web-certificate-issue-initiation</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cil</extension>
<mime-type>application/vnd.ms-artgalry</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cla</extension>
<mime-type>application/vnd.claymore</mime-type>
</mime-mapping>
<mime-mapping>
<extension>class</extension>
<mime-type>application/java</mime-type>
</mime-mapping>
<mime-mapping>
<extension>clkk</extension>
<mime-type>application/vnd.crick.clicker.keyboard</mime-type>
</mime-mapping>
<mime-mapping>
<extension>clkp</extension>
<mime-type>application/vnd.crick.clicker.palette</mime-type>
</mime-mapping>
<mime-mapping>
<extension>clkt</extension>
<mime-type>application/vnd.crick.clicker.template</mime-type>
</mime-mapping>
<mime-mapping>
<extension>clkw</extension>
<mime-type>application/vnd.crick.clicker.wordbank</mime-type>
</mime-mapping>
<mime-mapping>
<extension>clkx</extension>
<mime-type>application/vnd.crick.clicker</mime-type>
</mime-mapping>
<mime-mapping>
<extension>clp</extension>
<mime-type>application/x-msclip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cmc</extension>
<mime-type>application/vnd.cosmocaller</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cmdf</extension>
<mime-type>chemical/x-cmdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cml</extension>
<mime-type>chemical/x-cml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cmp</extension>
<mime-type>application/vnd.yellowriver-custom-menu</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cmx</extension>
<mime-type>image/x-cmx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cod</extension>
<mime-type>application/vnd.rim.cod</mime-type>
</mime-mapping>
<mime-mapping>
<extension>com</extension>
<mime-type>application/x-msdownload</mime-type>
</mime-mapping>
<mime-mapping>
<extension>conf</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cpio</extension>
<mime-type>application/x-cpio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cpp</extension>
<mime-type>text/x-c</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cpt</extension>
<mime-type>application/mac-compactpro</mime-type>
</mime-mapping>
<mime-mapping>
<extension>crd</extension>
<mime-type>application/x-mscardfile</mime-type>
</mime-mapping>
<mime-mapping>
<extension>crl</extension>
<mime-type>application/pkix-crl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>crt</extension>
<mime-type>application/x-x509-ca-cert</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cryptonote</extension>
<mime-type>application/vnd.rig.cryptonote</mime-type>
</mime-mapping>
<mime-mapping>
<extension>csh</extension>
<mime-type>application/x-csh</mime-type>
</mime-mapping>
<mime-mapping>
<extension>csml</extension>
<mime-type>chemical/x-csml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>csp</extension>
<mime-type>application/vnd.commonspace</mime-type>
</mime-mapping>
<mime-mapping>
<extension>css</extension>
<mime-type>text/css</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cst</extension>
<mime-type>application/x-director</mime-type>
</mime-mapping>
<mime-mapping>
<extension>csv</extension>
<mime-type>text/csv</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cu</extension>
<mime-type>application/cu-seeme</mime-type>
</mime-mapping>
<mime-mapping>
<extension>curl</extension>
<mime-type>text/vnd.curl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cww</extension>
<mime-type>application/prs.cww</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cxt</extension>
<mime-type>application/x-director</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cxx</extension>
<mime-type>text/x-c</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dae</extension>
<mime-type>model/vnd.collada+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>daf</extension>
<mime-type>application/vnd.mobius.daf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dart</extension>
<mime-type>application/vnd.dart</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dataless</extension>
<mime-type>application/vnd.fdsn.seed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>davmount</extension>
<mime-type>application/davmount+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dbk</extension>
<mime-type>application/docbook+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dcr</extension>
<mime-type>application/x-director</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dcurl</extension>
<mime-type>text/vnd.curl.dcurl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dd2</extension>
<mime-type>application/vnd.oma.dd2+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ddd</extension>
<mime-type>application/vnd.fujixerox.ddd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>deb</extension>
<mime-type>application/x-debian-package</mime-type>
</mime-mapping>
<mime-mapping>
<extension>def</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>deploy</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>der</extension>
<mime-type>application/x-x509-ca-cert</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dfac</extension>
<mime-type>application/vnd.dreamfactory</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dgc</extension>
<mime-type>application/x-dgc-compressed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dib</extension>
<mime-type>image/bmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dic</extension>
<mime-type>text/x-c</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dir</extension>
<mime-type>application/x-director</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dis</extension>
<mime-type>application/vnd.mobius.dis</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dist</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>distz</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>djv</extension>
<mime-type>image/vnd.djvu</mime-type>
</mime-mapping>
<mime-mapping>
<extension>djvu</extension>
<mime-type>image/vnd.djvu</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dll</extension>
<mime-type>application/x-msdownload</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dmg</extension>
<mime-type>application/x-apple-diskimage</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dmp</extension>
<mime-type>application/vnd.tcpdump.pcap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dms</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dna</extension>
<mime-type>application/vnd.dna</mime-type>
</mime-mapping>
<mime-mapping>
<extension>doc</extension>
<mime-type>application/msword</mime-type>
</mime-mapping>
<mime-mapping>
<extension>docm</extension>
<mime-type>application/vnd.ms-word.document.macroenabled.12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>docx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dot</extension>
<mime-type>application/msword</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dotm</extension>
<mime-type>application/vnd.ms-word.template.macroenabled.12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dotx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.template</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dp</extension>
<mime-type>application/vnd.osgi.dp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dpg</extension>
<mime-type>application/vnd.dpgraph</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dra</extension>
<mime-type>audio/vnd.dra</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dsc</extension>
<mime-type>text/prs.lines.tag</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dssc</extension>
<mime-type>application/dssc+der</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dtb</extension>
<mime-type>application/x-dtbook+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dtd</extension>
<mime-type>application/xml-dtd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dts</extension>
<mime-type>audio/vnd.dts</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dtshd</extension>
<mime-type>audio/vnd.dts.hd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dump</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dv</extension>
<mime-type>video/x-dv</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dvb</extension>
<mime-type>video/vnd.dvb.file</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dvi</extension>
<mime-type>application/x-dvi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dwf</extension>
<mime-type>model/vnd.dwf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dwg</extension>
<mime-type>image/vnd.dwg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dxf</extension>
<mime-type>image/vnd.dxf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dxp</extension>
<mime-type>application/vnd.spotfire.dxp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dxr</extension>
<mime-type>application/x-director</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ecelp4800</extension>
<mime-type>audio/vnd.nuera.ecelp4800</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ecelp7470</extension>
<mime-type>audio/vnd.nuera.ecelp7470</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ecelp9600</extension>
<mime-type>audio/vnd.nuera.ecelp9600</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ecma</extension>
<mime-type>application/ecmascript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>edm</extension>
<mime-type>application/vnd.novadigm.edm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>edx</extension>
<mime-type>application/vnd.novadigm.edx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>efif</extension>
<mime-type>application/vnd.picsel</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ei6</extension>
<mime-type>application/vnd.pg.osasli</mime-type>
</mime-mapping>
<mime-mapping>
<extension>elc</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>emf</extension>
<mime-type>application/x-msmetafile</mime-type>
</mime-mapping>
<mime-mapping>
<extension>eml</extension>
<mime-type>message/rfc822</mime-type>
</mime-mapping>
<mime-mapping>
<extension>emma</extension>
<mime-type>application/emma+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>emz</extension>
<mime-type>application/x-msmetafile</mime-type>
</mime-mapping>
<mime-mapping>
<extension>eol</extension>
<mime-type>audio/vnd.digital-winds</mime-type>
</mime-mapping>
<mime-mapping>
<extension>eot</extension>
<mime-type>application/vnd.ms-fontobject</mime-type>
</mime-mapping>
<mime-mapping>
<extension>eps</extension>
<mime-type>application/postscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>epub</extension>
<mime-type>application/epub+zip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>es3</extension>
<mime-type>application/vnd.eszigno3+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>esa</extension>
<mime-type>application/vnd.osgi.subsystem</mime-type>
</mime-mapping>
<mime-mapping>
<extension>esf</extension>
<mime-type>application/vnd.epson.esf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>et3</extension>
<mime-type>application/vnd.eszigno3+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>etx</extension>
<mime-type>text/x-setext</mime-type>
</mime-mapping>
<mime-mapping>
<extension>eva</extension>
<mime-type>application/x-eva</mime-type>
</mime-mapping>
<mime-mapping>
<extension>evy</extension>
<mime-type>application/x-envoy</mime-type>
</mime-mapping>
<mime-mapping>
<extension>exe</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>exi</extension>
<mime-type>application/exi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ext</extension>
<mime-type>application/vnd.novadigm.ext</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ez</extension>
<mime-type>application/andrew-inset</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ez2</extension>
<mime-type>application/vnd.ezpix-album</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ez3</extension>
<mime-type>application/vnd.ezpix-package</mime-type>
</mime-mapping>
<mime-mapping>
<extension>f</extension>
<mime-type>text/x-fortran</mime-type>
</mime-mapping>
<mime-mapping>
<extension>f4v</extension>
<mime-type>video/x-f4v</mime-type>
</mime-mapping>
<mime-mapping>
<extension>f77</extension>
<mime-type>text/x-fortran</mime-type>
</mime-mapping>
<mime-mapping>
<extension>f90</extension>
<mime-type>text/x-fortran</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fbs</extension>
<mime-type>image/vnd.fastbidsheet</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fcdt</extension>
<mime-type>application/vnd.adobe.formscentral.fcdt</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fcs</extension>
<mime-type>application/vnd.isac.fcs</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fdf</extension>
<mime-type>application/vnd.fdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fe_launch</extension>
<mime-type>application/vnd.denovo.fcselayout-link</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fg5</extension>
<mime-type>application/vnd.fujitsu.oasysgp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fgd</extension>
<mime-type>application/x-director</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fh</extension>
<mime-type>image/x-freehand</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fh4</extension>
<mime-type>image/x-freehand</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fh5</extension>
<mime-type>image/x-freehand</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fh7</extension>
<mime-type>image/x-freehand</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fhc</extension>
<mime-type>image/x-freehand</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fig</extension>
<mime-type>application/x-xfig</mime-type>
</mime-mapping>
<mime-mapping>
<extension>flac</extension>
<mime-type>audio/flac</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fli</extension>
<mime-type>video/x-fli</mime-type>
</mime-mapping>
<mime-mapping>
<extension>flo</extension>
<mime-type>application/vnd.micrografx.flo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>flv</extension>
<mime-type>video/x-flv</mime-type>
</mime-mapping>
<mime-mapping>
<extension>flw</extension>
<mime-type>application/vnd.kde.kivio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>flx</extension>
<mime-type>text/vnd.fmi.flexstor</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fly</extension>
<mime-type>text/vnd.fly</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fm</extension>
<mime-type>application/vnd.framemaker</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fnc</extension>
<mime-type>application/vnd.frogans.fnc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>for</extension>
<mime-type>text/x-fortran</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fpx</extension>
<mime-type>image/vnd.fpx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>frame</extension>
<mime-type>application/vnd.framemaker</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fsc</extension>
<mime-type>application/vnd.fsc.weblaunch</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fst</extension>
<mime-type>image/vnd.fst</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ftc</extension>
<mime-type>application/vnd.fluxtime.clip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fti</extension>
<mime-type>application/vnd.anser-web-funds-transfer-initiation</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fvt</extension>
<mime-type>video/vnd.fvt</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fxp</extension>
<mime-type>application/vnd.adobe.fxp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fxpl</extension>
<mime-type>application/vnd.adobe.fxp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>fzs</extension>
<mime-type>application/vnd.fuzzysheet</mime-type>
</mime-mapping>
<mime-mapping>
<extension>g2w</extension>
<mime-type>application/vnd.geoplan</mime-type>
</mime-mapping>
<mime-mapping>
<extension>g3</extension>
<mime-type>image/g3fax</mime-type>
</mime-mapping>
<mime-mapping>
<extension>g3w</extension>
<mime-type>application/vnd.geospace</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gac</extension>
<mime-type>application/vnd.groove-account</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gam</extension>
<mime-type>application/x-tads</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gbr</extension>
<mime-type>application/rpki-ghostbusters</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gca</extension>
<mime-type>application/x-gca-compressed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gdl</extension>
<mime-type>model/vnd.gdl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>geo</extension>
<mime-type>application/vnd.dynageo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gex</extension>
<mime-type>application/vnd.geometry-explorer</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ggb</extension>
<mime-type>application/vnd.geogebra.file</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ggt</extension>
<mime-type>application/vnd.geogebra.tool</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ghf</extension>
<mime-type>application/vnd.groove-help</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gif</extension>
<mime-type>image/gif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gim</extension>
<mime-type>application/vnd.groove-identity-message</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gml</extension>
<mime-type>application/gml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gmx</extension>
<mime-type>application/vnd.gmx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gnumeric</extension>
<mime-type>application/x-gnumeric</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gph</extension>
<mime-type>application/vnd.flographit</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gpx</extension>
<mime-type>application/gpx+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gqf</extension>
<mime-type>application/vnd.grafeq</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gqs</extension>
<mime-type>application/vnd.grafeq</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gram</extension>
<mime-type>application/srgs</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gramps</extension>
<mime-type>application/x-gramps-xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gre</extension>
<mime-type>application/vnd.geometry-explorer</mime-type>
</mime-mapping>
<mime-mapping>
<extension>grv</extension>
<mime-type>application/vnd.groove-injector</mime-type>
</mime-mapping>
<mime-mapping>
<extension>grxml</extension>
<mime-type>application/srgs+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gsf</extension>
<mime-type>application/x-font-ghostscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gtar</extension>
<mime-type>application/x-gtar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gtm</extension>
<mime-type>application/vnd.groove-tool-message</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gtw</extension>
<mime-type>model/vnd.gtw</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gv</extension>
<mime-type>text/vnd.graphviz</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gxf</extension>
<mime-type>application/gxf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gxt</extension>
<mime-type>application/vnd.geonext</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gz</extension>
<mime-type>application/x-gzip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>h</extension>
<mime-type>text/x-c</mime-type>
</mime-mapping>
<mime-mapping>
<extension>h261</extension>
<mime-type>video/h261</mime-type>
</mime-mapping>
<mime-mapping>
<extension>h263</extension>
<mime-type>video/h263</mime-type>
</mime-mapping>
<mime-mapping>
<extension>h264</extension>
<mime-type>video/h264</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hal</extension>
<mime-type>application/vnd.hal+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hbci</extension>
<mime-type>application/vnd.hbci</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hdf</extension>
<mime-type>application/x-hdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hh</extension>
<mime-type>text/x-c</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hlp</extension>
<mime-type>application/winhlp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hpgl</extension>
<mime-type>application/vnd.hp-hpgl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hpid</extension>
<mime-type>application/vnd.hp-hpid</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hps</extension>
<mime-type>application/vnd.hp-hps</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hqx</extension>
<mime-type>application/mac-binhex40</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htc</extension>
<mime-type>text/x-component</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htke</extension>
<mime-type>application/vnd.kenameaapp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hvd</extension>
<mime-type>application/vnd.yamaha.hv-dic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hvp</extension>
<mime-type>application/vnd.yamaha.hv-voice</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hvs</extension>
<mime-type>application/vnd.yamaha.hv-script</mime-type>
</mime-mapping>
<mime-mapping>
<extension>i2g</extension>
<mime-type>application/vnd.intergeo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>icc</extension>
<mime-type>application/vnd.iccprofile</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ice</extension>
<mime-type>x-conference/x-cooltalk</mime-type>
</mime-mapping>
<mime-mapping>
<extension>icm</extension>
<mime-type>application/vnd.iccprofile</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ico</extension>
<mime-type>image/x-icon</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ics</extension>
<mime-type>text/calendar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ief</extension>
<mime-type>image/ief</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ifb</extension>
<mime-type>text/calendar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ifm</extension>
<mime-type>application/vnd.shana.informed.formdata</mime-type>
</mime-mapping>
<mime-mapping>
<extension>iges</extension>
<mime-type>model/iges</mime-type>
</mime-mapping>
<mime-mapping>
<extension>igl</extension>
<mime-type>application/vnd.igloader</mime-type>
</mime-mapping>
<mime-mapping>
<extension>igm</extension>
<mime-type>application/vnd.insors.igm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>igs</extension>
<mime-type>model/iges</mime-type>
</mime-mapping>
<mime-mapping>
<extension>igx</extension>
<mime-type>application/vnd.micrografx.igx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>iif</extension>
<mime-type>application/vnd.shana.informed.interchange</mime-type>
</mime-mapping>
<mime-mapping>
<extension>imp</extension>
<mime-type>application/vnd.accpac.simply.imp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ims</extension>
<mime-type>application/vnd.ms-ims</mime-type>
</mime-mapping>
<mime-mapping>
<extension>in</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ink</extension>
<mime-type>application/inkml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>inkml</extension>
<mime-type>application/inkml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>install</extension>
<mime-type>application/x-install-instructions</mime-type>
</mime-mapping>
<mime-mapping>
<extension>iota</extension>
<mime-type>application/vnd.astraea-software.iota</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ipfix</extension>
<mime-type>application/ipfix</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ipk</extension>
<mime-type>application/vnd.shana.informed.package</mime-type>
</mime-mapping>
<mime-mapping>
<extension>irm</extension>
<mime-type>application/vnd.ibm.rights-management</mime-type>
</mime-mapping>
<mime-mapping>
<extension>irp</extension>
<mime-type>application/vnd.irepository.package+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>iso</extension>
<mime-type>application/x-iso9660-image</mime-type>
</mime-mapping>
<mime-mapping>
<extension>itp</extension>
<mime-type>application/vnd.shana.informed.formtemplate</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ivp</extension>
<mime-type>application/vnd.immervision-ivp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ivu</extension>
<mime-type>application/vnd.immervision-ivu</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jad</extension>
<mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jam</extension>
<mime-type>application/vnd.jam</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jar</extension>
<mime-type>application/java-archive</mime-type>
</mime-mapping>
<mime-mapping>
<extension>java</extension>
<mime-type>text/x-java-source</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jisp</extension>
<mime-type>application/vnd.jisp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jlt</extension>
<mime-type>application/vnd.hp-jlyt</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jnlp</extension>
<mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>
<mime-mapping>
<extension>joda</extension>
<mime-type>application/vnd.joost.joda-archive</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpe</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpeg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpgm</extension>
<mime-type>video/jpm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpgv</extension>
<mime-type>video/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpm</extension>
<mime-type>video/jpm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>js</extension>
<mime-type>application/javascript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jsf</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>json</extension>
<mime-type>application/json</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jsonml</extension>
<mime-type>application/jsonml+json</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jspf</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kar</extension>
<mime-type>audio/midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>karbon</extension>
<mime-type>application/vnd.kde.karbon</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kfo</extension>
<mime-type>application/vnd.kde.kformula</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kia</extension>
<mime-type>application/vnd.kidspiration</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kml</extension>
<mime-type>application/vnd.google-earth.kml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kmz</extension>
<mime-type>application/vnd.google-earth.kmz</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kne</extension>
<mime-type>application/vnd.kinar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>knp</extension>
<mime-type>application/vnd.kinar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kon</extension>
<mime-type>application/vnd.kde.kontour</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kpr</extension>
<mime-type>application/vnd.kde.kpresenter</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kpt</extension>
<mime-type>application/vnd.kde.kpresenter</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kpxx</extension>
<mime-type>application/vnd.ds-keypoint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ksp</extension>
<mime-type>application/vnd.kde.kspread</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ktr</extension>
<mime-type>application/vnd.kahootz</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ktx</extension>
<mime-type>image/ktx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ktz</extension>
<mime-type>application/vnd.kahootz</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kwd</extension>
<mime-type>application/vnd.kde.kword</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kwt</extension>
<mime-type>application/vnd.kde.kword</mime-type>
</mime-mapping>
<mime-mapping>
<extension>lasxml</extension>
<mime-type>application/vnd.las.las+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>latex</extension>
<mime-type>application/x-latex</mime-type>
</mime-mapping>
<mime-mapping>
<extension>lbd</extension>
<mime-type>application/vnd.llamagraphics.life-balance.desktop</mime-type>
</mime-mapping>
<mime-mapping>
<extension>lbe</extension>
<mime-type>application/vnd.llamagraphics.life-balance.exchange+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>les</extension>
<mime-type>application/vnd.hhe.lesson-player</mime-type>
</mime-mapping>
<mime-mapping>
<extension>lha</extension>
<mime-type>application/x-lzh-compressed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>link66</extension>
<mime-type>application/vnd.route66.link66+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>list</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>list3820</extension>
<mime-type>application/vnd.ibm.modcap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>listafp</extension>
<mime-type>application/vnd.ibm.modcap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>lnk</extension>
<mime-type>application/x-ms-shortcut</mime-type>
</mime-mapping>
<mime-mapping>
<extension>log</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>lostxml</extension>
<mime-type>application/lost+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>lrf</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>lrm</extension>
<mime-type>application/vnd.ms-lrm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ltf</extension>
<mime-type>application/vnd.frogans.ltf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>lvp</extension>
<mime-type>audio/vnd.lucent.voice</mime-type>
</mime-mapping>
<mime-mapping>
<extension>lwp</extension>
<mime-type>application/vnd.lotus-wordpro</mime-type>
</mime-mapping>
<mime-mapping>
<extension>lzh</extension>
<mime-type>application/x-lzh-compressed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m13</extension>
<mime-type>application/x-msmediaview</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m14</extension>
<mime-type>application/x-msmediaview</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m1v</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m21</extension>
<mime-type>application/mp21</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m2a</extension>
<mime-type>audio/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m2v</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m3a</extension>
<mime-type>audio/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m3u</extension>
<mime-type>audio/x-mpegurl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m3u8</extension>
<mime-type>application/vnd.apple.mpegurl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m4a</extension>
<mime-type>audio/mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m4b</extension>
<mime-type>audio/mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m4r</extension>
<mime-type>audio/mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m4u</extension>
<mime-type>video/vnd.mpegurl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m4v</extension>
<mime-type>video/mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ma</extension>
<mime-type>application/mathematica</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mac</extension>
<mime-type>image/x-macpaint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mads</extension>
<mime-type>application/mads+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mag</extension>
<mime-type>application/vnd.ecowin.chart</mime-type>
</mime-mapping>
<mime-mapping>
<extension>maker</extension>
<mime-type>application/vnd.framemaker</mime-type>
</mime-mapping>
<mime-mapping>
<extension>man</extension>
<mime-type>text/troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mar</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mathml</extension>
<mime-type>application/mathml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mb</extension>
<mime-type>application/mathematica</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mbk</extension>
<mime-type>application/vnd.mobius.mbk</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mbox</extension>
<mime-type>application/mbox</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mc1</extension>
<mime-type>application/vnd.medcalcdata</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mcd</extension>
<mime-type>application/vnd.mcd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mcurl</extension>
<mime-type>text/vnd.curl.mcurl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mdb</extension>
<mime-type>application/x-msaccess</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mdi</extension>
<mime-type>image/vnd.ms-modi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>me</extension>
<mime-type>text/troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mesh</extension>
<mime-type>model/mesh</mime-type>
</mime-mapping>
<mime-mapping>
<extension>meta4</extension>
<mime-type>application/metalink4+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>metalink</extension>
<mime-type>application/metalink+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mets</extension>
<mime-type>application/mets+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mfm</extension>
<mime-type>application/vnd.mfmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mft</extension>
<mime-type>application/rpki-manifest</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mgp</extension>
<mime-type>application/vnd.osgeo.mapguide.package</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mgz</extension>
<mime-type>application/vnd.proteus.magazine</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mid</extension>
<mime-type>audio/midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>midi</extension>
<mime-type>audio/midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mie</extension>
<mime-type>application/x-mie</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mif</extension>
<mime-type>application/x-mif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mime</extension>
<mime-type>message/rfc822</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mj2</extension>
<mime-type>video/mj2</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mjp2</extension>
<mime-type>video/mj2</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mk3d</extension>
<mime-type>video/x-matroska</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mka</extension>
<mime-type>audio/x-matroska</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mks</extension>
<mime-type>video/x-matroska</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mkv</extension>
<mime-type>video/x-matroska</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mlp</extension>
<mime-type>application/vnd.dolby.mlp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mmd</extension>
<mime-type>application/vnd.chipnuts.karaoke-mmd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mmf</extension>
<mime-type>application/vnd.smaf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mmr</extension>
<mime-type>image/vnd.fujixerox.edmics-mmr</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mng</extension>
<mime-type>video/x-mng</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mny</extension>
<mime-type>application/x-msmoney</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mobi</extension>
<mime-type>application/x-mobipocket-ebook</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mods</extension>
<mime-type>application/mods+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mov</extension>
<mime-type>video/quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>movie</extension>
<mime-type>video/x-sgi-movie</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp1</extension>
<mime-type>audio/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp2</extension>
<mime-type>audio/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp21</extension>
<mime-type>application/mp21</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp2a</extension>
<mime-type>audio/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp3</extension>
<mime-type>audio/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp4</extension>
<mime-type>video/mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp4a</extension>
<mime-type>audio/mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp4s</extension>
<mime-type>application/mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp4v</extension>
<mime-type>video/mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpa</extension>
<mime-type>audio/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpc</extension>
<mime-type>application/vnd.mophun.certificate</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpe</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpeg</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpega</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpg</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpg4</extension>
<mime-type>video/mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpga</extension>
<mime-type>audio/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpkg</extension>
<mime-type>application/vnd.apple.installer+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpm</extension>
<mime-type>application/vnd.blueice.multipass</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpn</extension>
<mime-type>application/vnd.mophun.application</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpp</extension>
<mime-type>application/vnd.ms-project</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpt</extension>
<mime-type>application/vnd.ms-project</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpv2</extension>
<mime-type>video/mpeg2</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpy</extension>
<mime-type>application/vnd.ibm.minipay</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mqy</extension>
<mime-type>application/vnd.mobius.mqy</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mrc</extension>
<mime-type>application/marc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mrcx</extension>
<mime-type>application/marcxml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ms</extension>
<mime-type>text/troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mscml</extension>
<mime-type>application/mediaservercontrol+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mseed</extension>
<mime-type>application/vnd.fdsn.mseed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mseq</extension>
<mime-type>application/vnd.mseq</mime-type>
</mime-mapping>
<mime-mapping>
<extension>msf</extension>
<mime-type>application/vnd.epson.msf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>msh</extension>
<mime-type>model/mesh</mime-type>
</mime-mapping>
<mime-mapping>
<extension>msi</extension>
<mime-type>application/x-msdownload</mime-type>
</mime-mapping>
<mime-mapping>
<extension>msl</extension>
<mime-type>application/vnd.mobius.msl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>msty</extension>
<mime-type>application/vnd.muvee.style</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mts</extension>
<mime-type>model/vnd.mts</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mus</extension>
<mime-type>application/vnd.musician</mime-type>
</mime-mapping>
<mime-mapping>
<extension>musicxml</extension>
<mime-type>application/vnd.recordare.musicxml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mvb</extension>
<mime-type>application/x-msmediaview</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mwf</extension>
<mime-type>application/vnd.mfer</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mxf</extension>
<mime-type>application/mxf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mxl</extension>
<mime-type>application/vnd.recordare.musicxml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mxml</extension>
<mime-type>application/xv+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mxs</extension>
<mime-type>application/vnd.triscape.mxs</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mxu</extension>
<mime-type>video/vnd.mpegurl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>n-gage</extension>
<mime-type>application/vnd.nokia.n-gage.symbian.install</mime-type>
</mime-mapping>
<mime-mapping>
<extension>n3</extension>
<mime-type>text/n3</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nb</extension>
<mime-type>application/mathematica</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nbp</extension>
<mime-type>application/vnd.wolfram.player</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nc</extension>
<mime-type>application/x-netcdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ncx</extension>
<mime-type>application/x-dtbncx+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nfo</extension>
<mime-type>text/x-nfo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ngdat</extension>
<mime-type>application/vnd.nokia.n-gage.data</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nitf</extension>
<mime-type>application/vnd.nitf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nlu</extension>
<mime-type>application/vnd.neurolanguage.nlu</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nml</extension>
<mime-type>application/vnd.enliven</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nnd</extension>
<mime-type>application/vnd.noblenet-directory</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nns</extension>
<mime-type>application/vnd.noblenet-sealer</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nnw</extension>
<mime-type>application/vnd.noblenet-web</mime-type>
</mime-mapping>
<mime-mapping>
<extension>npx</extension>
<mime-type>image/vnd.net-fpx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nsc</extension>
<mime-type>application/x-conference</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nsf</extension>
<mime-type>application/vnd.lotus-notes</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ntf</extension>
<mime-type>application/vnd.nitf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nzb</extension>
<mime-type>application/x-nzb</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oa2</extension>
<mime-type>application/vnd.fujitsu.oasys2</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oa3</extension>
<mime-type>application/vnd.fujitsu.oasys3</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oas</extension>
<mime-type>application/vnd.fujitsu.oasys</mime-type>
</mime-mapping>
<mime-mapping>
<extension>obd</extension>
<mime-type>application/x-msbinder</mime-type>
</mime-mapping>
<mime-mapping>
<extension>obj</extension>
<mime-type>application/x-tgif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oda</extension>
<mime-type>application/oda</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Database -->
<extension>odb</extension>
<mime-type>application/vnd.oasis.opendocument.database</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Chart -->
<extension>odc</extension>
<mime-type>application/vnd.oasis.opendocument.chart</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Formula -->
<extension>odf</extension>
<mime-type>application/vnd.oasis.opendocument.formula</mime-type>
</mime-mapping>
<mime-mapping>
<extension>odft</extension>
<mime-type>application/vnd.oasis.opendocument.formula-template</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Drawing -->
<extension>odg</extension>
<mime-type>application/vnd.oasis.opendocument.graphics</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Image -->
<extension>odi</extension>
<mime-type>application/vnd.oasis.opendocument.image</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Master Document -->
<extension>odm</extension>
<mime-type>application/vnd.oasis.opendocument.text-master</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Presentation -->
<extension>odp</extension>
<mime-type>application/vnd.oasis.opendocument.presentation</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Spreadsheet -->
<extension>ods</extension>
<mime-type>application/vnd.oasis.opendocument.spreadsheet</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Text -->
<extension>odt</extension>
<mime-type>application/vnd.oasis.opendocument.text</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oga</extension>
<mime-type>audio/ogg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ogg</extension>
<mime-type>audio/ogg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ogv</extension>
<mime-type>video/ogg</mime-type>
</mime-mapping>
<mime-mapping>
<!-- xiph mime types -->
<extension>ogx</extension>
<mime-type>application/ogg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>omdoc</extension>
<mime-type>application/omdoc+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>onepkg</extension>
<mime-type>application/onenote</mime-type>
</mime-mapping>
<mime-mapping>
<extension>onetmp</extension>
<mime-type>application/onenote</mime-type>
</mime-mapping>
<mime-mapping>
<extension>onetoc</extension>
<mime-type>application/onenote</mime-type>
</mime-mapping>
<mime-mapping>
<extension>onetoc2</extension>
<mime-type>application/onenote</mime-type>
</mime-mapping>
<mime-mapping>
<extension>opf</extension>
<mime-type>application/oebps-package+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>opml</extension>
<mime-type>text/x-opml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oprc</extension>
<mime-type>application/vnd.palm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>org</extension>
<mime-type>application/vnd.lotus-organizer</mime-type>
</mime-mapping>
<mime-mapping>
<extension>osf</extension>
<mime-type>application/vnd.yamaha.openscoreformat</mime-type>
</mime-mapping>
<mime-mapping>
<extension>osfpvg</extension>
<mime-type>application/vnd.yamaha.openscoreformat.osfpvg+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>otc</extension>
<mime-type>application/vnd.oasis.opendocument.chart-template</mime-type>
</mime-mapping>
<mime-mapping>
<extension>otf</extension>
<mime-type>application/x-font-otf</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Drawing Template -->
<extension>otg</extension>
<mime-type>application/vnd.oasis.opendocument.graphics-template</mime-type>
</mime-mapping>
<mime-mapping>
<!-- HTML Document Template -->
<extension>oth</extension>
<mime-type>application/vnd.oasis.opendocument.text-web</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oti</extension>
<mime-type>application/vnd.oasis.opendocument.image-template</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Presentation Template -->
<extension>otp</extension>
<mime-type>application/vnd.oasis.opendocument.presentation-template</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Spreadsheet Template -->
<extension>ots</extension>
<mime-type>application/vnd.oasis.opendocument.spreadsheet-template</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Text Template -->
<extension>ott</extension>
<mime-type>application/vnd.oasis.opendocument.text-template</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oxps</extension>
<mime-type>application/oxps</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oxt</extension>
<mime-type>application/vnd.openofficeorg.extension</mime-type>
</mime-mapping>
<mime-mapping>
<extension>p</extension>
<mime-type>text/x-pascal</mime-type>
</mime-mapping>
<mime-mapping>
<extension>p10</extension>
<mime-type>application/pkcs10</mime-type>
</mime-mapping>
<mime-mapping>
<extension>p12</extension>
<mime-type>application/x-pkcs12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>p7b</extension>
<mime-type>application/x-pkcs7-certificates</mime-type>
</mime-mapping>
<mime-mapping>
<extension>p7c</extension>
<mime-type>application/pkcs7-mime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>p7m</extension>
<mime-type>application/pkcs7-mime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>p7r</extension>
<mime-type>application/x-pkcs7-certreqresp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>p7s</extension>
<mime-type>application/pkcs7-signature</mime-type>
</mime-mapping>
<mime-mapping>
<extension>p8</extension>
<mime-type>application/pkcs8</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pas</extension>
<mime-type>text/x-pascal</mime-type>
</mime-mapping>
<mime-mapping>
<extension>paw</extension>
<mime-type>application/vnd.pawaafile</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pbd</extension>
<mime-type>application/vnd.powerbuilder6</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pbm</extension>
<mime-type>image/x-portable-bitmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pcap</extension>
<mime-type>application/vnd.tcpdump.pcap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pcf</extension>
<mime-type>application/x-font-pcf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pcl</extension>
<mime-type>application/vnd.hp-pcl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pclxl</extension>
<mime-type>application/vnd.hp-pclxl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pct</extension>
<mime-type>image/pict</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pcurl</extension>
<mime-type>application/vnd.curl.pcurl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pcx</extension>
<mime-type>image/x-pcx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pdb</extension>
<mime-type>application/vnd.palm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pdf</extension>
<mime-type>application/pdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pfa</extension>
<mime-type>application/x-font-type1</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pfb</extension>
<mime-type>application/x-font-type1</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pfm</extension>
<mime-type>application/x-font-type1</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pfr</extension>
<mime-type>application/font-tdpfr</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pfx</extension>
<mime-type>application/x-pkcs12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pgm</extension>
<mime-type>image/x-portable-graymap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pgn</extension>
<mime-type>application/x-chess-pgn</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pgp</extension>
<mime-type>application/pgp-encrypted</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pic</extension>
<mime-type>image/pict</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pict</extension>
<mime-type>image/pict</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pkg</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pki</extension>
<mime-type>application/pkixcmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pkipath</extension>
<mime-type>application/pkix-pkipath</mime-type>
</mime-mapping>
<mime-mapping>
<extension>plb</extension>
<mime-type>application/vnd.3gpp.pic-bw-large</mime-type>
</mime-mapping>
<mime-mapping>
<extension>plc</extension>
<mime-type>application/vnd.mobius.plc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>plf</extension>
<mime-type>application/vnd.pocketlearn</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pls</extension>
<mime-type>audio/x-scpls</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pml</extension>
<mime-type>application/vnd.ctc-posml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>png</extension>
<mime-type>image/png</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pnm</extension>
<mime-type>image/x-portable-anymap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pnt</extension>
<mime-type>image/x-macpaint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>portpkg</extension>
<mime-type>application/vnd.macports.portpkg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pot</extension>
<mime-type>application/vnd.ms-powerpoint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>potm</extension>
<mime-type>application/vnd.ms-powerpoint.template.macroenabled.12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>potx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.presentationml.template</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ppam</extension>
<mime-type>application/vnd.ms-powerpoint.addin.macroenabled.12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ppd</extension>
<mime-type>application/vnd.cups-ppd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ppm</extension>
<mime-type>image/x-portable-pixmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pps</extension>
<mime-type>application/vnd.ms-powerpoint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ppsm</extension>
<mime-type>application/vnd.ms-powerpoint.slideshow.macroenabled.12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ppsx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.presentationml.slideshow</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ppt</extension>
<mime-type>application/vnd.ms-powerpoint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pptm</extension>
<mime-type>application/vnd.ms-powerpoint.presentation.macroenabled.12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pptx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.presentationml.presentation</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pqa</extension>
<mime-type>application/vnd.palm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>prc</extension>
<mime-type>application/x-mobipocket-ebook</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pre</extension>
<mime-type>application/vnd.lotus-freelance</mime-type>
</mime-mapping>
<mime-mapping>
<extension>prf</extension>
<mime-type>application/pics-rules</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ps</extension>
<mime-type>application/postscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>psb</extension>
<mime-type>application/vnd.3gpp.pic-bw-small</mime-type>
</mime-mapping>
<mime-mapping>
<extension>psd</extension>
<mime-type>image/vnd.adobe.photoshop</mime-type>
</mime-mapping>
<mime-mapping>
<extension>psf</extension>
<mime-type>application/x-font-linux-psf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pskcxml</extension>
<mime-type>application/pskc+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ptid</extension>
<mime-type>application/vnd.pvi.ptid1</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pub</extension>
<mime-type>application/x-mspublisher</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pvb</extension>
<mime-type>application/vnd.3gpp.pic-bw-var</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pwn</extension>
<mime-type>application/vnd.3m.post-it-notes</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pya</extension>
<mime-type>audio/vnd.ms-playready.media.pya</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pyv</extension>
<mime-type>video/vnd.ms-playready.media.pyv</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qam</extension>
<mime-type>application/vnd.epson.quickanime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qbo</extension>
<mime-type>application/vnd.intu.qbo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qfx</extension>
<mime-type>application/vnd.intu.qfx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qps</extension>
<mime-type>application/vnd.publishare-delta-tree</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qt</extension>
<mime-type>video/quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qti</extension>
<mime-type>image/x-quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qtif</extension>
<mime-type>image/x-quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qwd</extension>
<mime-type>application/vnd.quark.quarkxpress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qwt</extension>
<mime-type>application/vnd.quark.quarkxpress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qxb</extension>
<mime-type>application/vnd.quark.quarkxpress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qxd</extension>
<mime-type>application/vnd.quark.quarkxpress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qxl</extension>
<mime-type>application/vnd.quark.quarkxpress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qxt</extension>
<mime-type>application/vnd.quark.quarkxpress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ra</extension>
<mime-type>audio/x-pn-realaudio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ram</extension>
<mime-type>audio/x-pn-realaudio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rar</extension>
<mime-type>application/x-rar-compressed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ras</extension>
<mime-type>image/x-cmu-raster</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rcprofile</extension>
<mime-type>application/vnd.ipunplugged.rcprofile</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rdf</extension>
<mime-type>application/rdf+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rdz</extension>
<mime-type>application/vnd.data-vision.rdz</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rep</extension>
<mime-type>application/vnd.businessobjects</mime-type>
</mime-mapping>
<mime-mapping>
<extension>res</extension>
<mime-type>application/x-dtbresource+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rgb</extension>
<mime-type>image/x-rgb</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rif</extension>
<mime-type>application/reginfo+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rip</extension>
<mime-type>audio/vnd.rip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ris</extension>
<mime-type>application/x-research-info-systems</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rl</extension>
<mime-type>application/resource-lists+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rlc</extension>
<mime-type>image/vnd.fujixerox.edmics-rlc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rld</extension>
<mime-type>application/resource-lists-diff+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rm</extension>
<mime-type>application/vnd.rn-realmedia</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rmi</extension>
<mime-type>audio/midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rmp</extension>
<mime-type>audio/x-pn-realaudio-plugin</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rms</extension>
<mime-type>application/vnd.jcp.javame.midlet-rms</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rmvb</extension>
<mime-type>application/vnd.rn-realmedia-vbr</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rnc</extension>
<mime-type>application/relax-ng-compact-syntax</mime-type>
</mime-mapping>
<mime-mapping>
<extension>roa</extension>
<mime-type>application/rpki-roa</mime-type>
</mime-mapping>
<mime-mapping>
<extension>roff</extension>
<mime-type>text/troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rp9</extension>
<mime-type>application/vnd.cloanto.rp9</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rpss</extension>
<mime-type>application/vnd.nokia.radio-presets</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rpst</extension>
<mime-type>application/vnd.nokia.radio-preset</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rq</extension>
<mime-type>application/sparql-query</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rs</extension>
<mime-type>application/rls-services+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rsd</extension>
<mime-type>application/rsd+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rss</extension>
<mime-type>application/rss+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rtf</extension>
<mime-type>application/rtf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rtx</extension>
<mime-type>text/richtext</mime-type>
</mime-mapping>
<mime-mapping>
<extension>s</extension>
<mime-type>text/x-asm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>s3m</extension>
<mime-type>audio/s3m</mime-type>
</mime-mapping>
<mime-mapping>
<extension>saf</extension>
<mime-type>application/vnd.yamaha.smaf-audio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sbml</extension>
<mime-type>application/sbml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sc</extension>
<mime-type>application/vnd.ibm.secure-container</mime-type>
</mime-mapping>
<mime-mapping>
<extension>scd</extension>
<mime-type>application/x-msschedule</mime-type>
</mime-mapping>
<mime-mapping>
<extension>scm</extension>
<mime-type>application/vnd.lotus-screencam</mime-type>
</mime-mapping>
<mime-mapping>
<extension>scq</extension>
<mime-type>application/scvp-cv-request</mime-type>
</mime-mapping>
<mime-mapping>
<extension>scs</extension>
<mime-type>application/scvp-cv-response</mime-type>
</mime-mapping>
<mime-mapping>
<extension>scurl</extension>
<mime-type>text/vnd.curl.scurl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sda</extension>
<mime-type>application/vnd.stardivision.draw</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sdc</extension>
<mime-type>application/vnd.stardivision.calc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sdd</extension>
<mime-type>application/vnd.stardivision.impress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sdkd</extension>
<mime-type>application/vnd.solent.sdkm+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sdkm</extension>
<mime-type>application/vnd.solent.sdkm+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sdp</extension>
<mime-type>application/sdp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sdw</extension>
<mime-type>application/vnd.stardivision.writer</mime-type>
</mime-mapping>
<mime-mapping>
<extension>see</extension>
<mime-type>application/vnd.seemail</mime-type>
</mime-mapping>
<mime-mapping>
<extension>seed</extension>
<mime-type>application/vnd.fdsn.seed</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sema</extension>
<mime-type>application/vnd.sema</mime-type>
</mime-mapping>
<mime-mapping>
<extension>semd</extension>
<mime-type>application/vnd.semd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>semf</extension>
<mime-type>application/vnd.semf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ser</extension>
<mime-type>application/java-serialized-object</mime-type>
</mime-mapping>
<mime-mapping>
<extension>setpay</extension>
<mime-type>application/set-payment-initiation</mime-type>
</mime-mapping>
<mime-mapping>
<extension>setreg</extension>
<mime-type>application/set-registration-initiation</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sfd-hdstx</extension>
<mime-type>application/vnd.hydrostatix.sof-data</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sfs</extension>
<mime-type>application/vnd.spotfire.sfs</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sfv</extension>
<mime-type>text/x-sfv</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sgi</extension>
<mime-type>image/sgi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sgl</extension>
<mime-type>application/vnd.stardivision.writer-global</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sgm</extension>
<mime-type>text/sgml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sgml</extension>
<mime-type>text/sgml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sh</extension>
<mime-type>application/x-sh</mime-type>
</mime-mapping>
<mime-mapping>
<extension>shar</extension>
<mime-type>application/x-shar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>shf</extension>
<mime-type>application/shf+xml</mime-type>
</mime-mapping>
<!--
<mime-mapping>
<extension>shtml</extension>
<mime-type>text/x-server-parsed-html</mime-type>
</mime-mapping>
-->
<mime-mapping>
<extension>sid</extension>
<mime-type>image/x-mrsid-image</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sig</extension>
<mime-type>application/pgp-signature</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sil</extension>
<mime-type>audio/silk</mime-type>
</mime-mapping>
<mime-mapping>
<extension>silo</extension>
<mime-type>model/mesh</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sis</extension>
<mime-type>application/vnd.symbian.install</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sisx</extension>
<mime-type>application/vnd.symbian.install</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sit</extension>
<mime-type>application/x-stuffit</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sitx</extension>
<mime-type>application/x-stuffitx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>skd</extension>
<mime-type>application/vnd.koan</mime-type>
</mime-mapping>
<mime-mapping>
<extension>skm</extension>
<mime-type>application/vnd.koan</mime-type>
</mime-mapping>
<mime-mapping>
<extension>skp</extension>
<mime-type>application/vnd.koan</mime-type>
</mime-mapping>
<mime-mapping>
<extension>skt</extension>
<mime-type>application/vnd.koan</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sldm</extension>
<mime-type>application/vnd.ms-powerpoint.slide.macroenabled.12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sldx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.presentationml.slide</mime-type>
</mime-mapping>
<mime-mapping>
<extension>slt</extension>
<mime-type>application/vnd.epson.salt</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sm</extension>
<mime-type>application/vnd.stepmania.stepchart</mime-type>
</mime-mapping>
<mime-mapping>
<extension>smf</extension>
<mime-type>application/vnd.stardivision.math</mime-type>
</mime-mapping>
<mime-mapping>
<extension>smi</extension>
<mime-type>application/smil+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>smil</extension>
<mime-type>application/smil+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>smv</extension>
<mime-type>video/x-smv</mime-type>
</mime-mapping>
<mime-mapping>
<extension>smzip</extension>
<mime-type>application/vnd.stepmania.package</mime-type>
</mime-mapping>
<mime-mapping>
<extension>snd</extension>
<mime-type>audio/basic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>snf</extension>
<mime-type>application/x-font-snf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>so</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>spc</extension>
<mime-type>application/x-pkcs7-certificates</mime-type>
</mime-mapping>
<mime-mapping>
<extension>spf</extension>
<mime-type>application/vnd.yamaha.smaf-phrase</mime-type>
</mime-mapping>
<mime-mapping>
<extension>spl</extension>
<mime-type>application/x-futuresplash</mime-type>
</mime-mapping>
<mime-mapping>
<extension>spot</extension>
<mime-type>text/vnd.in3d.spot</mime-type>
</mime-mapping>
<mime-mapping>
<extension>spp</extension>
<mime-type>application/scvp-vp-response</mime-type>
</mime-mapping>
<mime-mapping>
<extension>spq</extension>
<mime-type>application/scvp-vp-request</mime-type>
</mime-mapping>
<mime-mapping>
<extension>spx</extension>
<mime-type>audio/ogg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sql</extension>
<mime-type>application/x-sql</mime-type>
</mime-mapping>
<mime-mapping>
<extension>src</extension>
<mime-type>application/x-wais-source</mime-type>
</mime-mapping>
<mime-mapping>
<extension>srt</extension>
<mime-type>application/x-subrip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sru</extension>
<mime-type>application/sru+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>srx</extension>
<mime-type>application/sparql-results+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ssdl</extension>
<mime-type>application/ssdl+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sse</extension>
<mime-type>application/vnd.kodak-descriptor</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ssf</extension>
<mime-type>application/vnd.epson.ssf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ssml</extension>
<mime-type>application/ssml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>st</extension>
<mime-type>application/vnd.sailingtracker.track</mime-type>
</mime-mapping>
<mime-mapping>
<extension>stc</extension>
<mime-type>application/vnd.sun.xml.calc.template</mime-type>
</mime-mapping>
<mime-mapping>
<extension>std</extension>
<mime-type>application/vnd.sun.xml.draw.template</mime-type>
</mime-mapping>
<mime-mapping>
<extension>stf</extension>
<mime-type>application/vnd.wt.stf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sti</extension>
<mime-type>application/vnd.sun.xml.impress.template</mime-type>
</mime-mapping>
<mime-mapping>
<extension>stk</extension>
<mime-type>application/hyperstudio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>stl</extension>
<mime-type>application/vnd.ms-pki.stl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>str</extension>
<mime-type>application/vnd.pg.format</mime-type>
</mime-mapping>
<mime-mapping>
<extension>stw</extension>
<mime-type>application/vnd.sun.xml.writer.template</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sub</extension>
<mime-type>text/vnd.dvb.subtitle</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sus</extension>
<mime-type>application/vnd.sus-calendar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>susp</extension>
<mime-type>application/vnd.sus-calendar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sv4cpio</extension>
<mime-type>application/x-sv4cpio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sv4crc</extension>
<mime-type>application/x-sv4crc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>svc</extension>
<mime-type>application/vnd.dvb.service</mime-type>
</mime-mapping>
<mime-mapping>
<extension>svd</extension>
<mime-type>application/vnd.svd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>svg</extension>
<mime-type>image/svg+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>svgz</extension>
<mime-type>image/svg+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>swa</extension>
<mime-type>application/x-director</mime-type>
</mime-mapping>
<mime-mapping>
<extension>swf</extension>
<mime-type>application/x-shockwave-flash</mime-type>
</mime-mapping>
<mime-mapping>
<extension>swi</extension>
<mime-type>application/vnd.aristanetworks.swi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sxc</extension>
<mime-type>application/vnd.sun.xml.calc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sxd</extension>
<mime-type>application/vnd.sun.xml.draw</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sxg</extension>
<mime-type>application/vnd.sun.xml.writer.global</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sxi</extension>
<mime-type>application/vnd.sun.xml.impress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sxm</extension>
<mime-type>application/vnd.sun.xml.math</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sxw</extension>
<mime-type>application/vnd.sun.xml.writer</mime-type>
</mime-mapping>
<mime-mapping>
<extension>t</extension>
<mime-type>text/troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>t3</extension>
<mime-type>application/x-t3vm-image</mime-type>
</mime-mapping>
<mime-mapping>
<extension>taglet</extension>
<mime-type>application/vnd.mynfc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tao</extension>
<mime-type>application/vnd.tao.intent-module-archive</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tar</extension>
<mime-type>application/x-tar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tcap</extension>
<mime-type>application/vnd.3gpp2.tcap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tcl</extension>
<mime-type>application/x-tcl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>teacher</extension>
<mime-type>application/vnd.smart.teacher</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tei</extension>
<mime-type>application/tei+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>teicorpus</extension>
<mime-type>application/tei+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tex</extension>
<mime-type>application/x-tex</mime-type>
</mime-mapping>
<mime-mapping>
<extension>texi</extension>
<mime-type>application/x-texinfo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>texinfo</extension>
<mime-type>application/x-texinfo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>text</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tfi</extension>
<mime-type>application/thraud+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tfm</extension>
<mime-type>application/x-tex-tfm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tga</extension>
<mime-type>image/x-tga</mime-type>
</mime-mapping>
<mime-mapping>
<extension>thmx</extension>
<mime-type>application/vnd.ms-officetheme</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tif</extension>
<mime-type>image/tiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tiff</extension>
<mime-type>image/tiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tmo</extension>
<mime-type>application/vnd.tmobile-livetv</mime-type>
</mime-mapping>
<mime-mapping>
<extension>torrent</extension>
<mime-type>application/x-bittorrent</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tpl</extension>
<mime-type>application/vnd.groove-tool-template</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tpt</extension>
<mime-type>application/vnd.trid.tpt</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tr</extension>
<mime-type>text/troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tra</extension>
<mime-type>application/vnd.trueapp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>trm</extension>
<mime-type>application/x-msterminal</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tsd</extension>
<mime-type>application/timestamped-data</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tsv</extension>
<mime-type>text/tab-separated-values</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ttc</extension>
<mime-type>application/x-font-ttf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ttf</extension>
<mime-type>application/x-font-ttf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ttl</extension>
<mime-type>text/turtle</mime-type>
</mime-mapping>
<mime-mapping>
<extension>twd</extension>
<mime-type>application/vnd.simtech-mindmapper</mime-type>
</mime-mapping>
<mime-mapping>
<extension>twds</extension>
<mime-type>application/vnd.simtech-mindmapper</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txd</extension>
<mime-type>application/vnd.genomatix.tuxedo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txf</extension>
<mime-type>application/vnd.mobius.txf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>u32</extension>
<mime-type>application/x-authorware-bin</mime-type>
</mime-mapping>
<mime-mapping>
<extension>udeb</extension>
<mime-type>application/x-debian-package</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ufd</extension>
<mime-type>application/vnd.ufdl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ufdl</extension>
<mime-type>application/vnd.ufdl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ulw</extension>
<mime-type>audio/basic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ulx</extension>
<mime-type>application/x-glulx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>umj</extension>
<mime-type>application/vnd.umajin</mime-type>
</mime-mapping>
<mime-mapping>
<extension>unityweb</extension>
<mime-type>application/vnd.unity</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uoml</extension>
<mime-type>application/vnd.uoml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uri</extension>
<mime-type>text/uri-list</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uris</extension>
<mime-type>text/uri-list</mime-type>
</mime-mapping>
<mime-mapping>
<extension>urls</extension>
<mime-type>text/uri-list</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ustar</extension>
<mime-type>application/x-ustar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>utz</extension>
<mime-type>application/vnd.uiq.theme</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uu</extension>
<mime-type>text/x-uuencode</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uva</extension>
<mime-type>audio/vnd.dece.audio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvd</extension>
<mime-type>application/vnd.dece.data</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvf</extension>
<mime-type>application/vnd.dece.data</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvg</extension>
<mime-type>image/vnd.dece.graphic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvh</extension>
<mime-type>video/vnd.dece.hd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvi</extension>
<mime-type>image/vnd.dece.graphic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvm</extension>
<mime-type>video/vnd.dece.mobile</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvp</extension>
<mime-type>video/vnd.dece.pd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvs</extension>
<mime-type>video/vnd.dece.sd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvt</extension>
<mime-type>application/vnd.dece.ttml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvu</extension>
<mime-type>video/vnd.uvvu.mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvv</extension>
<mime-type>video/vnd.dece.video</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvva</extension>
<mime-type>audio/vnd.dece.audio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvd</extension>
<mime-type>application/vnd.dece.data</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvf</extension>
<mime-type>application/vnd.dece.data</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvg</extension>
<mime-type>image/vnd.dece.graphic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvh</extension>
<mime-type>video/vnd.dece.hd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvi</extension>
<mime-type>image/vnd.dece.graphic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvm</extension>
<mime-type>video/vnd.dece.mobile</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvp</extension>
<mime-type>video/vnd.dece.pd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvs</extension>
<mime-type>video/vnd.dece.sd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvt</extension>
<mime-type>application/vnd.dece.ttml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvu</extension>
<mime-type>video/vnd.uvvu.mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvv</extension>
<mime-type>video/vnd.dece.video</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvx</extension>
<mime-type>application/vnd.dece.unspecified</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvvz</extension>
<mime-type>application/vnd.dece.zip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvx</extension>
<mime-type>application/vnd.dece.unspecified</mime-type>
</mime-mapping>
<mime-mapping>
<extension>uvz</extension>
<mime-type>application/vnd.dece.zip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vcard</extension>
<mime-type>text/vcard</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vcd</extension>
<mime-type>application/x-cdlink</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vcf</extension>
<mime-type>text/x-vcard</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vcg</extension>
<mime-type>application/vnd.groove-vcard</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vcs</extension>
<mime-type>text/x-vcalendar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vcx</extension>
<mime-type>application/vnd.vcx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vis</extension>
<mime-type>application/vnd.visionary</mime-type>
</mime-mapping>
<mime-mapping>
<extension>viv</extension>
<mime-type>video/vnd.vivo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vob</extension>
<mime-type>video/x-ms-vob</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vor</extension>
<mime-type>application/vnd.stardivision.writer</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vox</extension>
<mime-type>application/x-authorware-bin</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vrml</extension>
<mime-type>model/vrml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vsd</extension>
<mime-type>application/vnd.visio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vsf</extension>
<mime-type>application/vnd.vsf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vss</extension>
<mime-type>application/vnd.visio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vst</extension>
<mime-type>application/vnd.visio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vsw</extension>
<mime-type>application/vnd.visio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vtu</extension>
<mime-type>model/vnd.vtu</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vxml</extension>
<mime-type>application/voicexml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>w3d</extension>
<mime-type>application/x-director</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wad</extension>
<mime-type>application/x-doom</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wav</extension>
<mime-type>audio/x-wav</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wax</extension>
<mime-type>audio/x-ms-wax</mime-type>
</mime-mapping>
<mime-mapping>
<!-- Wireless Bitmap -->
<extension>wbmp</extension>
<mime-type>image/vnd.wap.wbmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wbs</extension>
<mime-type>application/vnd.criticaltools.wbs+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wbxml</extension>
<mime-type>application/vnd.wap.wbxml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wcm</extension>
<mime-type>application/vnd.ms-works</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wdb</extension>
<mime-type>application/vnd.ms-works</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wdp</extension>
<mime-type>image/vnd.ms-photo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>weba</extension>
<mime-type>audio/webm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>webm</extension>
<mime-type>video/webm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>webp</extension>
<mime-type>image/webp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wg</extension>
<mime-type>application/vnd.pmi.widget</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wgt</extension>
<mime-type>application/widget</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wks</extension>
<mime-type>application/vnd.ms-works</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wm</extension>
<mime-type>video/x-ms-wm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wma</extension>
<mime-type>audio/x-ms-wma</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wmd</extension>
<mime-type>application/x-ms-wmd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wmf</extension>
<mime-type>application/x-msmetafile</mime-type>
</mime-mapping>
<mime-mapping>
<!-- WML Source -->
<extension>wml</extension>
<mime-type>text/vnd.wap.wml</mime-type>
</mime-mapping>
<mime-mapping>
<!-- Compiled WML -->
<extension>wmlc</extension>
<mime-type>application/vnd.wap.wmlc</mime-type>
</mime-mapping>
<mime-mapping>
<!-- WML Script Source -->
<extension>wmls</extension>
<mime-type>text/vnd.wap.wmlscript</mime-type>
</mime-mapping>
<mime-mapping>
<!-- Compiled WML Script -->
<extension>wmlsc</extension>
<mime-type>application/vnd.wap.wmlscriptc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wmv</extension>
<mime-type>video/x-ms-wmv</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wmx</extension>
<mime-type>video/x-ms-wmx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wmz</extension>
<mime-type>application/x-msmetafile</mime-type>
</mime-mapping>
<mime-mapping>
<extension>woff</extension>
<mime-type>application/x-font-woff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wpd</extension>
<mime-type>application/vnd.wordperfect</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wpl</extension>
<mime-type>application/vnd.ms-wpl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wps</extension>
<mime-type>application/vnd.ms-works</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wqd</extension>
<mime-type>application/vnd.wqd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wri</extension>
<mime-type>application/x-mswrite</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wrl</extension>
<mime-type>model/vrml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wsdl</extension>
<mime-type>application/wsdl+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wspolicy</extension>
<mime-type>application/wspolicy+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wtb</extension>
<mime-type>application/vnd.webturbo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wvx</extension>
<mime-type>video/x-ms-wvx</mime-type>
</mime-mapping>
<mime-mapping>
<extension>x32</extension>
<mime-type>application/x-authorware-bin</mime-type>
</mime-mapping>
<mime-mapping>
<extension>x3d</extension>
<mime-type>model/x3d+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>x3db</extension>
<mime-type>model/x3d+binary</mime-type>
</mime-mapping>
<mime-mapping>
<extension>x3dbz</extension>
<mime-type>model/x3d+binary</mime-type>
</mime-mapping>
<mime-mapping>
<extension>x3dv</extension>
<mime-type>model/x3d+vrml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>x3dvz</extension>
<mime-type>model/x3d+vrml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>x3dz</extension>
<mime-type>model/x3d+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xaml</extension>
<mime-type>application/xaml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xap</extension>
<mime-type>application/x-silverlight-app</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xar</extension>
<mime-type>application/vnd.xara</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xbap</extension>
<mime-type>application/x-ms-xbap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xbd</extension>
<mime-type>application/vnd.fujixerox.docuworks.binder</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xbm</extension>
<mime-type>image/x-xbitmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xdf</extension>
<mime-type>application/xcap-diff+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xdm</extension>
<mime-type>application/vnd.syncml.dm+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xdp</extension>
<mime-type>application/vnd.adobe.xdp+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xdssc</extension>
<mime-type>application/dssc+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xdw</extension>
<mime-type>application/vnd.fujixerox.docuworks</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xenc</extension>
<mime-type>application/xenc+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xer</extension>
<mime-type>application/patch-ops-error+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xfdf</extension>
<mime-type>application/vnd.adobe.xfdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xfdl</extension>
<mime-type>application/vnd.xfdl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xht</extension>
<mime-type>application/xhtml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xhtml</extension>
<mime-type>application/xhtml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xhvml</extension>
<mime-type>application/xv+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xif</extension>
<mime-type>image/vnd.xiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xla</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xlam</extension>
<mime-type>application/vnd.ms-excel.addin.macroenabled.12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xlc</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xlf</extension>
<mime-type>application/x-xliff+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xlm</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xls</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xlsb</extension>
<mime-type>application/vnd.ms-excel.sheet.binary.macroenabled.12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xlsm</extension>
<mime-type>application/vnd.ms-excel.sheet.macroenabled.12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xlsx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xlt</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xltm</extension>
<mime-type>application/vnd.ms-excel.template.macroenabled.12</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xltx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.template</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xlw</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xm</extension>
<mime-type>audio/xm</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xml</extension>
<mime-type>application/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xo</extension>
<mime-type>application/vnd.olpc-sugar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xop</extension>
<mime-type>application/xop+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xpi</extension>
<mime-type>application/x-xpinstall</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xpl</extension>
<mime-type>application/xproc+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xpm</extension>
<mime-type>image/x-xpixmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xpr</extension>
<mime-type>application/vnd.is-xpr</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xps</extension>
<mime-type>application/vnd.ms-xpsdocument</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xpw</extension>
<mime-type>application/vnd.intercon.formnet</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xpx</extension>
<mime-type>application/vnd.intercon.formnet</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsl</extension>
<mime-type>application/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xslt</extension>
<mime-type>application/xslt+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsm</extension>
<mime-type>application/vnd.syncml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xspf</extension>
<mime-type>application/xspf+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xul</extension>
<mime-type>application/vnd.mozilla.xul+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xvm</extension>
<mime-type>application/xv+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xvml</extension>
<mime-type>application/xv+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xwd</extension>
<mime-type>image/x-xwindowdump</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xyz</extension>
<mime-type>chemical/x-xyz</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xz</extension>
<mime-type>application/x-xz</mime-type>
</mime-mapping>
<mime-mapping>
<extension>yang</extension>
<mime-type>application/yang</mime-type>
</mime-mapping>
<mime-mapping>
<extension>yin</extension>
<mime-type>application/yin+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z</extension>
<mime-type>application/x-compress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>Z</extension>
<mime-type>application/x-compress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z1</extension>
<mime-type>application/x-zmachine</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z2</extension>
<mime-type>application/x-zmachine</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z3</extension>
<mime-type>application/x-zmachine</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z4</extension>
<mime-type>application/x-zmachine</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z5</extension>
<mime-type>application/x-zmachine</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z6</extension>
<mime-type>application/x-zmachine</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z7</extension>
<mime-type>application/x-zmachine</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z8</extension>
<mime-type>application/x-zmachine</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zaz</extension>
<mime-type>application/vnd.zzazz.deck+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zip</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zir</extension>
<mime-type>application/vnd.zul</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zirz</extension>
<mime-type>application/vnd.zul</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zmm</extension>
<mime-type>application/vnd.handheld-entertainment+xml</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.util;
import cn.how2j.diytomcat.http.Request;
import cn.how2j.diytomcat.http.Response;
import cn.how2j.diytomcat.http.StandardSession;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.SecureUtil;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import javax.servlet.ServletContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.*;
public class SessionManager {
private static Map<String, StandardSession> sessionMap = new HashMap<>();
private static int defaultTimeout = getTimeout();
static {
startSessionOutdateCheckThread();
}
public static HttpSession getSession(String jsessionid, Request request, Response response) {
if (null == jsessionid) {
return newSession(request, response);
} else {
StandardSession currentSession = sessionMap.get(jsessionid);
if (null == currentSession) {
return newSession(request, response);
} else {
currentSession.setLastAccessedTime(System.currentTimeMillis());
createCookieBySession(currentSession, request, response);
return currentSession;
}
}
}
private static void createCookieBySession(HttpSession session, Request request, Response response) {
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(session.getMaxInactiveInterval());
cookie.setPath(request.getContext().getPath());
response.addCookie(cookie);
}
private static HttpSession newSession(Request request, Response response) {
ServletContext servletContext = request.getServletContext();
String sid = generateSessionId();
StandardSession session = new StandardSession(sid, servletContext);
session.setMaxInactiveInterval(defaultTimeout);
sessionMap.put(sid, session);
createCookieBySession(session, request, response);
return session;
}
private static int getTimeout() {
int defaultResult = 30;
try {
Document d = Jsoup.parse(Constant.webXmlFile, "utf-8");
Elements es = d.select("session-config session-timeout");
if (es.isEmpty())
return defaultResult;
return Convert.toInt(es.get(0).text());
} catch (IOException e) {
return defaultResult;
}
}
private static void checkOutDateSession() {
Set<String> jsessionids = sessionMap.keySet();
List<String> outdateJessionIds = new ArrayList<>();
for (String jsessionid : jsessionids) {
StandardSession session = sessionMap.get(jsessionid);
long interval = System.currentTimeMillis() - session.getLastAccessedTime();
if (interval > session.getMaxInactiveInterval() * 1000)
outdateJessionIds.add(jsessionid);
}
for (String jsessionid : outdateJessionIds) {
sessionMap.remove(jsessionid);
}
}
private static void startSessionOutdateCheckThread() {
new Thread() {
public void run() {
while (true) {
checkOutDateSession();
ThreadUtil.sleep(1000 * 30);
}
}
}.start();
}
public static synchronized String generateSessionId() {
String result = null;
byte[] bytes = RandomUtil.randomBytes(16);
result = new String(bytes);
result = SecureUtil.md5(result);
result = result.toUpperCase();
return result;
}
}
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.http;
import cn.how2j.diytomcat.catalina.Context;
import cn.how2j.diytomcat.catalina.Engine;
import cn.how2j.diytomcat.catalina.Service;
import cn.how2j.diytomcat.util.MiniBrowser;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.convert.Converter;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import javax.servlet.ServletContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.*;
public class Request extends BaseRequest{
private String requestString;
private String uri;
private Socket socket;
private Context context;
private Service service;
private String method;
private String queryString;
private Map<String, String[]> parameterMap;
private Map<String, String> headerMap;
private Cookie[] cookies;
private HttpSession session;
public Request(Socket socket, Service service) throws IOException {
this.parameterMap = new HashMap();
this.headerMap = new HashMap<>();
this.socket = socket;
this.service = service;
parseHttpRequest();
if(StrUtil.isEmpty(requestString))
return;
parseUri();
parseContext();
parseMethod();
if(!"/".equals(context.getPath())){
uri = StrUtil.removePrefix(uri, context.getPath());
if(StrUtil.isEmpty(uri))
uri = "/";
}
parseParameters();
parseHeaders();
parseCookies();
}
private void parseMethod() {
method = StrUtil.subBefore(requestString, " ", false);
}
private void parseContext() {
Engine engine = service.getEngine();
context = engine.getDefaultHost().getContext(uri);
if(null!=context)
return;
String path = StrUtil.subBetween(uri, "/", "/");
if (null == path)
path = "/";
else
path = "/" + path;
context = engine.getDefaultHost().getContext(path);
if (null == context)
context = engine.getDefaultHost().getContext("/");
}
private void parseHttpRequest() throws IOException {
InputStream is = this.socket.getInputStream();
byte[] bytes = MiniBrowser.readBytes(is,false);
requestString = new String(bytes, "utf-8");
}
private void parseCookies() {
List<Cookie> cookieList = new ArrayList<>();
String cookies = headerMap.get("cookie");
if (null != cookies) {
String[] pairs = StrUtil.split(cookies, ";");
for (String pair : pairs) {
if (StrUtil.isBlank(pair))
continue;
// System.out.println(pair.length());
// System.out.println("pair:"+pair);
String[] segs = StrUtil.split(pair, "=");
String name = segs[0].trim();
String value = segs[1].trim();
Cookie cookie = new Cookie(name, value);
cookieList.add(cookie);
}
}
this.cookies = ArrayUtil.toArray(cookieList, Cookie.class);
}
private void parseUri() {
String temp;
temp = StrUtil.subBetween(requestString, " ", " ");
if (!StrUtil.contains(temp, '?')) {
uri = temp;
return;
}
temp = StrUtil.subBefore(temp, '?', false);
uri = temp;
}
public Context getContext() {
return context;
}
public String getUri() {
return uri;
}
public String getRequestString(){
return requestString;
}
@Override
public String getMethod() {
return method;
}
public ServletContext getServletContext() {
return context.getServletContext();
}
public String getRealPath(String path) {
return getServletContext().getRealPath(path);
}
private void parseParameters() {
if ("GET".equals(this.getMethod())) {
String url = StrUtil.subBetween(requestString, " ", " ");
if (StrUtil.contains(url, '?')) {
queryString = StrUtil.subAfter(url, '?', false);
}
}
if ("POST".equals(this.getMethod())) {
queryString = StrUtil.subAfter(requestString, "\r\n\r\n", false);
}
if (null == queryString || 0==queryString.length())
return;
queryString = URLUtil.decode(queryString);
String[] parameterValues = queryString.split("&");
if (null != parameterValues) {
for (String parameterValue : parameterValues) {
String[] nameValues = parameterValue.split("=");
String name = nameValues[0];
String value = nameValues[1];
String values[] = parameterMap.get(name);
if (null == values) {
values = new String[] { value };
parameterMap.put(name, values);
} else {
values = ArrayUtil.append(values, value);
parameterMap.put(name, values);
}
}
}
}
public String getParameter(String name) {
String values[] = parameterMap.get(name);
if (null != values && 0 != values.length)
return values[0];
return null;
}
public Map getParameterMap() {
return parameterMap;
}
public Enumeration getParameterNames() {
return Collections.enumeration(parameterMap.keySet());
}
public String[] getParameterValues(String name) {
return parameterMap.get(name);
}
public String getHeader(String name) {
if(null==name)
return null;
name = name.toLowerCase();
return headerMap.get(name);
}
public Enumeration getHeaderNames() {
Set keys = headerMap.keySet();
return Collections.enumeration(keys);
}
public int getIntHeader(String name) {
String value = headerMap.get(name);
return Convert.toInt(value, 0);
}
public void parseHeaders() {
StringReader stringReader = new StringReader(requestString);
List<String> lines = new ArrayList<>();
IoUtil.readLines(stringReader, lines);
for (int i = 1; i < lines.size(); i++) {
String line = lines.get(i);
if (0 == line.length())
break;
String[] segs = line.split(":");
String headerName = segs[0].toLowerCase();
String headerValue = segs[1];
headerMap.put(headerName, headerValue);
}
}
public String getLocalAddr() {
return socket.getLocalAddress().getHostAddress();
}
public String getLocalName() {
return socket.getLocalAddress().getHostName();
}
public int getLocalPort() {
return socket.getLocalPort();
}
public String getProtocol() {
return "HTTP:/1.1";
}
public String getRemoteAddr() {
InetSocketAddress isa = (InetSocketAddress) socket.getRemoteSocketAddress();
String temp = isa.getAddress().toString();
return StrUtil.subAfter(temp, "/", false);
}
public String getRemoteHost() {
InetSocketAddress isa = (InetSocketAddress) socket.getRemoteSocketAddress();
return isa.getHostName();
}
public int getRemotePort() {
return socket.getPort();
}
public String getScheme() {
return "http";
}
public String getServerName() {
return getHeader("host").trim();
}
public int getServerPort() {
return getLocalPort();
}
public String getContextPath() {
String result = this.context.getPath();
if ("/".equals(result))
return "";
return result;
}
public String getRequestURI() {
return uri;
}
public StringBuffer getRequestURL() {
StringBuffer url = new StringBuffer();
String scheme = getScheme();
int port = getServerPort();
if (port < 0) {
port = 80; // Work around java.net.URL bug
}
url.append(scheme);
url.append("://");
url.append(getServerName());
if ((scheme.equals("http") && (port != 80)) || (scheme.equals("https") && (port != 443))) {
url.append(':');
url.append(port);
}
url.append(getRequestURI());
return url;
}
public String getServletPath() {
return uri;
}
public Cookie[] getCookies() {
return cookies;
}
public String getJSessionIdFromCookie() {
if (null == cookies)
return null;
for (Cookie cookie : cookies) {
if ("JSESSIONID".equals(cookie.getName())) {
return cookie.getValue();
}
}
return null;
}
public HttpSession getSession() {
return session;
}
public void setSession(HttpSession session) {
this.session = session;
}
}
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.catalina;
import cn.how2j.diytomcat.http.Request;
import cn.how2j.diytomcat.http.Response;
import cn.how2j.diytomcat.servlets.DefaultServlet;
import cn.how2j.diytomcat.servlets.InvokerServlet;
import cn.how2j.diytomcat.util.Constant;
import cn.how2j.diytomcat.util.SessionManager;
import cn.how2j.diytomcat.util.WebXMLUtil;
import cn.how2j.diytomcat.webappservlet.HelloServlet;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.log.LogFactory;
import org.apache.el.util.ReflectionUtil;
import javax.servlet.Servlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class HttpProcessor {
public void execute(Socket s, Request request, Response response){
try {
String uri = request.getUri();
if(null==uri)
return;
prepareSession(request, response);
Context context = request.getContext();
String servletClassName = context.getServletClassName(uri);
if(null!=servletClassName)
InvokerServlet.getInstance().service(request,response);
else
DefaultServlet.getInstance().service(request,response);
if(Constant.CODE_200 == response.getStatus()){
handle200(s, response);
return;
}
if(Constant.CODE_404 == response.getStatus()){
handle404(s, uri);
return;
}
} catch (Exception e) {
LogFactory.get().error(e);
handle500(s,e);
}
finally{
try {
if(!s.isClosed())
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void handle200(Socket s, Response response) throws IOException {
String contentType = response.getContentType();
String headText = Constant.response_head_202;
String cookiesHeader = response.getCookiesHeader();
headText = StrUtil.format(headText, contentType, cookiesHeader);
byte[] head = headText.getBytes();
byte[] body = response.getBody();
byte[] responseBytes = new byte[head.length + body.length];
ArrayUtil.copy(head, 0, responseBytes, 0, head.length);
ArrayUtil.copy(body, 0, responseBytes, head.length, body.length);
OutputStream os = s.getOutputStream();
os.write(responseBytes);
}
private void handle404(Socket s, String uri) throws IOException {
OutputStream os = s.getOutputStream();
String responseText = StrUtil.format(Constant.textFormat_404, uri, uri);
responseText = Constant.response_head_404 + responseText;
byte[] responseByte = responseText.getBytes("utf-8");
os.write(responseByte);
}
private void handle500(Socket s, Exception e) {
try {
OutputStream os = s.getOutputStream();
StackTraceElement stes[] = e.getStackTrace();
StringBuffer sb = new StringBuffer();
sb.append(e.toString());
sb.append("\r\n");
for (StackTraceElement ste : stes) {
sb.append("\t");
sb.append(ste.toString());
sb.append("\r\n");
}
String msg = e.getMessage();
if (null != msg && msg.length() > 20)
msg = msg.substring(0, 19);
String text = StrUtil.format(Constant.textFormat_500, msg, e.toString(), sb.toString());
text = Constant.response_head_500 + text;
byte[] responseBytes = text.getBytes("utf-8");
os.write(responseBytes);
} catch (IOException e1) {
e1.printStackTrace();
}
}
public void prepareSession(Request request, Response response) {
String jsessionid = request.getJSessionIdFromCookie();
HttpSession session = SessionManager.getSession(jsessionid, request, response);
request.setSession(session);
}
}
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.javaweb;
import java.io.IOException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SetSessionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
response.setContentType("text/html;charset=UTF-8");
request.getSession().setAttribute("name_in_session", "Gareen(session)");
response.getWriter().println(request.getSession().getId());
} catch (IOException e) {
e.printStackTrace();
}
}
}
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.javaweb;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class GetSessionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
response.setContentType("text/html;charset=UTF-8");
String name_in_session = (String)request.getSession().getAttribute("name_in_session");
response.getWriter().println(name_in_session);
} catch (IOException e) {
e.printStackTrace();
}
}
}
package cn.how2j.javaweb; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class GetSessionServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) { try { response.setContentType("text/html;charset=UTF-8"); String name_in_session = (String)request.getSession().getAttribute("name_in_session"); response.getWriter().println(name_in_session); } catch (IOException e) { e.printStackTrace(); } } }
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>cn.how2j.javaweb.HelloServlet</servlet-class>
<init-param>
<param-name>author</param-name>
<param-value>how2j(servlet)</param-value>
</init-param>
<init-param>
<param-name>site</param-name>
<param-value>http://how2j.cn(servlet)</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ParamServlet</servlet-name>
<servlet-class>cn.how2j.javaweb.ParamServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ParamServlet</servlet-name>
<url-pattern>/param</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>HeaderServlet</servlet-name>
<servlet-class>cn.how2j.javaweb.HeaderServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HeaderServlet</servlet-name>
<url-pattern>/header</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SetCookieServlet</servlet-name>
<servlet-class>cn.how2j.javaweb.SetCookieServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SetCookieServlet</servlet-name>
<url-pattern>/setCookie</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>GetCookieServlet</servlet-name>
<servlet-class>cn.how2j.javaweb.GetCookieServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GetCookieServlet</servlet-name>
<url-pattern>/getCookie</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SetSessionServlet</servlet-name>
<servlet-class>cn.how2j.javaweb.SetSessionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SetSessionServlet</servlet-name>
<url-pattern>/setSession</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>GetSessionServlet</servlet-name>
<servlet-class>cn.how2j.javaweb.GetSessionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GetSessionServlet</servlet-name>
<url-pattern>/getSession</url-pattern>
</servlet-mapping>
</web-app>
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.test;
import cn.how2j.diytomcat.util.MiniBrowser;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.NetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.http.HttpUtil;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import sun.net.www.content.text.plain;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class TestTomcat {
private static int port = 18080;
private static String ip = "127.0.0.1";
@BeforeClass
public static void beforeClass() {
//所有测试开始前看diy tomcat 是否已经启动了
if(NetUtil.isUsableLocalPort(port)) {
System.err.println("请先启动 位于端口: " +port+ " 的diy tomcat,否则无法进行单元测试");
System.exit(1);
}
else {
System.out.println("检测到 diy tomcat已经启动,开始进行单元测试");
}
}
@Test
public void testHelloTomcat() {
String html = getContentString("/");
Assert.assertEquals(html,"Hello DIY Tomcat from how2j.cn");
}
@Test
public void testTimeConsumeHtml() throws InterruptedException {
ThreadPoolExecutor threadPool = new ThreadPoolExecutor(20, 20, 60, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>(10));
TimeInterval timeInterval = DateUtil.timer();
for(int i = 0; i<3; i++){
threadPool.execute(new Runnable(){
public void run() {
getContentString("/timeConsume.html");
}
});
}
threadPool.shutdown();
threadPool.awaitTermination(1, TimeUnit.HOURS);
long duration = timeInterval.intervalMs();
Assert.assertTrue(duration < 3000);
}
@Test
public void testaIndex() {
String html = getContentString("/a");
Assert.assertEquals(html,"Hello DIY Tomcat from index.html@a");
}
@Test
public void testbIndex() {
String html = getContentString("/b/");
Assert.assertEquals(html,"Hello DIY Tomcat from index.html@b");
}
@Test
public void test404() {
String response = getHttpString("/not_exist.html");
containAssert(response, "HTTP/1.1 404 Not Found");
}
@Test
public void test500() {
String response = getHttpString("/500.html");
containAssert(response, "HTTP/1.1 500 Internal Server Error");
}
@Test
public void testaTxt() {
String response = getHttpString("/a.txt");
containAssert(response, "Content-Type: text/plain");
}
@Test
public void testPNG() {
byte[] bytes = getContentBytes("/logo.png");
int pngFileLength = 1672;
Assert.assertEquals(pngFileLength, bytes.length);
}
@Test
public void testPDF() {
byte[] bytes = getContentBytes("/etf.pdf");
int pngFileLength = 3590775;
Assert.assertEquals(pngFileLength, bytes.length);
}
@Test
public void testhello() {
String html = getContentString("/j2ee/hello");
Assert.assertEquals(html,"Hello DIY Tomcat from HelloServlet");
}
@Test
public void testJavawebHello() {
String html = getContentString("/javaweb/hello");
containAssert(html,"Hello DIY Tomcat from HelloServlet@javaweb");
}
@Test
public void testJavawebHelloSingleton() {
String html1 = getContentString("/javaweb/hello");
String html2 = getContentString("/javaweb/hello");
Assert.assertEquals(html1,html2);
}
@Test
public void testgetParam() {
String uri = "/javaweb/param";
String url = StrUtil.format("http://{}:{}{}", ip,port,uri);
Map<String,Object> params = new HashMap<>();
params.put("name","meepo");
String html = MiniBrowser.getContentString(url, params, true);
Assert.assertEquals(html,"get name:meepo");
}
@Test
public void testpostParam() {
String uri = "/javaweb/param";
String url = StrUtil.format("http://{}:{}{}", ip,port,uri);
Map<String,Object> params = new HashMap<>();
params.put("name","meepo");
String html = MiniBrowser.getContentString(url, params, false);
Assert.assertEquals(html,"post name:meepo");
}
@Test
public void testheader() {
String html = getContentString("/javaweb/header");
Assert.assertEquals(html,"how2j mini brower / java1.8");
}
@Test
public void testsetCookie() {
String http = getHttpString("/javaweb/setCookie");
containAssert(http,"Set-Cookie: name=Gareen(cookie); Expires=");
}
@Test
public void testgetCookie() throws IOException {
String url = StrUtil.format("http://{}:{}{}", ip,port,"/javaweb/getCookie");
URL u = new URL(url);
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
conn.setRequestProperty("Cookie","name=Gareen(cookie)");
conn.connect();
InputStream is = conn.getInputStream();
String html = IoUtil.read(is, "utf-8");
containAssert(html,"name:Gareen(cookie)");
}
@Test
public void testSession() throws IOException {
String jsessionid = getContentString("/javaweb/setSession");
if(null!=jsessionid)
jsessionid = jsessionid.trim();
String url = StrUtil.format("http://{}:{}{}", ip,port,"/javaweb/getSession");
URL u = new URL(url);
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
conn.setRequestProperty("Cookie","JSESSIONID="+jsessionid);
conn.connect();
InputStream is = conn.getInputStream();
String html = IoUtil.read(is, "utf-8");
containAssert(html,"Gareen(session)");
}
private byte[] getContentBytes(String uri) {
return getContentBytes(uri,false);
}
private byte[] getContentBytes(String uri,boolean gzip) {
String url = StrUtil.format("http://{}:{}{}", ip,port,uri);
return MiniBrowser.getContentBytes(url,false);
}
private String getContentString(String uri) {
String url = StrUtil.format("http://{}:{}{}", ip,port,uri);
String content = MiniBrowser.getContentString(url);
return content;
}
private String getHttpString(String uri) {
String url = StrUtil.format("http://{}:{}{}", ip,port,uri);
String http = MiniBrowser.getHttpString(url);
return http;
}
private void containAssert(String html, String string) {
boolean match = StrUtil.containsAny(html, string);
Assert.assertTrue(match);
}
}
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2021-03-08
checkOutDateSession()有点问题
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-09-19
每次访问都生成新的新的sessionId
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-09-02
sessionMap是不是应该用ConcurrentHashMap类型?
2020-08-15
如何确保sessionid的唯一性
2020-08-15
为什么在newSession的时候没有设置LastAccessedTime
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 1 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|