diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/compiler.xml" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/compiler.xml" new file mode 100644 index 0000000000000000000000000000000000000000..bb0154bfdc9b17c46cd688e91ece1a207aa86466 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/compiler.xml" @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/encodings.xml" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/encodings.xml" new file mode 100644 index 0000000000000000000000000000000000000000..aa00ffab7828f4818589659c804ec2cfd99baed3 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/encodings.xml" @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/misc.xml" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/misc.xml" new file mode 100644 index 0000000000000000000000000000000000000000..32d5f87c3b608ba34a14c1ef0c3102054ce3f12e --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/misc.xml" @@ -0,0 +1,17 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/workspace.xml" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/workspace.xml" new file mode 100644 index 0000000000000000000000000000000000000000..544fd60af790f8b2a70023202f42b0ef827b7109 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/.idea/workspace.xml" @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1618146698201 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + file://$PROJECT_DIR$/src/main/java/com/zimu/mvc/servlet/MyDispatcherServlet.java + 42 + + + file://$PROJECT_DIR$/src/main/java/com/zimu/mvc/servlet/MyDispatcherServlet.java + 60 + + + file://$PROJECT_DIR$/src/main/java/com/zimu/mvc/servlet/MyDispatcherServlet.java + 52 + + + + + \ No newline at end of file diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/myMVC.iml" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/myMVC.iml" new file mode 100644 index 0000000000000000000000000000000000000000..78b2cc53b203f0b97534bb1184cdc7b474339fb4 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/myMVC.iml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/pom.xml" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/pom.xml" new file mode 100644 index 0000000000000000000000000000000000000000..f0a82289bc3ff653c5aba245925f972829d0b5ac --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/pom.xml" @@ -0,0 +1,76 @@ + + + + 4.0.0 + + com.zimu + myMVC + 1.0-SNAPSHOT + war + + myMVC Maven Webapp + + http://www.example.com + + + UTF-8 + 11 + 11 + + + + + junit + junit + 4.12 + test + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + org.apache.commons + commons-lang3 + 3.9 + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 11 + 11 + utf-8 + + + -parameters + + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + 8080 + / + + + + + diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyAutowired.java" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyAutowired.java" new file mode 100644 index 0000000000000000000000000000000000000000..b1d598ffbb3b0e23704a81c4fa24f01584d8d05e --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyAutowired.java" @@ -0,0 +1,10 @@ +package com.zimu.mvc.annotation; + +import java.lang.annotation.*; + +@Documented +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface MyAutowired { + String value() default ""; +} diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyController.java" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyController.java" new file mode 100644 index 0000000000000000000000000000000000000000..6bbb86203d4974f9224d5c6c47755059c3ecf029 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyController.java" @@ -0,0 +1,10 @@ +package com.zimu.mvc.annotation; + +import java.lang.annotation.*; + +@Documented +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface MyController { + String value() default ""; +} diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyRequestMapping.java" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyRequestMapping.java" new file mode 100644 index 0000000000000000000000000000000000000000..845b451c9dc69bcad38564a383a061f7405f3759 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyRequestMapping.java" @@ -0,0 +1,10 @@ +package com.zimu.mvc.annotation; + +import java.lang.annotation.*; + +@Documented +@Target({ElementType.TYPE,ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface MyRequestMapping { + String value() default ""; +} diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyService.java" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyService.java" new file mode 100644 index 0000000000000000000000000000000000000000..346a08c3fa21bf9ed4dfb42ba4d29264477cb372 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/MyService.java" @@ -0,0 +1,10 @@ +package com.zimu.mvc.annotation; + +import java.lang.annotation.*; + +@Documented +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface MyService { + String value() default ""; +} diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/Security.java" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/Security.java" new file mode 100644 index 0000000000000000000000000000000000000000..3a464973505b096b8ca4be246e91eca57da480c6 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/annotation/Security.java" @@ -0,0 +1,10 @@ +package com.zimu.mvc.annotation; + +import java.lang.annotation.*; + +@Documented +@Target({ElementType.TYPE,ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface Security { + String[] value() default {"zhangsan","lisi","wangwu"}; +} diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/pojo/Handler.java" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/pojo/Handler.java" new file mode 100644 index 0000000000000000000000000000000000000000..f571e59ccc4b8d6a2628f37b00429e3d28a6e431 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/pojo/Handler.java" @@ -0,0 +1,62 @@ +package com.zimu.mvc.pojo; + +import javax.sound.midi.MetaEventListener; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Pattern; + + +/** + * 封装handler方法相关的信息 + */ +public class Handler { + + private Object controller; // method.invoke(obj,) + + private Method method; + + private Pattern pattern; // spring中url是支持正则的 + + private Map paramIndexMapping; // 参数顺序,是为了进行参数绑定,key是参数名,value代表是第几个参数 + + + public Handler(Object controller, Method method, Pattern pattern) { + this.controller = controller; + this.method = method; + this.pattern = pattern; + this.paramIndexMapping = new HashMap<>(); + } + + public Object getController() { + return controller; + } + + public void setController(Object controller) { + this.controller = controller; + } + + public Method getMethod() { + return method; + } + + public void setMethod(Method method) { + this.method = method; + } + + public Pattern getPattern() { + return pattern; + } + + public void setPattern(Pattern pattern) { + this.pattern = pattern; + } + + public Map getParamIndexMapping() { + return paramIndexMapping; + } + + public void setParamIndexMapping(Map paramIndexMapping) { + this.paramIndexMapping = paramIndexMapping; + } +} diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/servlet/MyDispatcherServlet.java" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/servlet/MyDispatcherServlet.java" new file mode 100644 index 0000000000000000000000000000000000000000..c4dba28f27948060857cc6dca0863721d8acb3a2 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/mvc/servlet/MyDispatcherServlet.java" @@ -0,0 +1,298 @@ +package com.zimu.mvc.servlet; + +import com.zimu.mvc.annotation.*; +import com.zimu.mvc.pojo.Handler; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Created by 梓沐 on 2021/4/12. + */ +public class MyDispatcherServlet extends HttpServlet { + //解析properties配置文件 + Properties properties = new Properties(); + //缓存扫描到的类的全限定名 + List classNames = new ArrayList(); + //IoC存放对象 + Map ioc = new HashMap(); + // 存储url和Method之间的映射关系 + private List handlerMapping = new ArrayList<>(); + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + doPost(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + // 处理请求:根据url,找到对应的Method方法,进行调用 + Handler handler = getHandler(req); + if(handler == null) { + resp.getWriter().write("404 not found"); + return; + } + Class[] parameterTypes = handler.getMethod().getParameterTypes(); + // 根据上述数组长度创建一个新的数组(参数数组,是要传入反射调用的) + Object[] paraValues = new Object[parameterTypes.length]; + Map parameterMap = req.getParameterMap(); + String value = null; + for (Map.Entry stringEntry : parameterMap.entrySet()) { + value = StringUtils.join(stringEntry.getValue(), ","); + if(!handler.getParamIndexMapping().containsKey(stringEntry.getKey())){continue;} + Integer integer = handler.getParamIndexMapping().get(stringEntry.getKey()); + // 把前台传递过来的参数值填充到对应的位置去 + paraValues[integer] = value; + } + Class aClass = handler.getController().getClass(); + if(aClass.isAnnotationPresent(Security.class)){ + Security annotation = aClass.getAnnotation(Security.class); + String[] valueName = annotation.value(); + Boolean b = true; + for (String s : valueName) { + if(s.equals(value)){ + b = false; + break; + } + } + if(b){ + System.out.println("this controller no have your name"); + return; + } + } + Method[] methods = handler.getController().getClass().getMethods(); + for (Method method : methods) { + if(method.isAnnotationPresent(Security.class)){ + Security annotation = method.getAnnotation(Security.class); + String[] value1 = annotation.value(); + Boolean b = true; + for (String s : value1) { + if(s.equals(value)){ + b = false; + break; + } + } + if(b){ + System.out.println("this controller no have your name"); + return; + } + } + } + Integer integer = handler.getParamIndexMapping().get(HttpServletRequest.class.getSimpleName()); + paraValues[integer] = req; + Integer integer1 = handler.getParamIndexMapping().get(HttpServletResponse.class.getSimpleName()); + paraValues[integer1] = resp; + //最终调用 + try { + handler.getMethod().invoke(handler.getController(),paraValues); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + + private Handler getHandler(HttpServletRequest req) { + if(handlerMapping.isEmpty()){return null;} + String requestURI = req.getRequestURI(); + for (Handler handler : handlerMapping) { + Matcher matcher = handler.getPattern().matcher(requestURI); + if(!matcher.matches()){continue;} + return handler; + } + return null; + } + + @Override + public void init(ServletConfig config) throws ServletException { + // 1 加载配置⽂件到Properties集合 mymvc.properties + String contextConfigLocation = config.getInitParameter("contextConfigLoaction"); + doLoadProperties(contextConfigLocation); + // 2 扫描相关的类 + String scanPackage = (String) properties.get("scanPackage"); + doScan(scanPackage); + // 3 初始化bean对象(实现ioc容器,基于注解) + doInstance(); + // 4 实现依赖注⼊ + doAutowired(); + // 5 构造⼀个HandlerMapping处理器映射器,将配置好的url和Method建⽴映射关系 + initHandlerMapping(); + // 等待请求进⼊,处理请求 + System.out.println("mymvc 初始化完成,等待请求进入"); + + } + + private void initHandlerMapping() { + if(ioc.isEmpty()){return;} + for (Map.Entry entry : ioc.entrySet()) { + Class aClass = entry.getValue().getClass(); + if(!aClass.isAnnotationPresent(MyController.class)){ continue; } + String baseUrl = null; + if(aClass.isAnnotationPresent(MyRequestMapping.class)){ + MyRequestMapping annotation = aClass.getAnnotation(MyRequestMapping.class); + baseUrl = annotation.value(); + } + Method[] methods = aClass.getMethods(); + for (Method method : methods) { + if(method.isAnnotationPresent(MyRequestMapping.class)){ + MyRequestMapping annotation = method.getAnnotation(MyRequestMapping.class); + String methodUrl = annotation.value(); + // 把method所有信息及url封装为一个Handler + Handler handler = new Handler(entry.getValue(), method, Pattern.compile(baseUrl + methodUrl)); + // 计算方法的参数位置信息 // query(HttpServletRequest request, HttpServletResponse response,String name) + Parameter[] parameters = method.getParameters(); + for (int i = 0; i < parameters.length; i++) { + Parameter parameter = parameters[i]; + if(parameter.getType() == HttpServletRequest.class || parameter.getType() == HttpServletResponse.class){ + handler.getParamIndexMapping().put(parameter.getType().getSimpleName(),i); + }else { + handler.getParamIndexMapping().put(parameter.getName(),i); + } + } + handlerMapping.add(handler); + } + } + } + } + + // 1 加载配置⽂件到Properties集合 mymvc.properties + private void doLoadProperties(String contextConfigLocation) { + try { + InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream(contextConfigLocation); + properties.load(resourceAsStream); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 2 扫描相关的类,扫描注解 + * 是不能根据包来判断有没有子包的,只能根据文件夹下有没有子文件夹 + * @param scanPackage + */ + private void doScan(String scanPackage) { + // /D:/workspace/myMVC/target/classes/ + String path = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + // /D:/workspace/myMVC/target/classes/com/zimu/mvc/user + String basePackage = path + scanPackage.replaceAll("\\.","/"); + //获取该文件夹下的所有子文件夹 + File[] files = new File(basePackage).listFiles(); + for (File file : files) { + // 如果是子文件夹 + if(file.isDirectory()){ + doScan(scanPackage + "." + file.getName()); + + }else{ + //缓存所有类的全限定名 + String className = scanPackage + "." + file.getName().replaceAll(".class", ""); + classNames.add(className); + } + } + } + + /** + * 基于classNames缓存的类的全限定类名,以及反射技术,完成对象创建和管理 + */ + private void doInstance() { + if(classNames.size() == 0){ return;} + for (Object className : classNames) { + //基于反射创建类 + try { + Class aClass = Class.forName((String) className); + if(aClass.isAnnotationPresent(MyController.class)){ + //获取指定类上的注解 + MyController annotation = aClass.getAnnotation(MyController.class); + //获取该注解上的value值 + String value = annotation.value(); + if(!"".equals(value)){ + ioc.put(value,aClass.newInstance()); + }else{ + //获取类名 + String simpleName = aClass.getSimpleName(); + //取类型的首字母小写为key + String lowerFirstSimpleName = lowerFirst(simpleName); + ioc.put(lowerFirstSimpleName,aClass.newInstance()); + } + } + else if(aClass.isAnnotationPresent(MyService.class)){ + MyService annotation = aClass.getAnnotation(MyService.class); + String value = annotation.value(); + if(!"".equals(value)){ + ioc.put(value,aClass.newInstance()); + }else { + String simpleName = aClass.getSimpleName(); + String lowerFirstSimpleName = lowerFirst(simpleName); + ioc.put(lowerFirstSimpleName,aClass.newInstance()); + } + //因为service是面向接口开发,所以再以接口名为key,存一分 + Class[] interfaces = aClass.getInterfaces(); + for (Class anInterface : interfaces) { + String name = anInterface.getName(); + ioc.put(name,aClass.newInstance()); + } + } + else { + continue; + } + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } + + } + + } + + /** + * 将类名首字母小写 + * @param simpleName + */ + private String lowerFirst(String simpleName) { + char[] chars = simpleName.toCharArray(); + if('A' <= chars[0] && chars[0] <= 'Z'){ + chars[0] += 32; + } + return String.valueOf(chars); + } + + /** + * 实现依赖注入 + */ + private void doAutowired() { + if(ioc.isEmpty()){return;} + for (Map.Entry entry: ioc.entrySet()) { + Field[] declaredFields = entry.getValue().getClass().getDeclaredFields(); + for (Field declaredField : declaredFields) { + if(!declaredField.isAnnotationPresent(MyAutowired.class)){ continue;} + MyAutowired annotation = declaredField.getAnnotation(MyAutowired.class); + String beanName = annotation.value(); + if("".equals(beanName)){ + beanName = declaredField.getType().getName(); + } + declaredField.setAccessible(true); + try { + declaredField.set(entry.getValue(),ioc.get(beanName)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + } + } + } +} diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/user/controller/DemoController.java" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/user/controller/DemoController.java" new file mode 100644 index 0000000000000000000000000000000000000000..d2f1ae15e66942ca566e0fce6c9afb5831615464 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/user/controller/DemoController.java" @@ -0,0 +1,34 @@ +package com.zimu.user.controller; + +import com.zimu.mvc.annotation.MyAutowired; +import com.zimu.mvc.annotation.MyController; +import com.zimu.mvc.annotation.MyRequestMapping; +import com.zimu.mvc.annotation.Security; +import com.zimu.user.service.DemoService; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * Created by 梓沐 on 2021/4/12. + */ +@MyController +@MyRequestMapping("/demo") +@Security +public class DemoController{ + + @MyAutowired + private DemoService demoService; + + @MyRequestMapping("/handler01") + @Security() + public void handler01(HttpServletRequest request, HttpServletResponse response, String name){ + demoService.query(name); + } + + @Security + @MyRequestMapping("/handler01") + public void handler02(HttpServletRequest request, HttpServletResponse response, String name){ + demoService.query(name); + } +} diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/user/service/DemoService.java" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/user/service/DemoService.java" new file mode 100644 index 0000000000000000000000000000000000000000..3dce2458cb55d33f918c0c67f276960442f4bd4f --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/user/service/DemoService.java" @@ -0,0 +1,8 @@ +package com.zimu.user.service; + +/** + * Created by 梓沐 on 2021/4/12. + */ +public interface DemoService { + void query(String name); +} diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/user/service/impl/DemoServiceImpl.java" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/user/service/impl/DemoServiceImpl.java" new file mode 100644 index 0000000000000000000000000000000000000000..541d86b2e44d26a8caec4583b8adfd3c3db961f7 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/java/com/zimu/user/service/impl/DemoServiceImpl.java" @@ -0,0 +1,15 @@ +package com.zimu.user.service.impl; + +import com.zimu.mvc.annotation.MyService; +import com.zimu.user.service.DemoService; + +/** + * Created by 梓沐 on 2021/4/12. + */ +@MyService("demoService") +public class DemoServiceImpl implements DemoService { + @Override + public void query(String name) { + System.out.println(name + " :你好"); + } +} diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/resources/mymvc.properties" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/resources/mymvc.properties" new file mode 100644 index 0000000000000000000000000000000000000000..5ae64e1f8e1556a20e22fd6c7e27b8555eb7b768 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/resources/mymvc.properties" @@ -0,0 +1 @@ +scanPackage=com.zimu.user \ No newline at end of file diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/webapp/WEB-INF/web.xml" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/webapp/WEB-INF/web.xml" new file mode 100644 index 0000000000000000000000000000000000000000..635ea3b5b48e4297a88c9c60b4104227a7526e64 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/webapp/WEB-INF/web.xml" @@ -0,0 +1,23 @@ + + + + Archetype Created Web Application + + + + mymvc + com.zimu.mvc.servlet.MyDispatcherServlet + + contextConfigLoaction + mymvc.properties + + + + + mymvc + /* + + + diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/webapp/index.jsp" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/webapp/index.jsp" new file mode 100644 index 0000000000000000000000000000000000000000..c38169bb958579c635a5c09ee2f379cc5956c0c2 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/src/main/webapp/index.jsp" @@ -0,0 +1,5 @@ + + +

Hello World!

+ + diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyAutowired.class" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyAutowired.class" new file mode 100644 index 0000000000000000000000000000000000000000..6026aed8e64e6b70b89ab06dca77b038e46a0212 Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyAutowired.class" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyController.class" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyController.class" new file mode 100644 index 0000000000000000000000000000000000000000..930eaa555aec3fa04aa2c472ee78a80d04119a0b Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyController.class" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyRequestMapping.class" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyRequestMapping.class" new file mode 100644 index 0000000000000000000000000000000000000000..39537ddebccdde23c7ec0b3448e68bb9737389ed Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyRequestMapping.class" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyService.class" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyService.class" new file mode 100644 index 0000000000000000000000000000000000000000..18b88e861ebbc6b25d482ada7db171b18664ceec Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/MyService.class" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/Security.class" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/Security.class" new file mode 100644 index 0000000000000000000000000000000000000000..66e1e529895eb2d4cb0d40d6c64f367a95856805 Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/annotation/Security.class" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/pojo/Handler.class" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/pojo/Handler.class" new file mode 100644 index 0000000000000000000000000000000000000000..f3419b440f458010225f6e4e8c90cbdfa82323e6 Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/pojo/Handler.class" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/servlet/MyDispatcherServlet.class" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/servlet/MyDispatcherServlet.class" new file mode 100644 index 0000000000000000000000000000000000000000..9073b718a3d74f3d621babb06a81e2501f42c7c3 Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/mvc/servlet/MyDispatcherServlet.class" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/user/controller/DemoController.class" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/user/controller/DemoController.class" new file mode 100644 index 0000000000000000000000000000000000000000..00a153218a9098f909a9fc5f6dc6acb4c3c1df5a Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/user/controller/DemoController.class" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/user/service/DemoService.class" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/user/service/DemoService.class" new file mode 100644 index 0000000000000000000000000000000000000000..ba767d379b088746f43d5b85c2b351ee5011ed64 Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/user/service/DemoService.class" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/user/service/impl/DemoServiceImpl.class" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/user/service/impl/DemoServiceImpl.class" new file mode 100644 index 0000000000000000000000000000000000000000..60012dc092d5de896604c10d86db34e5a6012211 Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/com/zimu/user/service/impl/DemoServiceImpl.class" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/mymvc.properties" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/mymvc.properties" new file mode 100644 index 0000000000000000000000000000000000000000..5ae64e1f8e1556a20e22fd6c7e27b8555eb7b768 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/classes/mymvc.properties" @@ -0,0 +1 @@ +scanPackage=com.zimu.user \ No newline at end of file diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" new file mode 100644 index 0000000000000000000000000000000000000000..eb0e29bbc5423f0973583b70547b421b26eb45ee --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" @@ -0,0 +1,10 @@ +com\zimu\mvc\annotation\MyAutowired.class +com\zimu\mvc\annotation\Security.class +com\zimu\mvc\annotation\MyController.class +com\zimu\mvc\pojo\Handler.class +com\zimu\user\service\impl\DemoServiceImpl.class +com\zimu\mvc\annotation\MyRequestMapping.class +com\zimu\user\service\DemoService.class +com\zimu\mvc\servlet\MyDispatcherServlet.class +com\zimu\mvc\annotation\MyService.class +com\zimu\user\controller\DemoController.class diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" new file mode 100644 index 0000000000000000000000000000000000000000..7b072a4319d56d095da5ce425f38d870a982851d --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" @@ -0,0 +1,10 @@ +D:\workspace\myMVC\src\main\java\com\zimu\mvc\annotation\MyService.java +D:\workspace\myMVC\src\main\java\com\zimu\mvc\annotation\MyAutowired.java +D:\workspace\myMVC\src\main\java\com\zimu\user\controller\DemoController.java +D:\workspace\myMVC\src\main\java\com\zimu\mvc\annotation\MyController.java +D:\workspace\myMVC\src\main\java\com\zimu\mvc\annotation\Security.java +D:\workspace\myMVC\src\main\java\com\zimu\user\service\impl\DemoServiceImpl.java +D:\workspace\myMVC\src\main\java\com\zimu\mvc\annotation\MyRequestMapping.java +D:\workspace\myMVC\src\main\java\com\zimu\mvc\servlet\MyDispatcherServlet.java +D:\workspace\myMVC\src\main\java\com\zimu\user\service\DemoService.java +D:\workspace\myMVC\src\main\java\com\zimu\mvc\pojo\Handler.java diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/conf/logging.properties" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/conf/logging.properties" new file mode 100644 index 0000000000000000000000000000000000000000..76c9512b2c1b9690adaae447f598479f35ee7ebb --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/conf/logging.properties" @@ -0,0 +1,64 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +############################################################ +# Handler specific properties. +# Describes specific configuration info for Handlers. +############################################################ + +1catalina.org.apache.juli.FileHandler.level = FINE +1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +1catalina.org.apache.juli.FileHandler.prefix = catalina. + +2localhost.org.apache.juli.FileHandler.level = FINE +2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +2localhost.org.apache.juli.FileHandler.prefix = localhost. + +3manager.org.apache.juli.FileHandler.level = FINE +3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +3manager.org.apache.juli.FileHandler.prefix = manager. + +4host-manager.org.apache.juli.FileHandler.level = FINE +4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +4host-manager.org.apache.juli.FileHandler.prefix = host-manager. + +java.util.logging.ConsoleHandler.level = FINE +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter + + +############################################################ +# Facility specific properties. +# Provides extra control for each logger. +############################################################ + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler + +# For example, set the org.apache.catalina.util.LifecycleBase logger to log +# each component that extends LifecycleBase changing state: +#org.apache.catalina.util.LifecycleBase.level = FINE + +# To see debug messages in TldLocationsCache, uncomment the following line: +#org.apache.jasper.compiler.TldLocationsCache.level = FINE diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/conf/tomcat-users.xml" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/conf/tomcat-users.xml" new file mode 100644 index 0000000000000000000000000000000000000000..7114f5d1a513080c465178862bab02e1aab035ed --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/conf/tomcat-users.xml" @@ -0,0 +1,26 @@ + + + + + diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/conf/web.xml" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/conf/web.xml" new file mode 100644 index 0000000000000000000000000000000000000000..cc8383cbf46534c3025e003854e5a03e257b6b40 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/conf/web.xml" @@ -0,0 +1,4283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.apache.catalina.servlets.DefaultServlet + + debug + 0 + + + listings + false + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + fork + false + + + xpoweredBy + false + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + / + + + + + jsp + *.jsp + *.jspx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30 + + + + + + + + + + + + 123 + application/vnd.lotus-1-2-3 + + + 3dml + text/vnd.in3d.3dml + + + 3g2 + video/3gpp2 + + + 3gp + video/3gpp + + + 7z + application/x-7z-compressed + + + aab + application/x-authorware-bin + + + aac + audio/x-aac + + + aam + application/x-authorware-map + + + aas + application/x-authorware-seg + + + abs + audio/x-mpeg + + + abw + application/x-abiword + + + ac + application/pkix-attr-cert + + + acc + application/vnd.americandynamics.acc + + + ace + application/x-ace-compressed + + + acu + application/vnd.acucobol + + + acutc + application/vnd.acucorp + + + adp + audio/adpcm + + + aep + application/vnd.audiograph + + + afm + application/x-font-type1 + + + afp + application/vnd.ibm.modcap + + + ahead + application/vnd.ahead.space + + + ai + application/postscript + + + aif + audio/x-aiff + + + aifc + audio/x-aiff + + + aiff + audio/x-aiff + + + aim + application/x-aim + + + air + application/vnd.adobe.air-application-installer-package+zip + + + ait + application/vnd.dvb.ait + + + ami + application/vnd.amiga.ami + + + anx + application/annodex + + + apk + application/vnd.android.package-archive + + + application + application/x-ms-application + + + apr + application/vnd.lotus-approach + + + art + image/x-jg + + + asc + application/pgp-signature + + + asf + video/x-ms-asf + + + asm + text/x-asm + + + aso + application/vnd.accpac.simply.aso + + + asx + video/x-ms-asf + + + atc + application/vnd.acucorp + + + atom + application/atom+xml + + + atomcat + application/atomcat+xml + + + atomsvc + application/atomsvc+xml + + + atx + application/vnd.antix.game-component + + + au + audio/basic + + + avi + video/x-msvideo + + + avx + video/x-rad-screenplay + + + aw + application/applixware + + + axa + audio/annodex + + + axv + video/annodex + + + azf + application/vnd.airzip.filesecure.azf + + + azs + application/vnd.airzip.filesecure.azs + + + azw + application/vnd.amazon.ebook + + + bat + application/x-msdownload + + + bcpio + application/x-bcpio + + + bdf + application/x-font-bdf + + + bdm + application/vnd.syncml.dm+wbxml + + + bed + application/vnd.realvnc.bed + + + bh2 + application/vnd.fujitsu.oasysprs + + + bin + application/octet-stream + + + bmi + application/vnd.bmi + + + bmp + image/bmp + + + body + text/html + + + book + application/vnd.framemaker + + + box + application/vnd.previewsystems.box + + + boz + application/x-bzip2 + + + bpk + application/octet-stream + + + btif + image/prs.btif + + + bz + application/x-bzip + + + bz2 + application/x-bzip2 + + + c + text/x-c + + + c11amc + application/vnd.cluetrust.cartomobile-config + + + c11amz + application/vnd.cluetrust.cartomobile-config-pkg + + + c4d + application/vnd.clonk.c4group + + + c4f + application/vnd.clonk.c4group + + + c4g + application/vnd.clonk.c4group + + + c4p + application/vnd.clonk.c4group + + + c4u + application/vnd.clonk.c4group + + + cab + application/vnd.ms-cab-compressed + + + cap + application/vnd.tcpdump.pcap + + + car + application/vnd.curl.car + + + cat + application/vnd.ms-pki.seccat + + + cc + text/x-c + + + cct + application/x-director + + + ccxml + application/ccxml+xml + + + cdbcmsg + application/vnd.contact.cmsg + + + cdf + application/x-cdf + + + cdkey + application/vnd.mediastation.cdkey + + + cdmia + application/cdmi-capability + + + cdmic + application/cdmi-container + + + cdmid + application/cdmi-domain + + + cdmio + application/cdmi-object + + + cdmiq + application/cdmi-queue + + + cdx + chemical/x-cdx + + + cdxml + application/vnd.chemdraw+xml + + + cdy + application/vnd.cinderella + + + cer + application/pkix-cert + + + cgm + image/cgm + + + chat + application/x-chat + + + chm + application/vnd.ms-htmlhelp + + + chrt + application/vnd.kde.kchart + + + cif + chemical/x-cif + + + cii + application/vnd.anser-web-certificate-issue-initiation + + + cil + application/vnd.ms-artgalry + + + cla + application/vnd.claymore + + + class + application/java + + + clkk + application/vnd.crick.clicker.keyboard + + + clkp + application/vnd.crick.clicker.palette + + + clkt + application/vnd.crick.clicker.template + + + clkw + application/vnd.crick.clicker.wordbank + + + clkx + application/vnd.crick.clicker + + + clp + application/x-msclip + + + cmc + application/vnd.cosmocaller + + + cmdf + chemical/x-cmdf + + + cml + chemical/x-cml + + + cmp + application/vnd.yellowriver-custom-menu + + + cmx + image/x-cmx + + + cod + application/vnd.rim.cod + + + com + application/x-msdownload + + + conf + text/plain + + + cpio + application/x-cpio + + + cpp + text/x-c + + + cpt + application/mac-compactpro + + + crd + application/x-mscardfile + + + crl + application/pkix-crl + + + crt + application/x-x509-ca-cert + + + cryptonote + application/vnd.rig.cryptonote + + + csh + application/x-csh + + + csml + chemical/x-csml + + + csp + application/vnd.commonspace + + + css + text/css + + + cst + application/x-director + + + csv + text/csv + + + cu + application/cu-seeme + + + curl + text/vnd.curl + + + cww + application/prs.cww + + + cxt + application/x-director + + + cxx + text/x-c + + + dae + model/vnd.collada+xml + + + daf + application/vnd.mobius.daf + + + dataless + application/vnd.fdsn.seed + + + davmount + application/davmount+xml + + + dcr + application/x-director + + + dcurl + text/vnd.curl.dcurl + + + dd2 + application/vnd.oma.dd2+xml + + + ddd + application/vnd.fujixerox.ddd + + + deb + application/x-debian-package + + + def + text/plain + + + deploy + application/octet-stream + + + der + application/x-x509-ca-cert + + + dfac + application/vnd.dreamfactory + + + dib + image/bmp + + + dic + text/x-c + + + dir + application/x-director + + + dis + application/vnd.mobius.dis + + + dist + application/octet-stream + + + distz + application/octet-stream + + + djv + image/vnd.djvu + + + djvu + image/vnd.djvu + + + dll + application/x-msdownload + + + dmg + application/octet-stream + + + dmp + application/vnd.tcpdump.pcap + + + dms + application/octet-stream + + + dna + application/vnd.dna + + + doc + application/msword + + + docm + application/vnd.ms-word.document.macroenabled.12 + + + docx + application/vnd.openxmlformats-officedocument.wordprocessingml.document + + + dot + application/msword + + + dotm + application/vnd.ms-word.template.macroenabled.12 + + + dotx + application/vnd.openxmlformats-officedocument.wordprocessingml.template + + + dp + application/vnd.osgi.dp + + + dpg + application/vnd.dpgraph + + + dra + audio/vnd.dra + + + dsc + text/prs.lines.tag + + + dssc + application/dssc+der + + + dtb + application/x-dtbook+xml + + + dtd + application/xml-dtd + + + dts + audio/vnd.dts + + + dtshd + audio/vnd.dts.hd + + + dump + application/octet-stream + + + dv + video/x-dv + + + dvb + video/vnd.dvb.file + + + dvi + application/x-dvi + + + dwf + model/vnd.dwf + + + dwg + image/vnd.dwg + + + dxf + image/vnd.dxf + + + dxp + application/vnd.spotfire.dxp + + + dxr + application/x-director + + + ecelp4800 + audio/vnd.nuera.ecelp4800 + + + ecelp7470 + audio/vnd.nuera.ecelp7470 + + + ecelp9600 + audio/vnd.nuera.ecelp9600 + + + ecma + application/ecmascript + + + edm + application/vnd.novadigm.edm + + + edx + application/vnd.novadigm.edx + + + efif + application/vnd.picsel + + + ei6 + application/vnd.pg.osasli + + + elc + application/octet-stream + + + eml + message/rfc822 + + + emma + application/emma+xml + + + eol + audio/vnd.digital-winds + + + eot + application/vnd.ms-fontobject + + + eps + application/postscript + + + epub + application/epub+zip + + + es3 + application/vnd.eszigno3+xml + + + esf + application/vnd.epson.esf + + + et3 + application/vnd.eszigno3+xml + + + etx + text/x-setext + + + exe + application/octet-stream + + + exi + application/exi + + + ext + application/vnd.novadigm.ext + + + ez + application/andrew-inset + + + ez2 + application/vnd.ezpix-album + + + ez3 + application/vnd.ezpix-package + + + f + text/x-fortran + + + f4v + video/x-f4v + + + f77 + text/x-fortran + + + f90 + text/x-fortran + + + fbs + image/vnd.fastbidsheet + + + fcs + application/vnd.isac.fcs + + + fdf + application/vnd.fdf + + + fe_launch + application/vnd.denovo.fcselayout-link + + + fg5 + application/vnd.fujitsu.oasysgp + + + fgd + application/x-director + + + fh + image/x-freehand + + + fh4 + image/x-freehand + + + fh5 + image/x-freehand + + + fh7 + image/x-freehand + + + fhc + image/x-freehand + + + fig + application/x-xfig + + + flac + audio/flac + + + fli + video/x-fli + + + flo + application/vnd.micrografx.flo + + + flv + video/x-flv + + + flw + application/vnd.kde.kivio + + + flx + text/vnd.fmi.flexstor + + + fly + text/vnd.fly + + + fm + application/vnd.framemaker + + + fnc + application/vnd.frogans.fnc + + + for + text/x-fortran + + + fpx + image/vnd.fpx + + + frame + application/vnd.framemaker + + + fsc + application/vnd.fsc.weblaunch + + + fst + image/vnd.fst + + + ftc + application/vnd.fluxtime.clip + + + fti + application/vnd.anser-web-funds-transfer-initiation + + + fvt + video/vnd.fvt + + + fxp + application/vnd.adobe.fxp + + + fxpl + application/vnd.adobe.fxp + + + fzs + application/vnd.fuzzysheet + + + g2w + application/vnd.geoplan + + + g3 + image/g3fax + + + g3w + application/vnd.geospace + + + gac + application/vnd.groove-account + + + gbr + application/rpki-ghostbusters + + + gdl + model/vnd.gdl + + + geo + application/vnd.dynageo + + + gex + application/vnd.geometry-explorer + + + ggb + application/vnd.geogebra.file + + + ggt + application/vnd.geogebra.tool + + + ghf + application/vnd.groove-help + + + gif + image/gif + + + gim + application/vnd.groove-identity-message + + + gmx + application/vnd.gmx + + + gnumeric + application/x-gnumeric + + + gph + application/vnd.flographit + + + gqf + application/vnd.grafeq + + + gqs + application/vnd.grafeq + + + gram + application/srgs + + + gre + application/vnd.geometry-explorer + + + grv + application/vnd.groove-injector + + + grxml + application/srgs+xml + + + gsf + application/x-font-ghostscript + + + gtar + application/x-gtar + + + gtm + application/vnd.groove-tool-message + + + gtw + model/vnd.gtw + + + gv + text/vnd.graphviz + + + gxt + application/vnd.geonext + + + gz + application/x-gzip + + + h + text/x-c + + + h261 + video/h261 + + + h263 + video/h263 + + + h264 + video/h264 + + + hal + application/vnd.hal+xml + + + hbci + application/vnd.hbci + + + hdf + application/x-hdf + + + hh + text/x-c + + + hlp + application/winhlp + + + hpgl + application/vnd.hp-hpgl + + + hpid + application/vnd.hp-hpid + + + hps + application/vnd.hp-hps + + + hqx + application/mac-binhex40 + + + htc + text/x-component + + + htke + application/vnd.kenameaapp + + + htm + text/html + + + html + text/html + + + hvd + application/vnd.yamaha.hv-dic + + + hvp + application/vnd.yamaha.hv-voice + + + hvs + application/vnd.yamaha.hv-script + + + i2g + application/vnd.intergeo + + + icc + application/vnd.iccprofile + + + ice + x-conference/x-cooltalk + + + icm + application/vnd.iccprofile + + + ico + image/x-icon + + + ics + text/calendar + + + ief + image/ief + + + ifb + text/calendar + + + ifm + application/vnd.shana.informed.formdata + + + iges + model/iges + + + igl + application/vnd.igloader + + + igm + application/vnd.insors.igm + + + igs + model/iges + + + igx + application/vnd.micrografx.igx + + + iif + application/vnd.shana.informed.interchange + + + imp + application/vnd.accpac.simply.imp + + + ims + application/vnd.ms-ims + + + in + text/plain + + + ink + application/inkml+xml + + + inkml + application/inkml+xml + + + iota + application/vnd.astraea-software.iota + + + ipfix + application/ipfix + + + ipk + application/vnd.shana.informed.package + + + irm + application/vnd.ibm.rights-management + + + irp + application/vnd.irepository.package+xml + + + iso + application/octet-stream + + + itp + application/vnd.shana.informed.formtemplate + + + ivp + application/vnd.immervision-ivp + + + ivu + application/vnd.immervision-ivu + + + jad + text/vnd.sun.j2me.app-descriptor + + + jam + application/vnd.jam + + + jar + application/java-archive + + + java + text/x-java-source + + + jisp + application/vnd.jisp + + + jlt + application/vnd.hp-jlyt + + + jnlp + application/x-java-jnlp-file + + + joda + application/vnd.joost.joda-archive + + + jpe + image/jpeg + + + jpeg + image/jpeg + + + jpg + image/jpeg + + + jpgm + video/jpm + + + jpgv + video/jpeg + + + jpm + video/jpm + + + js + application/javascript + + + jsf + text/plain + + + json + application/json + + + jspf + text/plain + + + kar + audio/midi + + + karbon + application/vnd.kde.karbon + + + kfo + application/vnd.kde.kformula + + + kia + application/vnd.kidspiration + + + kml + application/vnd.google-earth.kml+xml + + + kmz + application/vnd.google-earth.kmz + + + kne + application/vnd.kinar + + + knp + application/vnd.kinar + + + kon + application/vnd.kde.kontour + + + kpr + application/vnd.kde.kpresenter + + + kpt + application/vnd.kde.kpresenter + + + ksp + application/vnd.kde.kspread + + + ktr + application/vnd.kahootz + + + ktx + image/ktx + + + ktz + application/vnd.kahootz + + + kwd + application/vnd.kde.kword + + + kwt + application/vnd.kde.kword + + + lasxml + application/vnd.las.las+xml + + + latex + application/x-latex + + + lbd + application/vnd.llamagraphics.life-balance.desktop + + + lbe + application/vnd.llamagraphics.life-balance.exchange+xml + + + les + application/vnd.hhe.lesson-player + + + lha + application/octet-stream + + + link66 + application/vnd.route66.link66+xml + + + list + text/plain + + + list3820 + application/vnd.ibm.modcap + + + listafp + application/vnd.ibm.modcap + + + log + text/plain + + + lostxml + application/lost+xml + + + lrf + application/octet-stream + + + lrm + application/vnd.ms-lrm + + + ltf + application/vnd.frogans.ltf + + + lvp + audio/vnd.lucent.voice + + + lwp + application/vnd.lotus-wordpro + + + lzh + application/octet-stream + + + m13 + application/x-msmediaview + + + m14 + application/x-msmediaview + + + m1v + video/mpeg + + + m21 + application/mp21 + + + m2a + audio/mpeg + + + m2v + video/mpeg + + + m3a + audio/mpeg + + + m3u + audio/x-mpegurl + + + m3u8 + application/vnd.apple.mpegurl + + + m4a + audio/mp4 + + + m4b + audio/mp4 + + + m4r + audio/mp4 + + + m4u + video/vnd.mpegurl + + + m4v + video/mp4 + + + ma + application/mathematica + + + mac + image/x-macpaint + + + mads + application/mads+xml + + + mag + application/vnd.ecowin.chart + + + maker + application/vnd.framemaker + + + man + text/troff + + + mathml + application/mathml+xml + + + mb + application/mathematica + + + mbk + application/vnd.mobius.mbk + + + mbox + application/mbox + + + mc1 + application/vnd.medcalcdata + + + mcd + application/vnd.mcd + + + mcurl + text/vnd.curl.mcurl + + + mdb + application/x-msaccess + + + mdi + image/vnd.ms-modi + + + me + text/troff + + + mesh + model/mesh + + + meta4 + application/metalink4+xml + + + mets + application/mets+xml + + + mfm + application/vnd.mfmp + + + mft + application/rpki-manifest + + + mgp + application/vnd.osgeo.mapguide.package + + + mgz + application/vnd.proteus.magazine + + + mid + audio/midi + + + midi + audio/midi + + + mif + application/x-mif + + + mime + message/rfc822 + + + mj2 + video/mj2 + + + mjp2 + video/mj2 + + + mlp + application/vnd.dolby.mlp + + + mmd + application/vnd.chipnuts.karaoke-mmd + + + mmf + application/vnd.smaf + + + mmr + image/vnd.fujixerox.edmics-mmr + + + mny + application/x-msmoney + + + mobi + application/x-mobipocket-ebook + + + mods + application/mods+xml + + + mov + video/quicktime + + + movie + video/x-sgi-movie + + + mp1 + audio/mpeg + + + mp2 + audio/mpeg + + + mp21 + application/mp21 + + + mp2a + audio/mpeg + + + mp3 + audio/mpeg + + + mp4 + video/mp4 + + + mp4a + audio/mp4 + + + mp4s + application/mp4 + + + mp4v + video/mp4 + + + mpa + audio/mpeg + + + mpc + application/vnd.mophun.certificate + + + mpe + video/mpeg + + + mpeg + video/mpeg + + + mpega + audio/x-mpeg + + + mpg + video/mpeg + + + mpg4 + video/mp4 + + + mpga + audio/mpeg + + + mpkg + application/vnd.apple.installer+xml + + + mpm + application/vnd.blueice.multipass + + + mpn + application/vnd.mophun.application + + + mpp + application/vnd.ms-project + + + mpt + application/vnd.ms-project + + + mpv2 + video/mpeg2 + + + mpy + application/vnd.ibm.minipay + + + mqy + application/vnd.mobius.mqy + + + mrc + application/marc + + + mrcx + application/marcxml+xml + + + ms + text/troff + + + mscml + application/mediaservercontrol+xml + + + mseed + application/vnd.fdsn.mseed + + + mseq + application/vnd.mseq + + + msf + application/vnd.epson.msf + + + msh + model/mesh + + + msi + application/x-msdownload + + + msl + application/vnd.mobius.msl + + + msty + application/vnd.muvee.style + + + mts + model/vnd.mts + + + mus + application/vnd.musician + + + musicxml + application/vnd.recordare.musicxml+xml + + + mvb + application/x-msmediaview + + + mwf + application/vnd.mfer + + + mxf + application/mxf + + + mxl + application/vnd.recordare.musicxml + + + mxml + application/xv+xml + + + mxs + application/vnd.triscape.mxs + + + mxu + video/vnd.mpegurl + + + n-gage + application/vnd.nokia.n-gage.symbian.install + + + n3 + text/n3 + + + nb + application/mathematica + + + nbp + application/vnd.wolfram.player + + + nc + application/x-netcdf + + + ncx + application/x-dtbncx+xml + + + ngdat + application/vnd.nokia.n-gage.data + + + nlu + application/vnd.neurolanguage.nlu + + + nml + application/vnd.enliven + + + nnd + application/vnd.noblenet-directory + + + nns + application/vnd.noblenet-sealer + + + nnw + application/vnd.noblenet-web + + + npx + image/vnd.net-fpx + + + nsf + application/vnd.lotus-notes + + + oa2 + application/vnd.fujitsu.oasys2 + + + oa3 + application/vnd.fujitsu.oasys3 + + + oas + application/vnd.fujitsu.oasys + + + obd + application/x-msbinder + + + oda + application/oda + + + + odb + application/vnd.oasis.opendocument.database + + + + odc + application/vnd.oasis.opendocument.chart + + + + odf + application/vnd.oasis.opendocument.formula + + + odft + application/vnd.oasis.opendocument.formula-template + + + + odg + application/vnd.oasis.opendocument.graphics + + + + odi + application/vnd.oasis.opendocument.image + + + + odm + application/vnd.oasis.opendocument.text-master + + + + odp + application/vnd.oasis.opendocument.presentation + + + + ods + application/vnd.oasis.opendocument.spreadsheet + + + + odt + application/vnd.oasis.opendocument.text + + + oga + audio/ogg + + + ogg + audio/ogg + + + ogv + video/ogg + + + + ogx + application/ogg + + + onepkg + application/onenote + + + onetmp + application/onenote + + + onetoc + application/onenote + + + onetoc2 + application/onenote + + + opf + application/oebps-package+xml + + + oprc + application/vnd.palm + + + org + application/vnd.lotus-organizer + + + osf + application/vnd.yamaha.openscoreformat + + + osfpvg + application/vnd.yamaha.openscoreformat.osfpvg+xml + + + otc + application/vnd.oasis.opendocument.chart-template + + + otf + application/x-font-otf + + + + otg + application/vnd.oasis.opendocument.graphics-template + + + + oth + application/vnd.oasis.opendocument.text-web + + + oti + application/vnd.oasis.opendocument.image-template + + + + otp + application/vnd.oasis.opendocument.presentation-template + + + + ots + application/vnd.oasis.opendocument.spreadsheet-template + + + + ott + application/vnd.oasis.opendocument.text-template + + + oxps + application/oxps + + + oxt + application/vnd.openofficeorg.extension + + + p + text/x-pascal + + + p10 + application/pkcs10 + + + p12 + application/x-pkcs12 + + + p7b + application/x-pkcs7-certificates + + + p7c + application/pkcs7-mime + + + p7m + application/pkcs7-mime + + + p7r + application/x-pkcs7-certreqresp + + + p7s + application/pkcs7-signature + + + p8 + application/pkcs8 + + + pas + text/x-pascal + + + paw + application/vnd.pawaafile + + + pbd + application/vnd.powerbuilder6 + + + pbm + image/x-portable-bitmap + + + pcap + application/vnd.tcpdump.pcap + + + pcf + application/x-font-pcf + + + pcl + application/vnd.hp-pcl + + + pclxl + application/vnd.hp-pclxl + + + pct + image/pict + + + pcurl + application/vnd.curl.pcurl + + + pcx + image/x-pcx + + + pdb + application/vnd.palm + + + pdf + application/pdf + + + pfa + application/x-font-type1 + + + pfb + application/x-font-type1 + + + pfm + application/x-font-type1 + + + pfr + application/font-tdpfr + + + pfx + application/x-pkcs12 + + + pgm + image/x-portable-graymap + + + pgn + application/x-chess-pgn + + + pgp + application/pgp-encrypted + + + pic + image/pict + + + pict + image/pict + + + pkg + application/octet-stream + + + pki + application/pkixcmp + + + pkipath + application/pkix-pkipath + + + plb + application/vnd.3gpp.pic-bw-large + + + plc + application/vnd.mobius.plc + + + plf + application/vnd.pocketlearn + + + pls + audio/x-scpls + + + pml + application/vnd.ctc-posml + + + png + image/png + + + pnm + image/x-portable-anymap + + + pnt + image/x-macpaint + + + portpkg + application/vnd.macports.portpkg + + + pot + application/vnd.ms-powerpoint + + + potm + application/vnd.ms-powerpoint.template.macroenabled.12 + + + potx + application/vnd.openxmlformats-officedocument.presentationml.template + + + ppam + application/vnd.ms-powerpoint.addin.macroenabled.12 + + + ppd + application/vnd.cups-ppd + + + ppm + image/x-portable-pixmap + + + pps + application/vnd.ms-powerpoint + + + ppsm + application/vnd.ms-powerpoint.slideshow.macroenabled.12 + + + ppsx + application/vnd.openxmlformats-officedocument.presentationml.slideshow + + + ppt + application/vnd.ms-powerpoint + + + pptm + application/vnd.ms-powerpoint.presentation.macroenabled.12 + + + pptx + application/vnd.openxmlformats-officedocument.presentationml.presentation + + + pqa + application/vnd.palm + + + prc + application/x-mobipocket-ebook + + + pre + application/vnd.lotus-freelance + + + prf + application/pics-rules + + + ps + application/postscript + + + psb + application/vnd.3gpp.pic-bw-small + + + psd + image/vnd.adobe.photoshop + + + psf + application/x-font-linux-psf + + + pskcxml + application/pskc+xml + + + ptid + application/vnd.pvi.ptid1 + + + pub + application/x-mspublisher + + + pvb + application/vnd.3gpp.pic-bw-var + + + pwn + application/vnd.3m.post-it-notes + + + pya + audio/vnd.ms-playready.media.pya + + + pyv + video/vnd.ms-playready.media.pyv + + + qam + application/vnd.epson.quickanime + + + qbo + application/vnd.intu.qbo + + + qfx + application/vnd.intu.qfx + + + qps + application/vnd.publishare-delta-tree + + + qt + video/quicktime + + + qti + image/x-quicktime + + + qtif + image/x-quicktime + + + qwd + application/vnd.quark.quarkxpress + + + qwt + application/vnd.quark.quarkxpress + + + qxb + application/vnd.quark.quarkxpress + + + qxd + application/vnd.quark.quarkxpress + + + qxl + application/vnd.quark.quarkxpress + + + qxt + application/vnd.quark.quarkxpress + + + ra + audio/x-pn-realaudio + + + ram + audio/x-pn-realaudio + + + rar + application/x-rar-compressed + + + ras + image/x-cmu-raster + + + rcprofile + application/vnd.ipunplugged.rcprofile + + + rdf + application/rdf+xml + + + rdz + application/vnd.data-vision.rdz + + + rep + application/vnd.businessobjects + + + res + application/x-dtbresource+xml + + + rgb + image/x-rgb + + + rif + application/reginfo+xml + + + rip + audio/vnd.rip + + + rl + application/resource-lists+xml + + + rlc + image/vnd.fujixerox.edmics-rlc + + + rld + application/resource-lists-diff+xml + + + rm + application/vnd.rn-realmedia + + + rmi + audio/midi + + + rmp + audio/x-pn-realaudio-plugin + + + rms + application/vnd.jcp.javame.midlet-rms + + + rnc + application/relax-ng-compact-syntax + + + roa + application/rpki-roa + + + roff + text/troff + + + rp9 + application/vnd.cloanto.rp9 + + + rpss + application/vnd.nokia.radio-presets + + + rpst + application/vnd.nokia.radio-preset + + + rq + application/sparql-query + + + rs + application/rls-services+xml + + + rsd + application/rsd+xml + + + rss + application/rss+xml + + + rtf + application/rtf + + + rtx + text/richtext + + + s + text/x-asm + + + saf + application/vnd.yamaha.smaf-audio + + + sbml + application/sbml+xml + + + sc + application/vnd.ibm.secure-container + + + scd + application/x-msschedule + + + scm + application/vnd.lotus-screencam + + + scq + application/scvp-cv-request + + + scs + application/scvp-cv-response + + + scurl + text/vnd.curl.scurl + + + sda + application/vnd.stardivision.draw + + + sdc + application/vnd.stardivision.calc + + + sdd + application/vnd.stardivision.impress + + + sdkd + application/vnd.solent.sdkm+xml + + + sdkm + application/vnd.solent.sdkm+xml + + + sdp + application/sdp + + + sdw + application/vnd.stardivision.writer + + + see + application/vnd.seemail + + + seed + application/vnd.fdsn.seed + + + sema + application/vnd.sema + + + semd + application/vnd.semd + + + semf + application/vnd.semf + + + ser + application/java-serialized-object + + + setpay + application/set-payment-initiation + + + setreg + application/set-registration-initiation + + + sfd-hdstx + application/vnd.hydrostatix.sof-data + + + sfs + application/vnd.spotfire.sfs + + + sgl + application/vnd.stardivision.writer-global + + + sgm + text/sgml + + + sgml + text/sgml + + + sh + application/x-sh + + + shar + application/x-shar + + + shf + application/shf+xml + + + + sig + application/pgp-signature + + + silo + model/mesh + + + sis + application/vnd.symbian.install + + + sisx + application/vnd.symbian.install + + + sit + application/x-stuffit + + + sitx + application/x-stuffitx + + + skd + application/vnd.koan + + + skm + application/vnd.koan + + + skp + application/vnd.koan + + + skt + application/vnd.koan + + + sldm + application/vnd.ms-powerpoint.slide.macroenabled.12 + + + sldx + application/vnd.openxmlformats-officedocument.presentationml.slide + + + slt + application/vnd.epson.salt + + + sm + application/vnd.stepmania.stepchart + + + smf + application/vnd.stardivision.math + + + smi + application/smil+xml + + + smil + application/smil+xml + + + smzip + application/vnd.stepmania.package + + + snd + audio/basic + + + snf + application/x-font-snf + + + so + application/octet-stream + + + spc + application/x-pkcs7-certificates + + + spf + application/vnd.yamaha.smaf-phrase + + + spl + application/x-futuresplash + + + spot + text/vnd.in3d.spot + + + spp + application/scvp-vp-response + + + spq + application/scvp-vp-request + + + spx + audio/ogg + + + src + application/x-wais-source + + + sru + application/sru+xml + + + srx + application/sparql-results+xml + + + sse + application/vnd.kodak-descriptor + + + ssf + application/vnd.epson.ssf + + + ssml + application/ssml+xml + + + st + application/vnd.sailingtracker.track + + + stc + application/vnd.sun.xml.calc.template + + + std + application/vnd.sun.xml.draw.template + + + stf + application/vnd.wt.stf + + + sti + application/vnd.sun.xml.impress.template + + + stk + application/hyperstudio + + + stl + application/vnd.ms-pki.stl + + + str + application/vnd.pg.format + + + stw + application/vnd.sun.xml.writer.template + + + sub + text/vnd.dvb.subtitle + + + sus + application/vnd.sus-calendar + + + susp + application/vnd.sus-calendar + + + sv4cpio + application/x-sv4cpio + + + sv4crc + application/x-sv4crc + + + svc + application/vnd.dvb.service + + + svd + application/vnd.svd + + + svg + image/svg+xml + + + svgz + image/svg+xml + + + swa + application/x-director + + + swf + application/x-shockwave-flash + + + swi + application/vnd.aristanetworks.swi + + + sxc + application/vnd.sun.xml.calc + + + sxd + application/vnd.sun.xml.draw + + + sxg + application/vnd.sun.xml.writer.global + + + sxi + application/vnd.sun.xml.impress + + + sxm + application/vnd.sun.xml.math + + + sxw + application/vnd.sun.xml.writer + + + t + text/troff + + + taglet + application/vnd.mynfc + + + tao + application/vnd.tao.intent-module-archive + + + tar + application/x-tar + + + tcap + application/vnd.3gpp2.tcap + + + tcl + application/x-tcl + + + teacher + application/vnd.smart.teacher + + + tei + application/tei+xml + + + teicorpus + application/tei+xml + + + tex + application/x-tex + + + texi + application/x-texinfo + + + texinfo + application/x-texinfo + + + text + text/plain + + + tfi + application/thraud+xml + + + tfm + application/x-tex-tfm + + + thmx + application/vnd.ms-officetheme + + + tif + image/tiff + + + tiff + image/tiff + + + tmo + application/vnd.tmobile-livetv + + + torrent + application/x-bittorrent + + + tpl + application/vnd.groove-tool-template + + + tpt + application/vnd.trid.tpt + + + tr + text/troff + + + tra + application/vnd.trueapp + + + trm + application/x-msterminal + + + tsd + application/timestamped-data + + + tsv + text/tab-separated-values + + + ttc + application/x-font-ttf + + + ttf + application/x-font-ttf + + + ttl + text/turtle + + + twd + application/vnd.simtech-mindmapper + + + twds + application/vnd.simtech-mindmapper + + + txd + application/vnd.genomatix.tuxedo + + + txf + application/vnd.mobius.txf + + + txt + text/plain + + + u32 + application/x-authorware-bin + + + udeb + application/x-debian-package + + + ufd + application/vnd.ufdl + + + ufdl + application/vnd.ufdl + + + ulw + audio/basic + + + umj + application/vnd.umajin + + + unityweb + application/vnd.unity + + + uoml + application/vnd.uoml+xml + + + uri + text/uri-list + + + uris + text/uri-list + + + urls + text/uri-list + + + ustar + application/x-ustar + + + utz + application/vnd.uiq.theme + + + uu + text/x-uuencode + + + uva + audio/vnd.dece.audio + + + uvd + application/vnd.dece.data + + + uvf + application/vnd.dece.data + + + uvg + image/vnd.dece.graphic + + + uvh + video/vnd.dece.hd + + + uvi + image/vnd.dece.graphic + + + uvm + video/vnd.dece.mobile + + + uvp + video/vnd.dece.pd + + + uvs + video/vnd.dece.sd + + + uvt + application/vnd.dece.ttml+xml + + + uvu + video/vnd.uvvu.mp4 + + + uvv + video/vnd.dece.video + + + uvva + audio/vnd.dece.audio + + + uvvd + application/vnd.dece.data + + + uvvf + application/vnd.dece.data + + + uvvg + image/vnd.dece.graphic + + + uvvh + video/vnd.dece.hd + + + uvvi + image/vnd.dece.graphic + + + uvvm + video/vnd.dece.mobile + + + uvvp + video/vnd.dece.pd + + + uvvs + video/vnd.dece.sd + + + uvvt + application/vnd.dece.ttml+xml + + + uvvu + video/vnd.uvvu.mp4 + + + uvvv + video/vnd.dece.video + + + uvvx + application/vnd.dece.unspecified + + + uvvz + application/vnd.dece.zip + + + uvx + application/vnd.dece.unspecified + + + uvz + application/vnd.dece.zip + + + vcard + text/vcard + + + vcd + application/x-cdlink + + + vcf + text/x-vcard + + + vcg + application/vnd.groove-vcard + + + vcs + text/x-vcalendar + + + vcx + application/vnd.vcx + + + vis + application/vnd.visionary + + + viv + video/vnd.vivo + + + vor + application/vnd.stardivision.writer + + + vox + application/x-authorware-bin + + + vrml + model/vrml + + + vsd + application/vnd.visio + + + vsf + application/vnd.vsf + + + vss + application/vnd.visio + + + vst + application/vnd.visio + + + vsw + application/vnd.visio + + + vtu + model/vnd.vtu + + + vxml + application/voicexml+xml + + + w3d + application/x-director + + + wad + application/x-doom + + + wav + audio/x-wav + + + wax + audio/x-ms-wax + + + + wbmp + image/vnd.wap.wbmp + + + wbs + application/vnd.criticaltools.wbs+xml + + + wbxml + application/vnd.wap.wbxml + + + wcm + application/vnd.ms-works + + + wdb + application/vnd.ms-works + + + weba + audio/webm + + + webm + video/webm + + + webp + image/webp + + + wg + application/vnd.pmi.widget + + + wgt + application/widget + + + wks + application/vnd.ms-works + + + wm + video/x-ms-wm + + + wma + audio/x-ms-wma + + + wmd + application/x-ms-wmd + + + wmf + application/x-msmetafile + + + + wml + text/vnd.wap.wml + + + + wmlc + application/vnd.wap.wmlc + + + + wmls + text/vnd.wap.wmlscript + + + + wmlsc + application/vnd.wap.wmlscriptc + + + wmv + video/x-ms-wmv + + + wmx + video/x-ms-wmx + + + wmz + application/x-ms-wmz + + + woff + application/x-font-woff + + + wpd + application/vnd.wordperfect + + + wpl + application/vnd.ms-wpl + + + wps + application/vnd.ms-works + + + wqd + application/vnd.wqd + + + wri + application/x-mswrite + + + wrl + model/vrml + + + wsdl + application/wsdl+xml + + + wspolicy + application/wspolicy+xml + + + wtb + application/vnd.webturbo + + + wvx + video/x-ms-wvx + + + x32 + application/x-authorware-bin + + + x3d + application/vnd.hzn-3d-crossword + + + xap + application/x-silverlight-app + + + xar + application/vnd.xara + + + xbap + application/x-ms-xbap + + + xbd + application/vnd.fujixerox.docuworks.binder + + + xbm + image/x-xbitmap + + + xdf + application/xcap-diff+xml + + + xdm + application/vnd.syncml.dm+xml + + + xdp + application/vnd.adobe.xdp+xml + + + xdssc + application/dssc+xml + + + xdw + application/vnd.fujixerox.docuworks + + + xenc + application/xenc+xml + + + xer + application/patch-ops-error+xml + + + xfdf + application/vnd.adobe.xfdf + + + xfdl + application/vnd.xfdl + + + xht + application/xhtml+xml + + + xhtml + application/xhtml+xml + + + xhvml + application/xv+xml + + + xif + image/vnd.xiff + + + xla + application/vnd.ms-excel + + + xlam + application/vnd.ms-excel.addin.macroenabled.12 + + + xlc + application/vnd.ms-excel + + + xlm + application/vnd.ms-excel + + + xls + application/vnd.ms-excel + + + xlsb + application/vnd.ms-excel.sheet.binary.macroenabled.12 + + + xlsm + application/vnd.ms-excel.sheet.macroenabled.12 + + + xlsx + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + + + xlt + application/vnd.ms-excel + + + xltm + application/vnd.ms-excel.template.macroenabled.12 + + + xltx + application/vnd.openxmlformats-officedocument.spreadsheetml.template + + + xlw + application/vnd.ms-excel + + + xml + application/xml + + + xo + application/vnd.olpc-sugar + + + xop + application/xop+xml + + + xpi + application/x-xpinstall + + + xpm + image/x-xpixmap + + + xpr + application/vnd.is-xpr + + + xps + application/vnd.ms-xpsdocument + + + xpw + application/vnd.intercon.formnet + + + xpx + application/vnd.intercon.formnet + + + xsl + application/xml + + + xslt + application/xslt+xml + + + xsm + application/vnd.syncml+xml + + + xspf + application/xspf+xml + + + xul + application/vnd.mozilla.xul+xml + + + xvm + application/xv+xml + + + xvml + application/xv+xml + + + xwd + image/x-xwindowdump + + + xyz + chemical/x-xyz + + + yang + application/yang + + + yin + application/yin+xml + + + z + application/x-compress + + + Z + application/x-compress + + + zaz + application/vnd.zzazz.deck+xml + + + zip + application/zip + + + zir + application/vnd.zul + + + zirz + application/vnd.zul + + + zmm + application/vnd.handheld-entertainment+xml + + + + + + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/logs/access_log.2021-04-12" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/logs/access_log.2021-04-12" new file mode 100644 index 0000000000000000000000000000000000000000..c8b7a1091a4a9db0467912ac08ad1601309ce75c --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/logs/access_log.2021-04-12" @@ -0,0 +1,6 @@ +0:0:0:0:0:0:0:1 - - [12/Apr/2021:21:52:49 +0800] "GET /demo/handler HTTP/1.1" 405 1067 http-bio-8080-exec-1 53593 +0:0:0:0:0:0:0:1 - - [12/Apr/2021:21:52:58 +0800] "GET /demo/handler HTTP/1.1" 405 1067 http-bio-8080-exec-3 1 +127.0.0.1 - - [12/Apr/2021:23:37:36 +0800] "GET /demo/handler HTTP/1.1" 405 1067 http-bio-8080-exec-1 40 +127.0.0.1 - - [12/Apr/2021:23:37:39 +0800] "GET /demo/handler HTTP/1.1" 405 1067 http-bio-8080-exec-2 0 +127.0.0.1 - - [12/Apr/2021:23:37:58 +0800] "GET /demo/handler HTTP/1.1" 405 1067 http-bio-8080-exec-1 40 +127.0.0.1 - - [12/Apr/2021:23:55:07 +0800] "GET /demo/handler%EF%BC%9Flisi HTTP/1.1" 200 13 http-bio-8080-exec-1 50 diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/logs/access_log.2021-04-13" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/logs/access_log.2021-04-13" new file mode 100644 index 0000000000000000000000000000000000000000..5b1f2b95f206d707b9c8d00f0831ae50f2c54def --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/logs/access_log.2021-04-13" @@ -0,0 +1,3 @@ +127.0.0.1 - - [13/Apr/2021:00:01:50 +0800] "GET /demo/handler?lisi HTTP/1.1" 200 - http-bio-8080-exec-2 27761 +127.0.0.1 - - [13/Apr/2021:00:03:26 +0800] "GET /demo/handler?lisi HTTP/1.1" 200 - http-bio-8080-exec-1 25147 +127.0.0.1 - - [13/Apr/2021:00:05:04 +0800] "GET /demo/handler?name=lisi HTTP/1.1" 200 - http-bio-8080-exec-1 13021 diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/logs/access_log.2021-04-19" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/logs/access_log.2021-04-19" new file mode 100644 index 0000000000000000000000000000000000000000..f553e515ee1376f22e27c8b8fd96479286cbbf02 --- /dev/null +++ "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/code/myMVC/target/tomcat/logs/access_log.2021-04-19" @@ -0,0 +1,7 @@ +127.0.0.1 - - [19/Apr/2021:11:33:59 +0800] "GET /demo/handeler01?zhangsan HTTP/1.1" 200 13 http-bio-8080-exec-2 12279 +127.0.0.1 - - [19/Apr/2021:11:39:30 +0800] "GET /demo/handler01?zhangsan HTTP/1.1" 200 - http-bio-8080-exec-1 29841 +127.0.0.1 - - [19/Apr/2021:11:42:02 +0800] "GET /demo/handler01?username=zhangsan HTTP/1.1" 200 - http-bio-8080-exec-1 54796 +127.0.0.1 - - [19/Apr/2021:11:42:17 +0800] "GET /demo/handler01?username=zhangsan HTTP/1.1" 200 - http-bio-8080-exec-2 3899 +127.0.0.1 - - [19/Apr/2021:11:42:33 +0800] "GET /demo/handler01?username=111 HTTP/1.1" 200 - http-bio-8080-exec-3 8166 +127.0.0.1 - - [19/Apr/2021:11:51:38 +0800] "GET /demo/handler01?username=lisi HTTP/1.1" 200 - http-bio-8080-exec-1 18913 +127.0.0.1 - - [19/Apr/2021:11:51:58 +0800] "GET /demo/handler01?username=111 HTTP/1.1" 200 - http-bio-8080-exec-3 9241 diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/\351\252\214\350\257\201\350\265\204\346\226\231/20210419_114342.mp4" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/\351\252\214\350\257\201\350\265\204\346\226\231/20210419_114342.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..9aa207e5ba7a086c978015c1f3e203e0227503a8 Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/\351\252\214\350\257\201\350\265\204\346\226\231/20210419_114342.mp4" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/\351\252\214\350\257\201\350\265\204\346\226\231/SpringDataJPA.pdf" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/\351\252\214\350\257\201\350\265\204\346\226\231/SpringDataJPA.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..5407462f7b679a65768d0cb3efc5de3ddb280c6e Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/\351\252\214\350\257\201\350\265\204\346\226\231/SpringDataJPA.pdf" differ diff --git "a/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/\351\252\214\350\257\201\350\265\204\346\226\231/SpringMVC.pdf" "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/\351\252\214\350\257\201\350\265\204\346\226\231/SpringMVC.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..f97ee653acd0b34275ccea24a8ac90de04b1f0a6 Binary files /dev/null and "b/\346\235\216\345\255\237\345\235\244I(\346\250\241\345\235\227\344\270\211\344\275\234\344\270\232)/\351\252\214\350\257\201\350\265\204\346\226\231/SpringMVC.pdf" differ