From f6829e6733a7fc745a7bc454ef64aac9b2a3fd89 Mon Sep 17 00:00:00 2001 From: fangpeng <591930734@qq.com> Date: Mon, 21 Feb 2022 23:02:07 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0springmvc=E7=9A=84demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- springmvc-demo/.gitignore | 46 + springmvc-demo/pom.xml | 83 + .../com/lemon/controller/DemoController.java | 319 ++ .../com/lemon/converter/DateConverter.java | 30 + .../lemon/interceptor/MyIntercepter01.java | 57 + .../lemon/interceptor/MyIntercepter02.java | 57 + .../src/main/java/com/lemon/pojo/QueryVo.java | 37 + .../src/main/java/com/lemon/pojo/User.java | 28 + .../src/main/resources/springmvc.xml | 92 + springmvc-demo/src/main/resources/test.html | 10 + .../src/main/webapp/WEB-INF/js/jquery.min.js | 4 + .../src/main/webapp/WEB-INF/jsp/error.jsp | 11 + .../src/main/webapp/WEB-INF/jsp/success.jsp | 11 + .../src/main/webapp/WEB-INF/web.xml | 75 + springmvc-demo/src/main/webapp/index.jsp | 125 + .../1f6337fa-ce74-43da-8520-d4beac9e7c7b.mdj | 2900 +++++++++++++++++ 16 files changed, 3885 insertions(+) create mode 100644 springmvc-demo/.gitignore create mode 100644 springmvc-demo/pom.xml create mode 100644 springmvc-demo/src/main/java/com/lemon/controller/DemoController.java create mode 100644 springmvc-demo/src/main/java/com/lemon/converter/DateConverter.java create mode 100644 springmvc-demo/src/main/java/com/lemon/interceptor/MyIntercepter01.java create mode 100644 springmvc-demo/src/main/java/com/lemon/interceptor/MyIntercepter02.java create mode 100644 springmvc-demo/src/main/java/com/lemon/pojo/QueryVo.java create mode 100644 springmvc-demo/src/main/java/com/lemon/pojo/User.java create mode 100644 springmvc-demo/src/main/resources/springmvc.xml create mode 100644 springmvc-demo/src/main/resources/test.html create mode 100755 springmvc-demo/src/main/webapp/WEB-INF/js/jquery.min.js create mode 100644 springmvc-demo/src/main/webapp/WEB-INF/jsp/error.jsp create mode 100644 springmvc-demo/src/main/webapp/WEB-INF/jsp/success.jsp create mode 100644 springmvc-demo/src/main/webapp/WEB-INF/web.xml create mode 100644 springmvc-demo/src/main/webapp/index.jsp create mode 100644 springmvc-demo/src/main/webapp/uploads/2019-10-08/1f6337fa-ce74-43da-8520-d4beac9e7c7b.mdj diff --git a/springmvc-demo/.gitignore b/springmvc-demo/.gitignore new file mode 100644 index 00000000..efb4aab2 --- /dev/null +++ b/springmvc-demo/.gitignore @@ -0,0 +1,46 @@ +### Java template +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### Maven template +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +# https://github.com/takari/maven-wrapper#usage-without-binary-jar +.mvn/wrapper/maven-wrapper.jar + +### Example user template template +### Example user template + +# IntelliJ project files +.idea +*.iml +out +gen diff --git a/springmvc-demo/pom.xml b/springmvc-demo/pom.xml new file mode 100644 index 00000000..45120536 --- /dev/null +++ b/springmvc-demo/pom.xml @@ -0,0 +1,83 @@ + + + 4.0.0 + + com.lemon + springmvc-demo + 1.0-SNAPSHOT + war + + + UTF-8 + 8 + 8 + + + + + junit + junit + 4.12 + test + + + + + org.springframework + spring-webmvc + 5.1.12.RELEASE + + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + + + com.fasterxml.jackson.core + jackson-core + 2.9.0 + + + com.fasterxml.jackson.core + jackson-databind + 2.9.0 + + + com.fasterxml.jackson.core + jackson-annotations + 2.9.0 + + + + + + commons-fileupload + commons-fileupload + 1.3.1 + + + + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + 8080 + / + + + + + \ No newline at end of file diff --git a/springmvc-demo/src/main/java/com/lemon/controller/DemoController.java b/springmvc-demo/src/main/java/com/lemon/controller/DemoController.java new file mode 100644 index 00000000..2e04f8c1 --- /dev/null +++ b/springmvc-demo/src/main/java/com/lemon/controller/DemoController.java @@ -0,0 +1,319 @@ +package com.lemon.controller; + +import com.lemon.pojo.QueryVo; +import com.lemon.pojo.User; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.File; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; +import java.util.UUID; + +/** + * @Description: TODO + * @Author : Lemon-CS + * @Date : 2022年02月21日 3:38 下午 + */ +@Controller +@RequestMapping("/demo") +public class DemoController { + + /** + * url: http://localhost:8080/demo/handle01 + */ + @RequestMapping("/handle01") + public ModelAndView handle01(@ModelAttribute("name") String name) { + + //int c = 1/0; + + + Date date = new Date();// 服务器时间 + // 返回服务器时间到前端页面 + // 封装了数据和页面信息的 ModelAndView + ModelAndView modelAndView = new ModelAndView(); + // addObject 其实是向请求域中request.setAttribute("date",date); + modelAndView.addObject("date",date); + // 视图信息(封装跳转的页面信息) 逻辑视图名 + modelAndView.setViewName("success"); + return modelAndView; + } + + + /** + * SpringMVC在handler方法上传入Map、Model和ModelMap参数,并向这些参数中保存数据(放入到请求域),都可以在页面获取到 + * + * 它们之间是什么关系? + * 运行时的具体类型都是BindingAwareModelMap,相当于给BindingAwareModelMap中保存的数据都会放在请求域中 + * + * Map(jdk中的接口) Model(spring的接口) + * + * ModelMap(class,实现Map接口) + * + * BindingAwareModelMap继承了ExtendedModelMap,ExtendedModelMap继承了ModelMap,实现了Model接口 + */ + + + /** + * 直接声明形参ModelMap,封装数据 + * url: http://localhost:8080/demo/handle11 + * + * =================modelmap:class org.springframework.validation.support.BindingAwareModelMap + */ + @RequestMapping("/handle11") + public String handle11(ModelMap modelMap) { + Date date = new Date();// 服务器时间 + modelMap.addAttribute("date",date); + System.out.println("=================modelmap:" + modelMap.getClass()); + return "success"; + } + + /** + * 直接声明形参Model,封装数据 + * url: http://localhost:8080/demo/handle12 + * =================model:class org.springframework.validation.support.BindingAwareModelMap + */ + @RequestMapping("/handle12") + public String handle12(Model model) { + Date date = new Date(); + model.addAttribute("date",date); + System.out.println("=================model:" + model.getClass()); + return "success"; + } + + /** + * 直接声明形参Map集合,封装数据 + * url: http://localhost:8080/demo/handle13 + * =================map:class org.springframework.validation.support.BindingAwareModelMap + */ + @RequestMapping("/handle13") + public String handle13(Map map) { + Date date = new Date(); + map.put("date",date); + System.out.println("=================map:" + map.getClass()); + return "success"; + } + + /** + * + * SpringMVC 对原生servlet api的支持 url:/demo/handle02?id=1 + * + * 如果要在SpringMVC中使用servlet原生对象,比如HttpServletRequest\HttpServletResponse\HttpSession,直接在Handler方法形参中声明使用即可 + * + */ + @RequestMapping("/handle02") + public ModelAndView handle02(HttpServletRequest request, HttpServletResponse response, HttpSession session) { + String id = request.getParameter("id"); + + Date date = new Date(); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("date",date); + modelAndView.setViewName("success"); + return modelAndView; + } + + + /* + * SpringMVC 接收简单数据类型参数 url:/demo/handle03?id=1 + * + * 注意:接收简单数据类型参数,直接在handler方法的形参中声明即可,框架会取出参数值然后绑定到对应参数上 + * 要求:传递的参数名和声明的形参名称保持一致 + */ + @RequestMapping("/handle03") + public ModelAndView handle03(@RequestParam("ids") Integer id, Boolean flag) { + + Date date = new Date(); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("date",date); + modelAndView.setViewName("success"); + return modelAndView; + } + + + /* + * SpringMVC接收pojo类型参数 url:/demo/handle04?id=1&username=zhangsan + * + * 接收pojo类型参数,直接形参声明即可,类型就是Pojo的类型,形参名无所谓 + * 但是要求传递的参数名必须和Pojo的属性名保持一致 + */ + @RequestMapping("/handle04") + public ModelAndView handle04(User user) { + + Date date = new Date(); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("date",date); + modelAndView.setViewName("success"); + return modelAndView; + } + + + /* + * SpringMVC接收pojo包装类型参数 url:/demo/handle05?user.id=1&user.username=zhangsan + * 不管包装Pojo与否,它首先是一个pojo,那么就可以按照上述pojo的要求来 + * 1、绑定时候直接形参声明即可 + * 2、传参参数名和pojo属性保持一致,如果不能够定位数据项,那么通过属性名 + "." 的方式进一步锁定数据 + * + */ + @RequestMapping("/handle05") + public ModelAndView handle05(QueryVo queryVo) { + + Date date = new Date(); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("date",date); + modelAndView.setViewName("success"); + return modelAndView; + } + + + /** + * 绑定日期类型参数 + * 定义一个SpringMVC的类型转换器 接口,扩展实现接口接口,注册你的实现 + * @param birthday + * @return + */ + @RequestMapping("/handle06") + public ModelAndView handle06(Date birthday) { + Date date = new Date();ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("date",date); + modelAndView.setViewName("success"); + return modelAndView; + } + + + + /* + * restful get /demo/handle/15 + */ + @RequestMapping(value = "/handle/{id}",method = {RequestMethod.GET}) + public ModelAndView handleGet(@PathVariable("id") Integer id) { + + Date date = new Date(); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("date",date); + modelAndView.setViewName("success"); + return modelAndView; + } + + + /* + * restful post /demo/handle + */ + @RequestMapping(value = "/handle",method = {RequestMethod.POST}) + public ModelAndView handlePost(String username) { + + Date date = new Date(); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("date",date); + modelAndView.setViewName("success"); + return modelAndView; + } + + + /* + * restful put /demo/handle/15/lisi + */ + @RequestMapping(value = "/handle/{id}/{name}",method = {RequestMethod.PUT}) + public ModelAndView handlePut(@PathVariable("id") Integer id,@PathVariable("name") String username) { + + Date date = new Date(); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("date",date); + modelAndView.setViewName("success"); + return modelAndView; + } + + + /* + * restful delete /demo/handle/15 + */ + @RequestMapping(value = "/handle/{id}",method = {RequestMethod.DELETE}) + public ModelAndView handleDelete(@PathVariable("id") Integer id) { + + Date date = new Date(); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("date",date); + modelAndView.setViewName("success"); + return modelAndView; + } + + + + @RequestMapping("/handle07") + // 添加@ResponseBody之后,不再走视图解析器那个流程,而是等同于response直接输出数据 + @ResponseBody + public User handle07(@RequestBody User user) { + + // 业务逻辑处理,修改name为张三丰 + user.setName("张三丰"); + return user; + } + + + /** + * 文件上传 + * @return + */ + @RequestMapping(value = "/upload") + public ModelAndView upload(MultipartFile uploadFile, HttpSession session) throws IOException { + + // 处理上传文件 + // 重命名,原名123.jpg ,获取后缀 + String originalFilename = uploadFile.getOriginalFilename();// 原始名称 + // 扩展名 jpg + String ext = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length()); + String newName = UUID.randomUUID().toString() + "." + ext; + + // 存储,要存储到指定的文件夹,/uploads/yyyy-MM-dd,考虑文件过多的情况按照日期,生成一个子文件夹 + String realPath = session.getServletContext().getRealPath("/uploads"); + String datePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + File folder = new File(realPath + "/" + datePath); + + if(!folder.exists()) { + folder.mkdirs(); + } + + + // 存储文件到目录 + uploadFile.transferTo(new File(folder,newName)); + + + // TODO 文件磁盘路径要更新到数据库字段 + + Date date = new Date(); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("date",date); + modelAndView.setViewName("success"); + return modelAndView; + } + + + /** + * SpringMVC 重定向时参数传递的问题 + * 转发:A 找 B 借钱400,B没有钱但是悄悄的找到C借了400块钱给A + * url不会变,参数也不会丢失,一个请求 + * 重定向:A 找 B 借钱400,B 说我没有钱,你找别人借去,那么A 又带着400块的借钱需求找到C + * url会变,参数会丢失需要重新携带参数,两个请求 + */ + + @RequestMapping("/handleRedirect") + public String handleRedirect(String name, RedirectAttributes redirectAttributes) { + + //return "redirect:handle01?name=" + name; // 拼接参数安全性、参数长度都有局限 + // addFlashAttribute方法设置了一个flash类型属性,该属性会被暂存到session中,在跳转到页面之后该属性销毁 + redirectAttributes.addFlashAttribute("name",name); + return "redirect:handle01"; + + } + + +} diff --git a/springmvc-demo/src/main/java/com/lemon/converter/DateConverter.java b/springmvc-demo/src/main/java/com/lemon/converter/DateConverter.java new file mode 100644 index 00000000..0afe1629 --- /dev/null +++ b/springmvc-demo/src/main/java/com/lemon/converter/DateConverter.java @@ -0,0 +1,30 @@ +package com.lemon.converter; + +import org.springframework.core.convert.converter.Converter; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author Lemon-CS + * 自定义类型转换器 + * S:source,源类型 + * T:target:目标类型 + */ +public class DateConverter implements Converter { + @Override + public Date convert(String source) { + // 完成字符串向日期的转换 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + + try { + Date parse = simpleDateFormat.parse(source); + return parse; + } catch (ParseException e) { + e.printStackTrace(); + } + + return null; + } +} diff --git a/springmvc-demo/src/main/java/com/lemon/interceptor/MyIntercepter01.java b/springmvc-demo/src/main/java/com/lemon/interceptor/MyIntercepter01.java new file mode 100644 index 00000000..b38b28bb --- /dev/null +++ b/springmvc-demo/src/main/java/com/lemon/interceptor/MyIntercepter01.java @@ -0,0 +1,57 @@ +package com.lemon.interceptor; + + +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * 自定义springmvc拦截器 + */ +public class MyIntercepter01 implements HandlerInterceptor { + + + /** + * 会在handler方法业务逻辑执行之前执行 + * 往往在这里完成权限校验工作 + * @param request + * @param response + * @param handler + * @return 返回值boolean代表是否放行,true代表放行,false代表中止 + * @throws Exception + */ + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + System.out.println("MyIntercepter01 preHandle......"); + return true; + } + + + /** + * 会在handler方法业务逻辑执行之后尚未跳转页面时执行 + * @param request + * @param response + * @param handler + * @param modelAndView 封装了视图和数据,此时尚未跳转页面呢,你可以在这里针对返回的数据和视图信息进行修改 + * @throws Exception + */ + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + System.out.println("MyIntercepter01 postHandle......"); + } + + /** + * 页面已经跳转渲染完毕之后执行 + * @param request + * @param response + * @param handler + * @param ex 可以在这里捕获异常 + * @throws Exception + */ + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + System.out.println("MyIntercepter01 afterCompletion......"); + } +} diff --git a/springmvc-demo/src/main/java/com/lemon/interceptor/MyIntercepter02.java b/springmvc-demo/src/main/java/com/lemon/interceptor/MyIntercepter02.java new file mode 100644 index 00000000..fa0da44a --- /dev/null +++ b/springmvc-demo/src/main/java/com/lemon/interceptor/MyIntercepter02.java @@ -0,0 +1,57 @@ +package com.lemon.interceptor; + + +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * 自定义springmvc拦截器 + */ +public class MyIntercepter02 implements HandlerInterceptor { + + + /** + * 会在handler方法业务逻辑执行之前执行 + * 往往在这里完成权限校验工作 + * @param request + * @param response + * @param handler + * @return 返回值boolean代表是否放行,true代表放行,false代表中止 + * @throws Exception + */ + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + System.out.println("MyIntercepter02 preHandle......"); + return true; + } + + + /** + * 会在handler方法业务逻辑执行之后尚未跳转页面时执行 + * @param request + * @param response + * @param handler + * @param modelAndView 封装了视图和数据,此时尚未跳转页面呢,你可以在这里针对返回的数据和视图信息进行修改 + * @throws Exception + */ + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + System.out.println("MyIntercepter02 postHandle......"); + } + + /** + * 页面已经跳转渲染完毕之后执行 + * @param request + * @param response + * @param handler + * @param ex 可以在这里捕获异常 + * @throws Exception + */ + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + System.out.println("MyIntercepter02 afterCompletion......"); + } +} diff --git a/springmvc-demo/src/main/java/com/lemon/pojo/QueryVo.java b/springmvc-demo/src/main/java/com/lemon/pojo/QueryVo.java new file mode 100644 index 00000000..ab656e4f --- /dev/null +++ b/springmvc-demo/src/main/java/com/lemon/pojo/QueryVo.java @@ -0,0 +1,37 @@ +package com.lemon.pojo; + +/** + * @author Lemon-CS + */ +public class QueryVo { + + private String mail; + private String phone; + + // 嵌套了另外的Pojo对象 + private User user; + + public String getMail() { + return mail; + } + + public void setMail(String mail) { + this.mail = mail; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } +} diff --git a/springmvc-demo/src/main/java/com/lemon/pojo/User.java b/springmvc-demo/src/main/java/com/lemon/pojo/User.java new file mode 100644 index 00000000..af1a0dd6 --- /dev/null +++ b/springmvc-demo/src/main/java/com/lemon/pojo/User.java @@ -0,0 +1,28 @@ +package com.lemon.pojo; + +import org.springframework.web.bind.annotation.RequestParam; + +/** + * @author Lemon-CS + */ +public class User { + + private Integer id; + private String name; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/springmvc-demo/src/main/resources/springmvc.xml b/springmvc-demo/src/main/resources/springmvc.xml new file mode 100644 index 00000000..1575ea4d --- /dev/null +++ b/springmvc-demo/src/main/resources/springmvc.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/springmvc-demo/src/main/resources/test.html b/springmvc-demo/src/main/resources/test.html new file mode 100644 index 00000000..409dd7af --- /dev/null +++ b/springmvc-demo/src/main/resources/test.html @@ -0,0 +1,10 @@ + + + + + Title + + +hello,I am html. + + \ No newline at end of file diff --git a/springmvc-demo/src/main/webapp/WEB-INF/js/jquery.min.js b/springmvc-demo/src/main/webapp/WEB-INF/js/jquery.min.js new file mode 100755 index 00000000..16ad06c5 --- /dev/null +++ b/springmvc-demo/src/main/webapp/WEB-INF/js/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.2 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="
"+""+"
",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
t
",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/springmvc-demo/src/main/webapp/WEB-INF/jsp/error.jsp b/springmvc-demo/src/main/webapp/WEB-INF/jsp/error.jsp new file mode 100644 index 00000000..6a175f93 --- /dev/null +++ b/springmvc-demo/src/main/webapp/WEB-INF/jsp/error.jsp @@ -0,0 +1,11 @@ +<%@ page language="java" isELIgnored="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> + + + + + Insert title here + + + 异常信息: ${msg} + + \ No newline at end of file diff --git a/springmvc-demo/src/main/webapp/WEB-INF/jsp/success.jsp b/springmvc-demo/src/main/webapp/WEB-INF/jsp/success.jsp new file mode 100644 index 00000000..5c3dfabb --- /dev/null +++ b/springmvc-demo/src/main/webapp/WEB-INF/jsp/success.jsp @@ -0,0 +1,11 @@ +<%@ page language="java" isELIgnored="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> + + + + + Insert title here + + + 跳转成功!服务器时间:${date} + + \ No newline at end of file diff --git a/springmvc-demo/src/main/webapp/WEB-INF/web.xml b/springmvc-demo/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000..2abc97d7 --- /dev/null +++ b/springmvc-demo/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,75 @@ + + + + Archetype Created Web Application + + + + + encoding + org.springframework.web.filter.CharacterEncodingFilter + + encoding + UTF-8 + + + + + + + hiddenHttpMethodFilter + org.springframework.web.filter.HiddenHttpMethodFilter + + + + + encoding + /* + + + + + hiddenHttpMethodFilter + /* + + + + + + + + springmvc + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath:springmvc.xml + + + + springmvc + + + + / + + diff --git a/springmvc-demo/src/main/webapp/index.jsp b/springmvc-demo/src/main/webapp/index.jsp new file mode 100644 index 00000000..1c526541 --- /dev/null +++ b/springmvc-demo/src/main/webapp/index.jsp @@ -0,0 +1,125 @@ +<%@ page isELIgnored="false" contentType="text/html;charset=UTF-8" language="java" %> + + + SpringMVC 测试页 + + + + + + + + + + +
+

Spring MVC 请求参数绑定

+
+

测试用例:SpringMVC 对原生servlet api的支持

+ 点击测试 +
+
+

测试用例:SpringMVC 接收简单数据类型参数

+ 点击测试 +
+
+

测试用例:SpringMVC 使用@RequestParam 接收简单数据类型参数(形参名和参数名不一致)

+
+ +
+

测试用例:SpringMVC接收pojo类型参数

+ 点击测试 +
+ +
+

测试用例:SpringMVC接收pojo包装类型参数

+ 点击测试 +
+ +
+

测试用例:SpringMVC接收日期类型参数

+ 点击测试 +
+
+ + +
+

SpringMVC对Restful风格url的支持

+
+

测试用例:SpringMVC对Restful风格url的支持

+ + rest_get测试 + + +
+ + + + + +
+ + + + + +
+ + + +
+
+ + + +
+

Ajax json交互

+
+ +
+
+ + +
+

multipart 文件上传

+
+ <%-- + 1 method="post" + 2 enctype="multipart/form-data" + 3 type="file" + --%> +
+ + + +
+
+ + + + + diff --git a/springmvc-demo/src/main/webapp/uploads/2019-10-08/1f6337fa-ce74-43da-8520-d4beac9e7c7b.mdj b/springmvc-demo/src/main/webapp/uploads/2019-10-08/1f6337fa-ce74-43da-8520-d4beac9e7c7b.mdj new file mode 100644 index 00000000..f968d2a9 --- /dev/null +++ b/springmvc-demo/src/main/webapp/uploads/2019-10-08/1f6337fa-ce74-43da-8520-d4beac9e7c7b.mdj @@ -0,0 +1,2900 @@ +{ + "_type": "Project", + "_id": "AAAAAAFF+h6SjaM2Hec=", + "name": "Untitled", + "ownedElements": [ + { + "_type": "UMLModel", + "_id": "AAAAAAFF+qBWK6M3Z8Y=", + "_parent": { + "$ref": "AAAAAAFF+h6SjaM2Hec=" + }, + "name": "spring源码分析", + "ownedElements": [ + { + "_type": "UMLClassDiagram", + "_id": "AAAAAAFF+qBtyKM79qY=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Main", + "defaultDiagram": true + }, + { + "_type": "UMLCollaboration", + "_id": "AAAAAAFvB4ZPaUMTqOs=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Collaboration1", + "ownedElements": [ + { + "_type": "UMLInteraction", + "_id": "AAAAAAFvB4ZPaUMUJsE=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMTqOs=" + }, + "name": "Interaction1", + "ownedElements": [ + { + "_type": "UMLSequenceDiagram", + "_id": "AAAAAAFvB4ZPaUMV5FA=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMUJsE=" + }, + "name": "BeanFactory获取流程", + "ownedViews": [ + { + "_type": "UMLFrameView", + "_id": "AAAAAAFvB4ZPaUMWRp0=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMV5FA=" + }, + "model": { + "$ref": "AAAAAAFvB4ZPaUMV5FA=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFvB4ZPakMXeUk=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMWRp0=" + }, + "font": "Arial;13;0", + "left": 75.97900390625, + "top": 10, + "width": 126.70263671875, + "height": 13, + "text": "BeanFactory获取流程" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB4ZPakMYEKc=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMWRp0=" + }, + "font": "Arial;13;1", + "left": 10, + "top": 10, + "width": 60.97900390625, + "height": 13, + "text": "interaction" + } + ], + "font": "Arial;13;0", + "left": 5, + "top": 5, + "width": 1204, + "height": 884, + "nameLabel": { + "$ref": "AAAAAAFvB4ZPakMXeUk=" + }, + "frameTypeLabel": { + "$ref": "AAAAAAFvB4ZPakMYEKc=" + } + }, + { + "_type": "UMLSeqLifelineView", + "_id": "AAAAAAFvB5AVJkMnwXM=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMV5FA=" + }, + "model": { + "$ref": "AAAAAAFvB5AVJkMmpgo=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFvB5AVJkMoH/g=", + "_parent": { + "$ref": "AAAAAAFvB5AVJkMnwXM=" + }, + "model": { + "$ref": "AAAAAAFvB5AVJkMmpgo=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFvB5AVJkMpi4U=", + "_parent": { + "$ref": "AAAAAAFvB5AVJkMoH/g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 192, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB5AVJkMqCYQ=", + "_parent": { + "$ref": "AAAAAAFvB5AVJkMoH/g=" + }, + "font": "Arial;13;1", + "left": 101, + "top": 47, + "width": 181.90087890625, + "height": 13, + "text": "AbstractApplicationContext" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB5AVJkMrVTw=", + "_parent": { + "$ref": "AAAAAAFvB5AVJkMoH/g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 192, + "width": 106.20263671875, + "height": 13, + "text": "(from Interaction1)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB5AVJkMsmic=", + "_parent": { + "$ref": "AAAAAAFvB5AVJkMoH/g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 192, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 96, + "top": 40, + "width": 191.90087890625, + "height": 40, + "stereotypeLabel": { + "$ref": "AAAAAAFvB5AVJkMpi4U=" + }, + "nameLabel": { + "$ref": "AAAAAAFvB5AVJkMqCYQ=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFvB5AVJkMrVTw=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB5AVJkMsmic=" + } + }, + { + "_type": "UMLLinePartView", + "_id": "AAAAAAFvB5AVJkMtIHU=", + "_parent": { + "$ref": "AAAAAAFvB5AVJkMnwXM=" + }, + "model": { + "$ref": "AAAAAAFvB5AVJkMmpgo=" + }, + "font": "Arial;13;0", + "left": 192, + "top": 80, + "width": 1, + "height": 577 + } + ], + "font": "Arial;13;0", + "left": 96, + "top": 40, + "width": 191.90087890625, + "height": 617, + "nameCompartment": { + "$ref": "AAAAAAFvB5AVJkMoH/g=" + }, + "linePart": { + "$ref": "AAAAAAFvB5AVJkMtIHU=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB5D230NKxlk=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMV5FA=" + }, + "model": { + "$ref": "AAAAAAFvB5D23kNJ3Fs=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5D230NLIiQ=", + "_parent": { + "$ref": "AAAAAAFvB5D230NKxlk=" + }, + "model": { + "$ref": "AAAAAAFvB5D23kNJ3Fs=" + }, + "font": "Arial;13;0", + "left": 207, + "top": 144, + "width": 160.41796875, + "height": 13, + "alpha": 1.9775423426214938, + "distance": 70.77428911688199, + "hostEdge": { + "$ref": "AAAAAAFvB5D230NKxlk=" + }, + "edgePosition": 1, + "text": "1 : obtainFreshBeanFactory" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5D230NMwSY=", + "_parent": { + "$ref": "AAAAAAFvB5D230NKxlk=" + }, + "model": { + "$ref": "AAAAAAFvB5D23kNJ3Fs=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 246, + "top": 171, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB5D230NKxlk=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5D230NNtKk=", + "_parent": { + "$ref": "AAAAAAFvB5D230NKxlk=" + }, + "model": { + "$ref": "AAAAAAFvB5D23kNJ3Fs=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 212, + "top": 172, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB5D230NKxlk=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB5D230NOmxo=", + "_parent": { + "$ref": "AAAAAAFvB5D230NKxlk=" + }, + "model": { + "$ref": "AAAAAAFvB5D23kNJ3Fs=" + }, + "font": "Arial;13;0", + "left": 185, + "top": 188, + "width": 14, + "height": 365 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB5AVJkMtIHU=" + }, + "tail": { + "$ref": "AAAAAAFvB5AVJkMtIHU=" + }, + "points": "192:168;222:168;222:188;198:188", + "nameLabel": { + "$ref": "AAAAAAFvB5D230NLIiQ=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB5D230NMwSY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB5D230NNtKk=" + }, + "activation": { + "$ref": "AAAAAAFvB5D230NOmxo=" + } + }, + { + "_type": "UMLSeqLifelineView", + "_id": "AAAAAAFvB5KX9ENj3t0=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMV5FA=" + }, + "model": { + "$ref": "AAAAAAFvB5KX9ENigcM=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFvB5KX9ENkbrc=", + "_parent": { + "$ref": "AAAAAAFvB5KX9ENj3t0=" + }, + "model": { + "$ref": "AAAAAAFvB5KX9ENigcM=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFvB5KX9ENli0M=", + "_parent": { + "$ref": "AAAAAAFvB5KX9ENkbrc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1440, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB5KX9ENmv28=", + "_parent": { + "$ref": "AAAAAAFvB5KX9ENkbrc=" + }, + "font": "Arial;13;1", + "left": 725, + "top": 47, + "width": 256.32080078125, + "height": 13, + "text": "AbstractRefreshableApplicationContext" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB5KX9ENnVpk=", + "_parent": { + "$ref": "AAAAAAFvB5KX9ENkbrc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1440, + "width": 106.20263671875, + "height": 13, + "text": "(from Interaction1)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB5KX9ENoFvw=", + "_parent": { + "$ref": "AAAAAAFvB5KX9ENkbrc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1440, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 720, + "top": 40, + "width": 266.32080078125, + "height": 40, + "stereotypeLabel": { + "$ref": "AAAAAAFvB5KX9ENli0M=" + }, + "nameLabel": { + "$ref": "AAAAAAFvB5KX9ENmv28=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFvB5KX9ENnVpk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB5KX9ENoFvw=" + } + }, + { + "_type": "UMLLinePartView", + "_id": "AAAAAAFvB5KX9ENpUOM=", + "_parent": { + "$ref": "AAAAAAFvB5KX9ENj3t0=" + }, + "model": { + "$ref": "AAAAAAFvB5KX9ENigcM=" + }, + "font": "Arial;13;0", + "left": 853, + "top": 80, + "width": 1, + "height": 585 + } + ], + "font": "Arial;13;0", + "left": 720, + "top": 40, + "width": 266.32080078125, + "height": 625, + "nameCompartment": { + "$ref": "AAAAAAFvB5KX9ENkbrc=" + }, + "linePart": { + "$ref": "AAAAAAFvB5KX9ENpUOM=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB5MdnEOEtu0=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMV5FA=" + }, + "model": { + "$ref": "AAAAAAFvB5MdnEODTSw=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5MdnEOFRz8=", + "_parent": { + "$ref": "AAAAAAFvB5MdnEOEtu0=" + }, + "model": { + "$ref": "AAAAAAFvB5MdnEODTSw=" + }, + "font": "Arial;13;0", + "left": 456, + "top": 216, + "width": 132.22802734375, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB5MdnEOEtu0=" + }, + "edgePosition": 1, + "text": "2 : refreshBeanFactory" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5MdnEOGwmg=", + "_parent": { + "$ref": "AAAAAAFvB5MdnEOEtu0=" + }, + "model": { + "$ref": "AAAAAAFvB5MdnEODTSw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 522, + "top": 201, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB5MdnEOEtu0=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5MdnEOHJjA=", + "_parent": { + "$ref": "AAAAAAFvB5MdnEOEtu0=" + }, + "model": { + "$ref": "AAAAAAFvB5MdnEODTSw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 522, + "top": 236, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB5MdnEOEtu0=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB5MdnEOIOpo=", + "_parent": { + "$ref": "AAAAAAFvB5MdnEOEtu0=" + }, + "model": { + "$ref": "AAAAAAFvB5MdnEODTSw=" + }, + "font": "Arial;13;0", + "left": 846, + "top": 232, + "width": 14, + "height": 289 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB5KX9ENpUOM=" + }, + "tail": { + "$ref": "AAAAAAFvB5AVJkMtIHU=" + }, + "points": "198:232;846:232", + "nameLabel": { + "$ref": "AAAAAAFvB5MdnEOFRz8=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB5MdnEOGwmg=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB5MdnEOHJjA=" + }, + "activation": { + "$ref": "AAAAAAFvB5MdnEOIOpo=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB5PepEObFts=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMV5FA=" + }, + "model": { + "$ref": "AAAAAAFvB5PepEOaMu0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5PepEOcOxE=", + "_parent": { + "$ref": "AAAAAAFvB5PepEObFts=" + }, + "model": { + "$ref": "AAAAAAFvB5PepEOaMu0=" + }, + "font": "Arial;13;0", + "left": 872, + "top": 232, + "width": 127.89892578125, + "height": 13, + "alpha": 2.117584071132435, + "distance": 53.85164807134504, + "hostEdge": { + "$ref": "AAAAAAFvB5PepEObFts=" + }, + "edgePosition": 1, + "text": "3 : createBeanFactory" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5PepEOdPV0=", + "_parent": { + "$ref": "AAAAAAFvB5PepEObFts=" + }, + "model": { + "$ref": "AAAAAAFvB5PepEOaMu0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 913, + "top": 259, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB5PepEObFts=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5PepEOeO6E=", + "_parent": { + "$ref": "AAAAAAFvB5PepEObFts=" + }, + "model": { + "$ref": "AAAAAAFvB5PepEOaMu0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 879, + "top": 260, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB5PepEObFts=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB5PepEOfqrY=", + "_parent": { + "$ref": "AAAAAAFvB5PepEObFts=" + }, + "model": { + "$ref": "AAAAAAFvB5PepEOaMu0=" + }, + "font": "Arial;13;0", + "left": 853, + "top": 276, + "width": 14, + "height": 93 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB5KX9ENpUOM=" + }, + "tail": { + "$ref": "AAAAAAFvB5KX9ENpUOM=" + }, + "points": "859:256;889:256;889:276;866:276", + "nameLabel": { + "$ref": "AAAAAAFvB5PepEOcOxE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB5PepEOdPV0=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB5PepEOeO6E=" + }, + "activation": { + "$ref": "AAAAAAFvB5PepEOfqrY=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB5R1q0O0zr4=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMV5FA=" + }, + "model": { + "$ref": "AAAAAAFvB5R1q0Ozfvw=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5R1rEO1ihg=", + "_parent": { + "$ref": "AAAAAAFvB5R1q0O0zr4=" + }, + "model": { + "$ref": "AAAAAAFvB5R1q0Ozfvw=" + }, + "font": "Arial;13;0", + "left": 471, + "top": 401, + "width": 109.83984375, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB5R1q0O0zr4=" + }, + "edgePosition": 1, + "text": "4 : getBeanFactory" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5R1rEO2AcE=", + "_parent": { + "$ref": "AAAAAAFvB5R1q0O0zr4=" + }, + "model": { + "$ref": "AAAAAAFvB5R1q0Ozfvw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 525, + "top": 386, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB5R1q0O0zr4=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5R1rEO3iVI=", + "_parent": { + "$ref": "AAAAAAFvB5R1q0O0zr4=" + }, + "model": { + "$ref": "AAAAAAFvB5R1q0Ozfvw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 525, + "top": 421, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB5R1q0O0zr4=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB5R1rEO44zg=", + "_parent": { + "$ref": "AAAAAAFvB5R1q0O0zr4=" + }, + "model": { + "$ref": "AAAAAAFvB5R1q0Ozfvw=" + }, + "font": "Arial;13;0", + "left": 853, + "top": 417, + "width": 14, + "height": 64 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB5KX9ENpUOM=" + }, + "tail": { + "$ref": "AAAAAAFvB5AVJkMtIHU=" + }, + "points": "198:417;853:417", + "nameLabel": { + "$ref": "AAAAAAFvB5R1rEO1ihg=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB5R1rEO2AcE=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB5R1rEO3iVI=" + }, + "activation": { + "$ref": "AAAAAAFvB5R1rEO44zg=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB5TwNEPq4ZE=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMV5FA=" + }, + "model": { + "$ref": "AAAAAAFvB5TwNEPpu6I=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5TwNEPr3hQ=", + "_parent": { + "$ref": "AAAAAAFvB5TwNEPq4ZE=" + }, + "model": { + "$ref": "AAAAAAFvB5TwNEPpu6I=" + }, + "font": "Arial;13;0", + "left": 436, + "top": 470, + "width": 177.76611328125, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB5TwNEPq4ZE=" + }, + "edgePosition": 1, + "text": "5 : DefaultListableBeanFactory" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5TwNEPsGVA=", + "_parent": { + "$ref": "AAAAAAFvB5TwNEPq4ZE=" + }, + "model": { + "$ref": "AAAAAAFvB5TwNEPpu6I=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 524, + "top": 485, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB5TwNEPq4ZE=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB5TwNEPtd9s=", + "_parent": { + "$ref": "AAAAAAFvB5TwNEPq4ZE=" + }, + "model": { + "$ref": "AAAAAAFvB5TwNEPpu6I=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 525, + "top": 450, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB5TwNEPq4ZE=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB5TwNEPuOGc=", + "_parent": { + "$ref": "AAAAAAFvB5TwNEPq4ZE=" + }, + "model": { + "$ref": "AAAAAAFvB5TwNEPpu6I=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 185, + "top": 466, + "width": 14, + "height": 25 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB5AVJkMtIHU=" + }, + "tail": { + "$ref": "AAAAAAFvB5KX9ENpUOM=" + }, + "points": "853:466;198:466", + "nameLabel": { + "$ref": "AAAAAAFvB5TwNEPr3hQ=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB5TwNEPsGVA=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB5TwNEPtd9s=" + }, + "activation": { + "$ref": "AAAAAAFvB5TwNEPuOGc=" + } + } + ] + } + ], + "messages": [ + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB5D23kNJ3Fs=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMUJsE=" + }, + "name": "obtainFreshBeanFactory", + "source": { + "$ref": "AAAAAAFvB5AVJkMmpgo=" + }, + "target": { + "$ref": "AAAAAAFvB5AVJkMmpgo=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB5MdnEODTSw=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMUJsE=" + }, + "name": "refreshBeanFactory", + "source": { + "$ref": "AAAAAAFvB5AVJkMmpgo=" + }, + "target": { + "$ref": "AAAAAAFvB5KX9ENigcM=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB5PepEOaMu0=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMUJsE=" + }, + "name": "createBeanFactory", + "source": { + "$ref": "AAAAAAFvB5KX9ENigcM=" + }, + "target": { + "$ref": "AAAAAAFvB5KX9ENigcM=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB5R1q0Ozfvw=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMUJsE=" + }, + "name": "getBeanFactory", + "source": { + "$ref": "AAAAAAFvB5AVJkMmpgo=" + }, + "target": { + "$ref": "AAAAAAFvB5KX9ENigcM=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB5TwNEPpu6I=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMUJsE=" + }, + "name": "DefaultListableBeanFactory", + "source": { + "$ref": "AAAAAAFvB5KX9ENigcM=" + }, + "target": { + "$ref": "AAAAAAFvB5AVJkMmpgo=" + }, + "messageSort": "reply" + } + ], + "participants": [ + { + "_type": "UMLLifeline", + "_id": "AAAAAAFvB5AVJkMmpgo=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMUJsE=" + }, + "name": "AbstractApplicationContext", + "represent": { + "$ref": "AAAAAAFvB5AVJUMlX7Y=" + }, + "isMultiInstance": false + }, + { + "_type": "UMLLifeline", + "_id": "AAAAAAFvB5KX9ENigcM=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMUJsE=" + }, + "name": "AbstractRefreshableApplicationContext", + "represent": { + "$ref": "AAAAAAFvB5KX9ENh2jQ=" + }, + "isMultiInstance": false + } + ] + } + ], + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAFvB5AVJUMlX7Y=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMTqOs=" + }, + "name": "Role1" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAFvB5KX9ENh2jQ=", + "_parent": { + "$ref": "AAAAAAFvB4ZPaUMTqOs=" + }, + "name": "Role2" + } + ] + }, + { + "_type": "UMLCollaboration", + "_id": "AAAAAAFvB+ZoHEP/aiM=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Collaboration2", + "ownedElements": [ + { + "_type": "UMLInteraction", + "_id": "AAAAAAFvB+ZoHEQACqA=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEP/aiM=" + }, + "name": "Interaction1", + "ownedElements": [ + { + "_type": "UMLSequenceDiagram", + "_id": "AAAAAAFvB+ZoHEQB4Eg=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "SequenceDiagram1", + "ownedViews": [ + { + "_type": "UMLFrameView", + "_id": "AAAAAAFvB+ZoHEQCiNM=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFvB+ZoHUQDLso=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQCiNM=" + }, + "font": "Arial;13;0", + "left": 78.97900390625, + "top": 10, + "width": 115.9052734375, + "height": 13, + "text": "SequenceDiagram1" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+ZoH0QE+yA=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQCiNM=" + }, + "font": "Arial;13;1", + "left": 13, + "top": 10, + "width": 60.97900390625, + "height": 13, + "text": "interaction" + } + ], + "font": "Arial;13;0", + "left": 8, + "top": 5, + "width": 1420, + "height": 908, + "nameLabel": { + "$ref": "AAAAAAFvB+ZoHUQDLso=" + }, + "frameTypeLabel": { + "$ref": "AAAAAAFvB+ZoH0QE+yA=" + } + }, + { + "_type": "UMLSeqLifelineView", + "_id": "AAAAAAFvB+dWCUQRFD4=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+dWCEQQOBI=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFvB+dWCUQSuPw=", + "_parent": { + "$ref": "AAAAAAFvB+dWCUQRFD4=" + }, + "model": { + "$ref": "AAAAAAFvB+dWCEQQOBI=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFvB+dWCUQT6rY=", + "_parent": { + "$ref": "AAAAAAFvB+dWCUQSuPw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 128, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+dWCUQU+Lc=", + "_parent": { + "$ref": "AAAAAAFvB+dWCUQSuPw=" + }, + "font": "Arial;13;1", + "left": 69, + "top": 47, + "width": 198.5380859375, + "height": 13, + "text": "AbstractBeanDefinitionReader" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+dWCUQVUUM=", + "_parent": { + "$ref": "AAAAAAFvB+dWCUQSuPw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 128, + "width": 106.20263671875, + "height": 13, + "text": "(from Interaction1)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+dWCUQWngU=", + "_parent": { + "$ref": "AAAAAAFvB+dWCUQSuPw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 128, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 64, + "top": 40, + "width": 208.5380859375, + "height": 40, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+dWCUQT6rY=" + }, + "nameLabel": { + "$ref": "AAAAAAFvB+dWCUQU+Lc=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFvB+dWCUQVUUM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+dWCUQWngU=" + } + }, + { + "_type": "UMLLinePartView", + "_id": "AAAAAAFvB+dWCUQX1XE=", + "_parent": { + "$ref": "AAAAAAFvB+dWCUQRFD4=" + }, + "model": { + "$ref": "AAAAAAFvB+dWCEQQOBI=" + }, + "font": "Arial;13;0", + "left": 168, + "top": 80, + "width": 1, + "height": 481 + } + ], + "font": "Arial;13;0", + "left": 64, + "top": 40, + "width": 208.5380859375, + "height": 521, + "nameCompartment": { + "$ref": "AAAAAAFvB+dWCUQSuPw=" + }, + "linePart": { + "$ref": "AAAAAAFvB+dWCUQX1XE=" + } + }, + { + "_type": "UMLSeqLifelineView", + "_id": "AAAAAAFvB+fBYkQ10Yo=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+fBYkQ0R48=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFvB+fBYkQ2VXQ=", + "_parent": { + "$ref": "AAAAAAFvB+fBYkQ10Yo=" + }, + "model": { + "$ref": "AAAAAAFvB+fBYkQ0R48=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFvB+fBYkQ36yY=", + "_parent": { + "$ref": "AAAAAAFvB+fBYkQ2VXQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 704, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+fBYkQ4aMM=", + "_parent": { + "$ref": "AAAAAAFvB+fBYkQ2VXQ=" + }, + "font": "Arial;13;1", + "left": 357, + "top": 47, + "width": 169.6435546875, + "height": 13, + "text": "XmlBeanDefinitionReader" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+fBYkQ5fLQ=", + "_parent": { + "$ref": "AAAAAAFvB+fBYkQ2VXQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 704, + "width": 106.20263671875, + "height": 13, + "text": "(from Interaction1)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+fBYkQ6ElY=", + "_parent": { + "$ref": "AAAAAAFvB+fBYkQ2VXQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 704, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 352, + "top": 40, + "width": 179.6435546875, + "height": 40, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+fBYkQ36yY=" + }, + "nameLabel": { + "$ref": "AAAAAAFvB+fBYkQ4aMM=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFvB+fBYkQ5fLQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+fBYkQ6ElY=" + } + }, + { + "_type": "UMLLinePartView", + "_id": "AAAAAAFvB+fBYkQ7Rz4=", + "_parent": { + "$ref": "AAAAAAFvB+fBYkQ10Yo=" + }, + "model": { + "$ref": "AAAAAAFvB+fBYkQ0R48=" + }, + "font": "Arial;13;0", + "left": 442, + "top": 80, + "width": 1, + "height": 473 + } + ], + "font": "Arial;13;0", + "left": 352, + "top": 40, + "width": 179.6435546875, + "height": 513, + "nameCompartment": { + "$ref": "AAAAAAFvB+fBYkQ2VXQ=" + }, + "linePart": { + "$ref": "AAAAAAFvB+fBYkQ7Rz4=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB+gitERYMUE=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+gitERXeeg=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+gitERZ6lw=", + "_parent": { + "$ref": "AAAAAAFvB+gitERYMUE=" + }, + "model": { + "$ref": "AAAAAAFvB+gitERXeeg=" + }, + "font": "Arial;13;0", + "left": 235, + "top": 153, + "width": 133.70068359375, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+gitERYMUE=" + }, + "edgePosition": 1, + "text": "1 : loadBeanDefinitions" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+gitURaRcs=", + "_parent": { + "$ref": "AAAAAAFvB+gitERYMUE=" + }, + "model": { + "$ref": "AAAAAAFvB+gitERXeeg=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 301, + "top": 138, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB+gitERYMUE=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+gitURbdIU=", + "_parent": { + "$ref": "AAAAAAFvB+gitERYMUE=" + }, + "model": { + "$ref": "AAAAAAFvB+gitERXeeg=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 301, + "top": 173, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+gitERYMUE=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB+gitURc7IU=", + "_parent": { + "$ref": "AAAAAAFvB+gitERYMUE=" + }, + "model": { + "$ref": "AAAAAAFvB+gitERXeeg=" + }, + "font": "Arial;13;0", + "left": 435, + "top": 169, + "width": 14, + "height": 328 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB+fBYkQ7Rz4=" + }, + "tail": { + "$ref": "AAAAAAFvB+dWCUQX1XE=" + }, + "points": "168:169;435:169", + "nameLabel": { + "$ref": "AAAAAAFvB+gitERZ6lw=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+gitURaRcs=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+gitURbdIU=" + }, + "activation": { + "$ref": "AAAAAAFvB+gitURc7IU=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB+i37kRv9ps=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+i37kRuYec=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+i37kRw6vc=", + "_parent": { + "$ref": "AAAAAAFvB+i37kRv9ps=" + }, + "model": { + "$ref": "AAAAAAFvB+i37kRuYec=" + }, + "font": "Arial;13;0", + "left": 455, + "top": 176, + "width": 152.50244140625, + "height": 13, + "alpha": 1.9316320475032858, + "distance": 56.64803615307419, + "hostEdge": { + "$ref": "AAAAAAFvB+i37kRv9ps=" + }, + "edgePosition": 1, + "text": "2 : doLoadBeanDefinitions" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+i37kRxabI=", + "_parent": { + "$ref": "AAAAAAFvB+i37kRv9ps=" + }, + "model": { + "$ref": "AAAAAAFvB+i37kRuYec=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 502, + "top": 195, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB+i37kRv9ps=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+i37kRynB4=", + "_parent": { + "$ref": "AAAAAAFvB+i37kRv9ps=" + }, + "model": { + "$ref": "AAAAAAFvB+i37kRuYec=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 468, + "top": 196, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+i37kRv9ps=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB+i37kRz3XY=", + "_parent": { + "$ref": "AAAAAAFvB+i37kRv9ps=" + }, + "model": { + "$ref": "AAAAAAFvB+i37kRuYec=" + }, + "font": "Arial;13;0", + "left": 442, + "top": 212, + "width": 14, + "height": 197 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB+fBYkQ7Rz4=" + }, + "tail": { + "$ref": "AAAAAAFvB+fBYkQ7Rz4=" + }, + "points": "448:192;478:192;478:212;455:212", + "nameLabel": { + "$ref": "AAAAAAFvB+i37kRw6vc=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+i37kRxabI=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+i37kRynB4=" + }, + "activation": { + "$ref": "AAAAAAFvB+i37kRz3XY=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB+l0C0SJkx0=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+l0C0SIpJc=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+l0C0SKfrU=", + "_parent": { + "$ref": "AAAAAAFvB+l0C0SJkx0=" + }, + "model": { + "$ref": "AAAAAAFvB+l0C0SIpJc=" + }, + "font": "Arial;13;0", + "left": 418, + "top": 235, + "width": 152.470703125, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+l0C0SJkx0=" + }, + "edgePosition": 1, + "text": "3 : registerBeanDefinitions" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+l0C0SL2pQ=", + "_parent": { + "$ref": "AAAAAAFvB+l0C0SJkx0=" + }, + "model": { + "$ref": "AAAAAAFvB+l0C0SIpJc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 509, + "top": 235, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB+l0C0SJkx0=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+l0C0SM8f8=", + "_parent": { + "$ref": "AAAAAAFvB+l0C0SJkx0=" + }, + "model": { + "$ref": "AAAAAAFvB+l0C0SIpJc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 475, + "top": 236, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+l0C0SJkx0=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB+l0C0SNeM0=", + "_parent": { + "$ref": "AAAAAAFvB+l0C0SJkx0=" + }, + "model": { + "$ref": "AAAAAAFvB+l0C0SIpJc=" + }, + "font": "Arial;13;0", + "left": 449, + "top": 252, + "width": 14, + "height": 69 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB+fBYkQ7Rz4=" + }, + "tail": { + "$ref": "AAAAAAFvB+fBYkQ7Rz4=" + }, + "points": "455:232;485:232;485:252;462:252", + "nameLabel": { + "$ref": "AAAAAAFvB+l0C0SKfrU=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+l0C0SL2pQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+l0C0SM8f8=" + }, + "activation": { + "$ref": "AAAAAAFvB+l0C0SNeM0=" + } + }, + { + "_type": "UMLSeqLifelineView", + "_id": "AAAAAAFvB+nQ6ESgWo0=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+nQ6ESfFXo=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFvB+nQ6EShXnI=", + "_parent": { + "$ref": "AAAAAAFvB+nQ6ESgWo0=" + }, + "model": { + "$ref": "AAAAAAFvB+nQ6ESfFXo=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFvB+nQ6ESizuA=", + "_parent": { + "$ref": "AAAAAAFvB+nQ6EShXnI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1264, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+nQ6ESjr9o=", + "_parent": { + "$ref": "AAAAAAFvB+nQ6EShXnI=" + }, + "font": "Arial;13;1", + "left": 637, + "top": 47, + "width": 253.419921875, + "height": 13, + "text": "DefaultBeanDefinitionDocumentReader" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+nQ6ESkHVc=", + "_parent": { + "$ref": "AAAAAAFvB+nQ6EShXnI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1264, + "width": 106.20263671875, + "height": 13, + "text": "(from Interaction1)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+nQ6USlx3A=", + "_parent": { + "$ref": "AAAAAAFvB+nQ6EShXnI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1264, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 632, + "top": 40, + "width": 263.419921875, + "height": 40, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+nQ6ESizuA=" + }, + "nameLabel": { + "$ref": "AAAAAAFvB+nQ6ESjr9o=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFvB+nQ6ESkHVc=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+nQ6USlx3A=" + } + }, + { + "_type": "UMLLinePartView", + "_id": "AAAAAAFvB+nQ6USmLXk=", + "_parent": { + "$ref": "AAAAAAFvB+nQ6ESgWo0=" + }, + "model": { + "$ref": "AAAAAAFvB+nQ6ESfFXo=" + }, + "font": "Arial;13;0", + "left": 764, + "top": 80, + "width": 1, + "height": 473 + } + ], + "font": "Arial;13;0", + "left": 632, + "top": 40, + "width": 263.419921875, + "height": 513, + "nameCompartment": { + "$ref": "AAAAAAFvB+nQ6EShXnI=" + }, + "linePart": { + "$ref": "AAAAAAFvB+nQ6USmLXk=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB+ofikTDrFs=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+ofikTCegE=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+ofikTESb8=", + "_parent": { + "$ref": "AAAAAAFvB+ofikTDrFs=" + }, + "model": { + "$ref": "AAAAAAFvB+ofikTCegE=" + }, + "font": "Arial;13;0", + "left": 533, + "top": 248, + "width": 152.470703125, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+ofikTDrFs=" + }, + "edgePosition": 1, + "text": "4 : registerBeanDefinitions" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+ofi0TFMkM=", + "_parent": { + "$ref": "AAAAAAFvB+ofikTDrFs=" + }, + "model": { + "$ref": "AAAAAAFvB+ofikTCegE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 609, + "top": 233, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB+ofikTDrFs=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+ofi0TGjj8=", + "_parent": { + "$ref": "AAAAAAFvB+ofikTDrFs=" + }, + "model": { + "$ref": "AAAAAAFvB+ofikTCegE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 609, + "top": 268, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+ofikTDrFs=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB+ofi0THym8=", + "_parent": { + "$ref": "AAAAAAFvB+ofikTDrFs=" + }, + "model": { + "$ref": "AAAAAAFvB+ofikTCegE=" + }, + "font": "Arial;13;0", + "left": 757, + "top": 264, + "width": 14, + "height": 273 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB+nQ6USmLXk=" + }, + "tail": { + "$ref": "AAAAAAFvB+fBYkQ7Rz4=" + }, + "points": "462:264;757:264", + "nameLabel": { + "$ref": "AAAAAAFvB+ofikTESb8=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+ofi0TFMkM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+ofi0TGjj8=" + }, + "activation": { + "$ref": "AAAAAAFvB+ofi0THym8=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB+rFrkTbXC4=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+rFrkTaOZo=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+rFrkTcKz8=", + "_parent": { + "$ref": "AAAAAAFvB+rFrkTbXC4=" + }, + "model": { + "$ref": "AAAAAAFvB+rFrkTaOZo=" + }, + "font": "Arial;13;0", + "left": 724, + "top": 275, + "width": 171.98974609375, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+rFrkTbXC4=" + }, + "edgePosition": 1, + "text": "5 : doRegisterBeanDefinitions" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+rFrkTdnuY=", + "_parent": { + "$ref": "AAAAAAFvB+rFrkTbXC4=" + }, + "model": { + "$ref": "AAAAAAFvB+rFrkTaOZo=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 824, + "top": 275, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB+rFrkTbXC4=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+rFrkTePvo=", + "_parent": { + "$ref": "AAAAAAFvB+rFrkTbXC4=" + }, + "model": { + "$ref": "AAAAAAFvB+rFrkTaOZo=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 790, + "top": 276, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+rFrkTbXC4=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB+rFrkTfeBI=", + "_parent": { + "$ref": "AAAAAAFvB+rFrkTbXC4=" + }, + "model": { + "$ref": "AAAAAAFvB+rFrkTaOZo=" + }, + "font": "Arial;13;0", + "left": 764, + "top": 292, + "width": 14, + "height": 197 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB+nQ6USmLXk=" + }, + "tail": { + "$ref": "AAAAAAFvB+nQ6USmLXk=" + }, + "points": "770:272;800:272;800:292;777:292", + "nameLabel": { + "$ref": "AAAAAAFvB+rFrkTcKz8=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+rFrkTdnuY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+rFrkTePvo=" + }, + "activation": { + "$ref": "AAAAAAFvB+rFrkTfeBI=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB+s/IETzRKs=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+s/H0Ty2mA=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+s/IET0twI=", + "_parent": { + "$ref": "AAAAAAFvB+s/IETzRKs=" + }, + "model": { + "$ref": "AAAAAAFvB+s/H0Ty2mA=" + }, + "font": "Arial;13;0", + "left": 746, + "top": 323, + "width": 141.6416015625, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+s/IETzRKs=" + }, + "edgePosition": 1, + "text": "6 : parseBeanDefinitions" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+s/IET1IJE=", + "_parent": { + "$ref": "AAAAAAFvB+s/IETzRKs=" + }, + "model": { + "$ref": "AAAAAAFvB+s/H0Ty2mA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 831, + "top": 323, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB+s/IETzRKs=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+s/IET24Sg=", + "_parent": { + "$ref": "AAAAAAFvB+s/IETzRKs=" + }, + "model": { + "$ref": "AAAAAAFvB+s/H0Ty2mA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 797, + "top": 324, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+s/IETzRKs=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB+s/IET3MXs=", + "_parent": { + "$ref": "AAAAAAFvB+s/IETzRKs=" + }, + "model": { + "$ref": "AAAAAAFvB+s/H0Ty2mA=" + }, + "font": "Arial;13;0", + "left": 771, + "top": 340, + "width": 14, + "height": 109 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB+nQ6USmLXk=" + }, + "tail": { + "$ref": "AAAAAAFvB+nQ6USmLXk=" + }, + "points": "777:320;807:320;807:340;784:340", + "nameLabel": { + "$ref": "AAAAAAFvB+s/IET0twI=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+s/IET1IJE=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+s/IET24Sg=" + }, + "activation": { + "$ref": "AAAAAAFvB+s/IET3MXs=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB+vu8EUKz88=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+vu8EUJUwo=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+vu8EULEJE=", + "_parent": { + "$ref": "AAAAAAFvB+vu8EUKz88=" + }, + "model": { + "$ref": "AAAAAAFvB+vu8EUJUwo=" + }, + "font": "Arial;13;0", + "left": 749, + "top": 363, + "width": 148.1416015625, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+vu8EUKz88=" + }, + "edgePosition": 1, + "text": "7 : processBeanDefinition" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+vu8EUMmFI=", + "_parent": { + "$ref": "AAAAAAFvB+vu8EUKz88=" + }, + "model": { + "$ref": "AAAAAAFvB+vu8EUJUwo=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 838, + "top": 363, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB+vu8EUKz88=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+vu8EUN2xM=", + "_parent": { + "$ref": "AAAAAAFvB+vu8EUKz88=" + }, + "model": { + "$ref": "AAAAAAFvB+vu8EUJUwo=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 804, + "top": 364, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+vu8EUKz88=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB+vu8EUOcxk=", + "_parent": { + "$ref": "AAAAAAFvB+vu8EUKz88=" + }, + "model": { + "$ref": "AAAAAAFvB+vu8EUJUwo=" + }, + "font": "Arial;13;0", + "left": 778, + "top": 380, + "width": 14, + "height": 37 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB+nQ6USmLXk=" + }, + "tail": { + "$ref": "AAAAAAFvB+nQ6USmLXk=" + }, + "points": "784:360;814:360;814:380;791:380", + "nameLabel": { + "$ref": "AAAAAAFvB+vu8EULEJE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+vu8EUMmFI=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+vu8EUN2xM=" + }, + "activation": { + "$ref": "AAAAAAFvB+vu8EUOcxk=" + } + }, + { + "_type": "UMLSeqLifelineView", + "_id": "AAAAAAFvB+0PjkUilVA=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+0PjkUhY/8=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFvB+0PjkUj0P8=", + "_parent": { + "$ref": "AAAAAAFvB+0PjkUilVA=" + }, + "model": { + "$ref": "AAAAAAFvB+0PjkUhY/8=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFvB+0Pj0UknDA=", + "_parent": { + "$ref": "AAAAAAFvB+0PjkUj0P8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1952, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+0Pj0UlQZ8=", + "_parent": { + "$ref": "AAAAAAFvB+0PjkUj0P8=" + }, + "font": "Arial;13;1", + "left": 981, + "top": 47, + "width": 173.97265625, + "height": 13, + "text": "BeanDefinitionReaderUtils" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+0Pj0Umsz8=", + "_parent": { + "$ref": "AAAAAAFvB+0PjkUj0P8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1952, + "width": 106.20263671875, + "height": 13, + "text": "(from Interaction1)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+0Pj0UnTvs=", + "_parent": { + "$ref": "AAAAAAFvB+0PjkUj0P8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1952, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 976, + "top": 40, + "width": 183.97265625, + "height": 40, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+0Pj0UknDA=" + }, + "nameLabel": { + "$ref": "AAAAAAFvB+0Pj0UlQZ8=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFvB+0Pj0Umsz8=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+0Pj0UnTvs=" + } + }, + { + "_type": "UMLLinePartView", + "_id": "AAAAAAFvB+0Pj0Uo0Vo=", + "_parent": { + "$ref": "AAAAAAFvB+0PjkUilVA=" + }, + "model": { + "$ref": "AAAAAAFvB+0PjkUhY/8=" + }, + "font": "Arial;13;0", + "left": 1068, + "top": 80, + "width": 1, + "height": 473 + } + ], + "font": "Arial;13;0", + "left": 976, + "top": 40, + "width": 183.97265625, + "height": 513, + "nameCompartment": { + "$ref": "AAAAAAFvB+0PjkUj0P8=" + }, + "linePart": { + "$ref": "AAAAAAFvB+0Pj0Uo0Vo=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB+2VYkVEfzA=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+2VYUVDde0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+2VYkVFuwo=", + "_parent": { + "$ref": "AAAAAAFvB+2VYkVEfzA=" + }, + "model": { + "$ref": "AAAAAAFvB+2VYUVDde0=" + }, + "font": "Arial;13;0", + "left": 854, + "top": 384, + "width": 145.970703125, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+2VYkVEfzA=" + }, + "edgePosition": 1, + "text": "8 : registerBeanDefinition" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+2VYkVGKMA=", + "_parent": { + "$ref": "AAAAAAFvB+2VYkVEfzA=" + }, + "model": { + "$ref": "AAAAAAFvB+2VYUVDde0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 926, + "top": 369, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB+2VYkVEfzA=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+2VYkVH+8Q=", + "_parent": { + "$ref": "AAAAAAFvB+2VYkVEfzA=" + }, + "model": { + "$ref": "AAAAAAFvB+2VYUVDde0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 926, + "top": 404, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+2VYkVEfzA=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB+2VYkVIKeg=", + "_parent": { + "$ref": "AAAAAAFvB+2VYkVEfzA=" + }, + "model": { + "$ref": "AAAAAAFvB+2VYUVDde0=" + }, + "font": "Arial;13;0", + "left": 1061, + "top": 400, + "width": 14, + "height": 73 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB+0Pj0Uo0Vo=" + }, + "tail": { + "$ref": "AAAAAAFvB+nQ6USmLXk=" + }, + "points": "791:400;1061:400", + "nameLabel": { + "$ref": "AAAAAAFvB+2VYkVFuwo=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+2VYkVGKMA=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+2VYkVH+8Q=" + }, + "activation": { + "$ref": "AAAAAAFvB+2VYkVIKeg=" + } + }, + { + "_type": "UMLSeqLifelineView", + "_id": "AAAAAAFvB+3WmkVbFxU=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+3WmkVappc=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFvB+3WmkVc2Ys=", + "_parent": { + "$ref": "AAAAAAFvB+3WmkVbFxU=" + }, + "model": { + "$ref": "AAAAAAFvB+3WmkVappc=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFvB+3Wm0VdKkI=", + "_parent": { + "$ref": "AAAAAAFvB+3WmkVc2Ys=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2368, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+3Wm0VenM8=", + "_parent": { + "$ref": "AAAAAAFvB+3WmkVc2Ys=" + }, + "font": "Arial;13;1", + "left": 1189, + "top": 47, + "width": 181.9326171875, + "height": 13, + "text": "DefaultListableBeanFactory" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+3Wm0VfIFI=", + "_parent": { + "$ref": "AAAAAAFvB+3WmkVc2Ys=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2368, + "width": 106.20263671875, + "height": 13, + "text": "(from Interaction1)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFvB+3Wm0VgTu4=", + "_parent": { + "$ref": "AAAAAAFvB+3WmkVc2Ys=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2368, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 1184, + "top": 40, + "width": 191.9326171875, + "height": 40, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+3Wm0VdKkI=" + }, + "nameLabel": { + "$ref": "AAAAAAFvB+3Wm0VenM8=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFvB+3Wm0VfIFI=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+3Wm0VgTu4=" + } + }, + { + "_type": "UMLLinePartView", + "_id": "AAAAAAFvB+3Wm0Vhq5s=", + "_parent": { + "$ref": "AAAAAAFvB+3WmkVbFxU=" + }, + "model": { + "$ref": "AAAAAAFvB+3WmkVappc=" + }, + "font": "Arial;13;0", + "left": 1280, + "top": 80, + "width": 1, + "height": 489 + } + ], + "font": "Arial;13;0", + "left": 1184, + "top": 40, + "width": 191.9326171875, + "height": 529, + "nameCompartment": { + "$ref": "AAAAAAFvB+3WmkVc2Ys=" + }, + "linePart": { + "$ref": "AAAAAAFvB+3Wm0Vhq5s=" + } + }, + { + "_type": "UMLSeqMessageView", + "_id": "AAAAAAFvB+5BKEV+8hM=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQB4Eg=" + }, + "model": { + "$ref": "AAAAAAFvB+5BKEV9YnI=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+5BKEV/uzg=", + "_parent": { + "$ref": "AAAAAAFvB+5BKEV+8hM=" + }, + "model": { + "$ref": "AAAAAAFvB+5BKEV9YnI=" + }, + "font": "Arial;13;0", + "left": 1101, + "top": 408, + "width": 145.970703125, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+5BKEV+8hM=" + }, + "edgePosition": 1, + "text": "9 : registerBeanDefinition" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+5BKEWAKAo=", + "_parent": { + "$ref": "AAAAAAFvB+5BKEV+8hM=" + }, + "model": { + "$ref": "AAAAAAFvB+5BKEV9YnI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1173, + "top": 393, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFvB+5BKEV+8hM=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFvB+5BKEWBdnM=", + "_parent": { + "$ref": "AAAAAAFvB+5BKEV+8hM=" + }, + "model": { + "$ref": "AAAAAAFvB+5BKEV9YnI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1173, + "top": 428, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 10, + "hostEdge": { + "$ref": "AAAAAAFvB+5BKEV+8hM=" + }, + "edgePosition": 1 + }, + { + "_type": "UMLActivationView", + "_id": "AAAAAAFvB+5BKUWCOhE=", + "_parent": { + "$ref": "AAAAAAFvB+5BKEV+8hM=" + }, + "model": { + "$ref": "AAAAAAFvB+5BKEV9YnI=" + }, + "font": "Arial;13;0", + "left": 1273, + "top": 424, + "width": 14, + "height": 29 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFvB+3Wm0Vhq5s=" + }, + "tail": { + "$ref": "AAAAAAFvB+0Pj0Uo0Vo=" + }, + "points": "1074:424;1273:424", + "nameLabel": { + "$ref": "AAAAAAFvB+5BKEV/uzg=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFvB+5BKEWAKAo=" + }, + "propertyLabel": { + "$ref": "AAAAAAFvB+5BKEWBdnM=" + }, + "activation": { + "$ref": "AAAAAAFvB+5BKUWCOhE=" + } + } + ] + } + ], + "messages": [ + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB+gitERXeeg=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "loadBeanDefinitions", + "source": { + "$ref": "AAAAAAFvB+dWCEQQOBI=" + }, + "target": { + "$ref": "AAAAAAFvB+fBYkQ0R48=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB+i37kRuYec=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "doLoadBeanDefinitions", + "source": { + "$ref": "AAAAAAFvB+fBYkQ0R48=" + }, + "target": { + "$ref": "AAAAAAFvB+fBYkQ0R48=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB+l0C0SIpJc=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "registerBeanDefinitions", + "source": { + "$ref": "AAAAAAFvB+fBYkQ0R48=" + }, + "target": { + "$ref": "AAAAAAFvB+fBYkQ0R48=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB+ofikTCegE=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "registerBeanDefinitions", + "source": { + "$ref": "AAAAAAFvB+fBYkQ0R48=" + }, + "target": { + "$ref": "AAAAAAFvB+nQ6ESfFXo=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB+rFrkTaOZo=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "doRegisterBeanDefinitions", + "source": { + "$ref": "AAAAAAFvB+nQ6ESfFXo=" + }, + "target": { + "$ref": "AAAAAAFvB+nQ6ESfFXo=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB+s/H0Ty2mA=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "parseBeanDefinitions", + "source": { + "$ref": "AAAAAAFvB+nQ6ESfFXo=" + }, + "target": { + "$ref": "AAAAAAFvB+nQ6ESfFXo=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB+vu8EUJUwo=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "processBeanDefinition", + "source": { + "$ref": "AAAAAAFvB+nQ6ESfFXo=" + }, + "target": { + "$ref": "AAAAAAFvB+nQ6ESfFXo=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB+2VYUVDde0=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "registerBeanDefinition", + "source": { + "$ref": "AAAAAAFvB+nQ6ESfFXo=" + }, + "target": { + "$ref": "AAAAAAFvB+0PjkUhY/8=" + } + }, + { + "_type": "UMLMessage", + "_id": "AAAAAAFvB+5BKEV9YnI=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "registerBeanDefinition", + "source": { + "$ref": "AAAAAAFvB+0PjkUhY/8=" + }, + "target": { + "$ref": "AAAAAAFvB+3WmkVappc=" + } + } + ], + "participants": [ + { + "_type": "UMLLifeline", + "_id": "AAAAAAFvB+dWCEQQOBI=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "AbstractBeanDefinitionReader", + "represent": { + "$ref": "AAAAAAFvB+dWCEQPtA8=" + }, + "isMultiInstance": false + }, + { + "_type": "UMLLifeline", + "_id": "AAAAAAFvB+fBYkQ0R48=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "XmlBeanDefinitionReader", + "represent": { + "$ref": "AAAAAAFvB+fBYkQzWao=" + }, + "isMultiInstance": false + }, + { + "_type": "UMLLifeline", + "_id": "AAAAAAFvB+nQ6ESfFXo=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "DefaultBeanDefinitionDocumentReader", + "represent": { + "$ref": "AAAAAAFvB+nQ6ESeTsw=" + }, + "isMultiInstance": false + }, + { + "_type": "UMLLifeline", + "_id": "AAAAAAFvB+0PjkUhY/8=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "BeanDefinitionReaderUtils", + "represent": { + "$ref": "AAAAAAFvB+0PjkUgmnc=" + }, + "isMultiInstance": false + }, + { + "_type": "UMLLifeline", + "_id": "AAAAAAFvB+3WmkVappc=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEQACqA=" + }, + "name": "DefaultListableBeanFactory", + "represent": { + "$ref": "AAAAAAFvB+3WmkVZ0yk=" + }, + "isMultiInstance": false + } + ] + } + ], + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAFvB+dWCEQPtA8=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEP/aiM=" + }, + "name": "Role1" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAFvB+fBYkQzWao=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEP/aiM=" + }, + "name": "Role2" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAFvB+nQ6ESeTsw=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEP/aiM=" + }, + "name": "Role3" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAFvB+0PjkUgmnc=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEP/aiM=" + }, + "name": "Role4" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAFvB+3WmkVZ0yk=", + "_parent": { + "$ref": "AAAAAAFvB+ZoHEP/aiM=" + }, + "name": "Role5" + } + ] + } + ] + } + ] +} \ No newline at end of file From ff54ba5457ca536ae54feb40989ced3780d58f16 Mon Sep 17 00:00:00 2001 From: fangpeng <591930734@qq.com> Date: Mon, 21 Feb 2022 23:34:57 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0springmvc=E7=9A=84?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=E3=80=81=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lemon/controller/DemoController.java | 13 ++++++++++ .../controller/GlobalExceptionResolver.java | 26 +++++++++++++++++++ .../1f6337fa-ce74-43da-8520-d4beac9e7c7b.mdj | 0 3 files changed, 39 insertions(+) create mode 100644 springmvc-demo/src/main/java/com/lemon/controller/GlobalExceptionResolver.java rename springmvc-demo/src/main/webapp/uploads/{2019-10-08 => 2020-08-08}/1f6337fa-ce74-43da-8520-d4beac9e7c7b.mdj (100%) diff --git a/springmvc-demo/src/main/java/com/lemon/controller/DemoController.java b/springmvc-demo/src/main/java/com/lemon/controller/DemoController.java index 2e04f8c1..cc65a995 100644 --- a/springmvc-demo/src/main/java/com/lemon/controller/DemoController.java +++ b/springmvc-demo/src/main/java/com/lemon/controller/DemoController.java @@ -29,6 +29,19 @@ @RequestMapping("/demo") public class DemoController { + + // SpringMVC的异常处理机制(异常处理器) + // 注意:写在这里只会对当前controller类生效 + @ExceptionHandler(ArithmeticException.class) + public void handleException(ArithmeticException exception,HttpServletResponse response) { + // 异常处理逻辑 + try { + response.getWriter().write(exception.getMessage()); + } catch (IOException e) { + e.printStackTrace(); + } + } + /** * url: http://localhost:8080/demo/handle01 */ diff --git a/springmvc-demo/src/main/java/com/lemon/controller/GlobalExceptionResolver.java b/springmvc-demo/src/main/java/com/lemon/controller/GlobalExceptionResolver.java new file mode 100644 index 00000000..47644bee --- /dev/null +++ b/springmvc-demo/src/main/java/com/lemon/controller/GlobalExceptionResolver.java @@ -0,0 +1,26 @@ +package com.lemon.controller; + +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletResponse; + +/** + * @Description: 全局异常处理 + * 可以让我们优雅的捕获所有Controller对象handler方法抛出的异常 + * @Author : Lemon-CS + * @Date : 2022年02月21日 11:31 下午 + */ +@ControllerAdvice +public class GlobalExceptionResolver { + + @ExceptionHandler(ArithmeticException.class) + public ModelAndView handleException(ArithmeticException exception, HttpServletResponse response) { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("msg",exception.getMessage()); + modelAndView.setViewName("error"); + return modelAndView; + } + +} diff --git a/springmvc-demo/src/main/webapp/uploads/2019-10-08/1f6337fa-ce74-43da-8520-d4beac9e7c7b.mdj b/springmvc-demo/src/main/webapp/uploads/2020-08-08/1f6337fa-ce74-43da-8520-d4beac9e7c7b.mdj similarity index 100% rename from springmvc-demo/src/main/webapp/uploads/2019-10-08/1f6337fa-ce74-43da-8520-d4beac9e7c7b.mdj rename to springmvc-demo/src/main/webapp/uploads/2020-08-08/1f6337fa-ce74-43da-8520-d4beac9e7c7b.mdj From f577db1df2c5cf96bfe982dd6dfffd97a0efadb9 Mon Sep 17 00:00:00 2001 From: fangpeng <591930734@qq.com> Date: Wed, 23 Feb 2022 22:47:15 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89SpringMVC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mvc/pom.xml | 80 + .../lemon/demo/controller/DemoController.java | 33 + .../com/lemon/demo/service/IDemoService.java | 6 + .../demo/service/impl/DemoServiceImpl.java | 14 + .../annotations/LagouAutowired.java | 10 + .../annotations/LagouController.java | 12 + .../annotations/LagouRequestMapping.java | 10 + .../annotations/LagouService.java | 10 + .../com/lemon/mvcframework/pojo/Handler.java | 61 + .../servlet/LgDispatcherServlet.java | 364 ++ mvc/src/main/resources/springmvc.properties | 1 + mvc/src/main/webapp/WEB-INF/web.xml | 22 + mvc/src/main/webapp/index.jsp | 5 + .../demo/controller/DemoController.class | Bin 0 -> 1157 bytes .../com/lemon/demo/service/IDemoService.class | Bin 0 -> 220 bytes .../demo/service/impl/DemoServiceImpl.class | Bin 0 -> 1008 bytes .../annotations/LagouAutowired.class | Bin 0 -> 518 bytes .../annotations/LagouController.class | Bin 0 -> 519 bytes .../annotations/LagouRequestMapping.class | Bin 0 -> 541 bytes .../annotations/LagouService.class | Bin 0 -> 513 bytes .../com/lemon/mvcframework/pojo/Handler.class | Bin 0 -> 1926 bytes .../servlet/LgDispatcherServlet.class | Bin 0 -> 11188 bytes mvc/target/classes/springmvc.properties | 1 + .../compile/default-compile/createdFiles.lst | 9 + .../compile/default-compile/inputFiles.lst | 9 + mvc/target/tomcat/conf/logging.properties | 64 + mvc/target/tomcat/conf/tomcat-users.xml | 26 + mvc/target/tomcat/conf/web.xml | 4283 +++++++++++++++++ mvc/target/tomcat/logs/access_log.2022-02-23 | 16 + springmvc-demo/pom.xml | 5 +- 30 files changed, 5040 insertions(+), 1 deletion(-) create mode 100644 mvc/pom.xml create mode 100644 mvc/src/main/java/com/lemon/demo/controller/DemoController.java create mode 100644 mvc/src/main/java/com/lemon/demo/service/IDemoService.java create mode 100644 mvc/src/main/java/com/lemon/demo/service/impl/DemoServiceImpl.java create mode 100644 mvc/src/main/java/com/lemon/mvcframework/annotations/LagouAutowired.java create mode 100644 mvc/src/main/java/com/lemon/mvcframework/annotations/LagouController.java create mode 100644 mvc/src/main/java/com/lemon/mvcframework/annotations/LagouRequestMapping.java create mode 100644 mvc/src/main/java/com/lemon/mvcframework/annotations/LagouService.java create mode 100644 mvc/src/main/java/com/lemon/mvcframework/pojo/Handler.java create mode 100644 mvc/src/main/java/com/lemon/mvcframework/servlet/LgDispatcherServlet.java create mode 100644 mvc/src/main/resources/springmvc.properties create mode 100644 mvc/src/main/webapp/WEB-INF/web.xml create mode 100644 mvc/src/main/webapp/index.jsp create mode 100644 mvc/target/classes/com/lemon/demo/controller/DemoController.class create mode 100644 mvc/target/classes/com/lemon/demo/service/IDemoService.class create mode 100644 mvc/target/classes/com/lemon/demo/service/impl/DemoServiceImpl.class create mode 100644 mvc/target/classes/com/lemon/mvcframework/annotations/LagouAutowired.class create mode 100644 mvc/target/classes/com/lemon/mvcframework/annotations/LagouController.class create mode 100644 mvc/target/classes/com/lemon/mvcframework/annotations/LagouRequestMapping.class create mode 100644 mvc/target/classes/com/lemon/mvcframework/annotations/LagouService.class create mode 100644 mvc/target/classes/com/lemon/mvcframework/pojo/Handler.class create mode 100644 mvc/target/classes/com/lemon/mvcframework/servlet/LgDispatcherServlet.class create mode 100644 mvc/target/classes/springmvc.properties create mode 100644 mvc/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 mvc/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 mvc/target/tomcat/conf/logging.properties create mode 100644 mvc/target/tomcat/conf/tomcat-users.xml create mode 100644 mvc/target/tomcat/conf/web.xml create mode 100644 mvc/target/tomcat/logs/access_log.2022-02-23 diff --git a/mvc/pom.xml b/mvc/pom.xml new file mode 100644 index 00000000..23293e7d --- /dev/null +++ b/mvc/pom.xml @@ -0,0 +1,80 @@ + + + + 4.0.0 + + com.lemon + mvc + 1.0-SNAPSHOT + war + + mvc Maven Webapp + + http://www.example.com + + + UTF-8 + 8 + 8 + + + + + 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 + + 8 + 8 + utf-8 + + + -parameters + + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + 8080 + / + + + + + diff --git a/mvc/src/main/java/com/lemon/demo/controller/DemoController.java b/mvc/src/main/java/com/lemon/demo/controller/DemoController.java new file mode 100644 index 00000000..7fea64d4 --- /dev/null +++ b/mvc/src/main/java/com/lemon/demo/controller/DemoController.java @@ -0,0 +1,33 @@ +package com.lemon.demo.controller; + + + +import com.lemon.demo.service.IDemoService; +import com.lemon.mvcframework.annotations.LagouAutowired; +import com.lemon.mvcframework.annotations.LagouController; +import com.lemon.mvcframework.annotations.LagouRequestMapping; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@LagouController +@LagouRequestMapping("/demo") +public class DemoController { + + + @LagouAutowired + private IDemoService demoService; + + + /** + * URL: /demo/query?name=lisi + * @param request + * @param response + * @param name + * @return + */ + @LagouRequestMapping("/query") + public String query(HttpServletRequest request, HttpServletResponse response, String name) { + return demoService.get(name); + } +} diff --git a/mvc/src/main/java/com/lemon/demo/service/IDemoService.java b/mvc/src/main/java/com/lemon/demo/service/IDemoService.java new file mode 100644 index 00000000..f6f1766b --- /dev/null +++ b/mvc/src/main/java/com/lemon/demo/service/IDemoService.java @@ -0,0 +1,6 @@ +package com.lemon.demo.service; + +public interface IDemoService { + + String get(String name); +} diff --git a/mvc/src/main/java/com/lemon/demo/service/impl/DemoServiceImpl.java b/mvc/src/main/java/com/lemon/demo/service/impl/DemoServiceImpl.java new file mode 100644 index 00000000..9ed448ad --- /dev/null +++ b/mvc/src/main/java/com/lemon/demo/service/impl/DemoServiceImpl.java @@ -0,0 +1,14 @@ +package com.lemon.demo.service.impl; + + +import com.lemon.demo.service.IDemoService; +import com.lemon.mvcframework.annotations.LagouService; + +@LagouService("demoService") +public class DemoServiceImpl implements IDemoService { + @Override + public String get(String name) { + System.out.println("service 实现类中的name参数:" + name) ; + return name; + } +} diff --git a/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouAutowired.java b/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouAutowired.java new file mode 100644 index 00000000..010840c8 --- /dev/null +++ b/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouAutowired.java @@ -0,0 +1,10 @@ +package com.lemon.mvcframework.annotations; + +import java.lang.annotation.*; + +@Documented +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface LagouAutowired { + String value() default ""; +} diff --git a/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouController.java b/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouController.java new file mode 100644 index 00000000..329b6b2f --- /dev/null +++ b/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouController.java @@ -0,0 +1,12 @@ +package com.lemon.mvcframework.annotations; + +import java.lang.annotation.*; + +@Documented +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface LagouController { + + String value() default ""; + +} diff --git a/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouRequestMapping.java b/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouRequestMapping.java new file mode 100644 index 00000000..16028edb --- /dev/null +++ b/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouRequestMapping.java @@ -0,0 +1,10 @@ +package com.lemon.mvcframework.annotations; + +import java.lang.annotation.*; + +@Documented +@Target({ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface LagouRequestMapping { + String value() default ""; +} diff --git a/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouService.java b/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouService.java new file mode 100644 index 00000000..1d14a156 --- /dev/null +++ b/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouService.java @@ -0,0 +1,10 @@ +package com.lemon.mvcframework.annotations; + +import java.lang.annotation.*; + +@Documented +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface LagouService { + String value() default ""; +} \ No newline at end of file diff --git a/mvc/src/main/java/com/lemon/mvcframework/pojo/Handler.java b/mvc/src/main/java/com/lemon/mvcframework/pojo/Handler.java new file mode 100644 index 00000000..41965ced --- /dev/null +++ b/mvc/src/main/java/com/lemon/mvcframework/pojo/Handler.java @@ -0,0 +1,61 @@ +package com.lemon.mvcframework.pojo; + +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/mvc/src/main/java/com/lemon/mvcframework/servlet/LgDispatcherServlet.java b/mvc/src/main/java/com/lemon/mvcframework/servlet/LgDispatcherServlet.java new file mode 100644 index 00000000..5b27f47e --- /dev/null +++ b/mvc/src/main/java/com/lemon/mvcframework/servlet/LgDispatcherServlet.java @@ -0,0 +1,364 @@ +package com.lemon.mvcframework.servlet; + +import com.lemon.mvcframework.annotations.LagouAutowired; +import com.lemon.mvcframework.annotations.LagouController; +import com.lemon.mvcframework.annotations.LagouRequestMapping; +import com.lemon.mvcframework.annotations.LagouService; +import com.lemon.mvcframework.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.annotation.Annotation; +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; + +/** + * @Description: TODO + * @Author : Lemon-CS + * @Date : 2022年02月22日 7:10 下午 + */ +public class LgDispatcherServlet extends HttpServlet { + + private Properties properties = new Properties(); + + private List classNames = new ArrayList<>(); // 缓存扫描到的类的全限定类名 + + // ioc容器 + private Map ioc = new HashMap(); + + // handlerMapping + //private Map handlerMapping = now HashMap<>(); // 存储url和Method之间的映射关系 + private List handlerMapping = new ArrayList<>(); + + @Override + public void init(ServletConfig config) throws ServletException { + // 1 加载配置文件 springmvc.properties + String contextConfigLocation = config.getInitParameter("contextConfigLocation"); + doLoadConfig(contextConfigLocation); + + // 2 扫描相关的类,扫描注解 + doScan(properties.getProperty("scanPackage")); + + // 3 初始化bean对象(实现ioc容器,基于注解) + doInstance(); + + // 4 实现依赖注入 + doAutoWired(); + + // 5 构造一个HandlerMapping处理器映射器,将配置好的url和Method建立映射关系 + initHandlerMapping(); + + System.out.println("lagou mvc 初始化完成...."); + // 等待请求进入,处理请求 + } + + /* + 构造一个HandlerMapping处理器映射器 + 最关键的环节 + 目的:将url和method建立关联 + */ + private void initHandlerMapping() { + + if (ioc.isEmpty()) { + return; + } + + for (Map.Entry entry : ioc.entrySet()) { + // 获取ioc中当前遍历的对象的class类型 + Class clazz = entry.getValue().getClass(); + + if (!clazz.isAnnotationPresent(LagouController.class)) { + continue; + } + + String baseUrl = ""; + if (clazz.isAnnotationPresent(LagouRequestMapping.class)) { + LagouRequestMapping annotation = clazz.getAnnotation(LagouRequestMapping.class); + baseUrl = annotation.value(); // 等同于/demo + } + + // 获取方法 + Method[] methods = clazz.getMethods(); + for (int i = 0; i < methods.length; i++) { + Method method = methods[i]; + + // 方法没有标识LagouRequestMapping,就不处理 + if(!method.isAnnotationPresent(LagouRequestMapping.class)) {continue;} + + // 如果标识,就处理 + LagouRequestMapping annotation = method.getAnnotation(LagouRequestMapping.class); + String methodUrl = annotation.value(); // /query + String url = baseUrl + methodUrl; // 计算出来的url /demo/query + + // 把method所有信息及url封装为一个Handler + Handler handler = new Handler(entry.getValue(), method, Pattern.compile(url)); + + // 计算方法的参数位置信息 + // query(HttpServletRequest request, HttpServletResponse response,String name) + Parameter[] parameters = method.getParameters(); + for (int j = 0; j < parameters.length; j++) { + Parameter parameter = parameters[j]; + + if (parameter.getType() == HttpServletRequest.class || parameter.getType() == HttpServletResponse.class) { + // 如果是request和response对象,那么参数名称写HttpServletRequest和HttpServletResponse + handler.getParamIndexMapping().put(parameter.getType().getSimpleName(), j); + } else { + handler.getParamIndexMapping().put(parameter.getName(), j); // + } + + } + + + // 建立url和method之间的映射关系(map缓存起来) + handlerMapping.add(handler); + } + } + + } + + // 实现依赖注入 + private void doAutoWired() { + + if (ioc.isEmpty()) { + return; + } + + // 有对象,再进行依赖注入处理 + + // 遍历ioc中所有对象,查看对象中的字段,是否有@LagouAutowired注解,如果有需要维护依赖注入关系 + for (Map.Entry entry : ioc.entrySet()) { + // 获取bean对象中的字段信息 + Field[] declaredFields = entry.getValue().getClass().getDeclaredFields(); + + // 遍历判断处理 + for (int i = 0; i < declaredFields.length; i++) { + Field declaredField = declaredFields[i]; + if (!declaredField.isAnnotationPresent(LagouAutowired.class)) { + continue; + } + + // 有该注解 + LagouAutowired annotation = declaredField.getAnnotation(LagouAutowired.class); + String beanName = annotation.value(); // 需要注入的bean的id + + if ("".equals(beanName.trim())) { + // 没有配置具体的bean id,那就需要根据当前字段类型注入(接口注入) IDemoService + beanName = declaredField.getType().getName(); + } + + // 开启赋值 + declaredField.setAccessible(true); + + try { + declaredField.set(entry.getValue(), ioc.get(beanName)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + + } + + // ioc容器 + // 基于classNames缓存的类的全限定类名,以及反射技术,完成对象创建和管理 + private void doInstance() { + + if (classNames.size() == 0) { + return; + } + + try { + + for (int i = 0; i < classNames.size(); i++) { + String className = classNames.get(i); // com.lemon.demo.controller.DemoController + + // 反射 + Class clazz = Class.forName(className); + + // 区分controller,区分service' + if (clazz.isAnnotationPresent(LagouController.class)) { + // controller的id此处不做过多处理,不取value了,就拿类的首字母小写作为id,保存到ioc中 + String simpleName = clazz.getSimpleName(); + String lowerFirstSimpleName = lowerFirst(simpleName); + + Object o = clazz.newInstance(); + ioc.put(lowerFirstSimpleName, o); + } else if (clazz.isAnnotationPresent(LagouService.class)) { + LagouService annotation = (LagouService) clazz.getAnnotation(LagouService.class); + //获取注解value值 + String beanName = annotation.value(); + Object instance = clazz.newInstance(); + + // 如果指定了id,就以指定的为准 + if (!"".equals(beanName.trim())) { + ioc.put(beanName, instance); + } else { + // 如果没有指定,就以类名首字母小写 + beanName = lowerFirst(clazz.getSimpleName()); + ioc.put(beanName, instance); + } + + // service层往往是有接口的,面向接口开发,此时再以接口名为id,放入一份对象到ioc中,便于后期根据接口类型注入 + Class[] interfaces = clazz.getInterfaces(); + + for (int j = 0; j < interfaces.length; j++) { + Class anInterface = interfaces[j]; + // 以接口的全限定类名作为id放入 + ioc.put(anInterface.getName(), clazz.newInstance()); + } + } else { + continue; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + } + + // 扫描类 + // scanPackage: com.lagou.demo package----> 磁盘上的文件夹(File) com/lagou/demo + private void doScan(String scanPackage) { + + String scanPackagePath = Thread.currentThread().getContextClassLoader().getResource("").getPath() + + scanPackage.replaceAll("\\.", "/"); + + File pack = new File(scanPackagePath); + + File[] files = pack.listFiles(); + + for (File file : files) { + if(file.isDirectory()) { // 子package + // 递归 + doScan(scanPackage + "." + file.getName()); // com.lagou.demo.controller + }else if(file.getName().endsWith(".class")) { + String className = scanPackage + "." + file.getName().replaceAll(".class", ""); + classNames.add(className); + } + } + + } + + // 加载配置文件 + private void doLoadConfig(String contextConfigLocation) { + + InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream(contextConfigLocation); + + try { + properties.load(resourceAsStream); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + // 首字母小写方法 + public String lowerFirst(String str) { + char[] chars = str.toCharArray(); + if('A' <= chars[0] && chars[0] <= 'Z') { + chars[0] += 32; + } + return String.valueOf(chars); + } + + @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方法,进行调用 + // 获取uri + // String requestURI = req.getRequestURI(); + // Method method = handlerMapping.get(requestURI);// 获取到一个反射的方法 + // 反射调用,需要传入对象,需要传入参数,此处无法完成调用,没有把对象缓存起来,也没有参数!!!!改造initHandlerMapping(); + // method.invoke() + + + // 根据uri获取到能够处理当前请求的hanlder(从handlermapping中(list)) + Handler handler = getHandler(req); + + if (handler == null) { + resp.getWriter().write("404 not found"); + return; + } + + // 参数绑定 + // 获取所有参数类型数组,这个数组的长度就是我们最后要传入的args数组的长度 + Class[] parameterTypes = handler.getMethod().getParameterTypes(); + + + // 根据上述数组长度创建一个新的数组(参数数组,是要传入反射调用的) + Object[] paraValues = new Object[parameterTypes.length]; + + // 以下就是为了向参数数组中塞值,而且还得保证参数的顺序和方法中形参顺序一致 + + Map parameterMap = req.getParameterMap(); + + // 遍历request中所有参数 (填充除了request,response之外的参数) + for(Map.Entry param: parameterMap.entrySet()) { + // name=1&name=2 name [1,2] + String value = StringUtils.join(param.getValue(), ","); // 如同 1,2 + + // 如果参数和方法中的参数匹配上了,填充数据 + if(!handler.getParamIndexMapping().containsKey(param.getKey())) {continue;} + + // 方法形参确实有该参数,找到它的索引位置,对应的把参数值放入paraValues + Integer index = handler.getParamIndexMapping().get(param.getKey());//name在第 2 个位置 + + paraValues[index] = value; // 把前台传递过来的参数值填充到对应的位置去 + + } + + int requestIndex = handler.getParamIndexMapping().get(HttpServletRequest.class.getSimpleName()); // 0 + paraValues[requestIndex] = req; + + + int responseIndex = handler.getParamIndexMapping().get(HttpServletResponse.class.getSimpleName()); // 1 + paraValues[responseIndex] = resp; + + + // 最终调用handler的method属性 + 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 url = req.getRequestURI(); + + for (Handler handler : handlerMapping) { + Matcher matcher = handler.getPattern().matcher(url); + + if (!matcher.matches()) { + continue; + } + + return handler; + } + return null; + } + + +} diff --git a/mvc/src/main/resources/springmvc.properties b/mvc/src/main/resources/springmvc.properties new file mode 100644 index 00000000..1171d682 --- /dev/null +++ b/mvc/src/main/resources/springmvc.properties @@ -0,0 +1 @@ +scanPackage=com.lemon.demo \ No newline at end of file diff --git a/mvc/src/main/webapp/WEB-INF/web.xml b/mvc/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000..723a6c42 --- /dev/null +++ b/mvc/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,22 @@ + + + + Archetype Created Web Application + + + lgoumvc + com.lemon.mvcframework.servlet.LgDispatcherServlet + + contextConfigLocation + springmvc.properties + + + + + lgoumvc + /* + + + diff --git a/mvc/src/main/webapp/index.jsp b/mvc/src/main/webapp/index.jsp new file mode 100644 index 00000000..c38169bb --- /dev/null +++ b/mvc/src/main/webapp/index.jsp @@ -0,0 +1,5 @@ + + +

Hello World!

+ + diff --git a/mvc/target/classes/com/lemon/demo/controller/DemoController.class b/mvc/target/classes/com/lemon/demo/controller/DemoController.class new file mode 100644 index 0000000000000000000000000000000000000000..107610852f9d135b6324499e8524587e62dd0518 GIT binary patch literal 1157 zcma)5+invv5IxSdZBklVZsk@==`9lYfj%G=Ayq{Pq!dtt`tEK_>atk}$D6`mfrNzM zfe+xL5XZX_X{thbSkKPP@yziV`{%FkKLBi^F@-XgCQ-uO8kTXdij^u>1!`^GwJq%i zCei{c&B%6T%upgjLiY2FeDQPy+Y(sVOA~Lpdf)WTL9Dlv#Cqk8P5J^4Pt@oRqPI?U z^|5vDq#B`QQ*~^*oqBt0oNlvX<*`YOe6sM1c*tI$r;7HD}2u625nR?wCkUm-qc z>1nP349wsH*Ln`1H%m|8BIZ!cHn&);#8|EI1%>7PAtK95yV$4VcHJ ztZWUJafLfV>?*FY@B;s*iv)lvFo=wPAbg$QjXrJ?e~aM)ZfB_({w>lUrtka)8`d`P literal 0 HcmV?d00001 diff --git a/mvc/target/classes/com/lemon/demo/service/IDemoService.class b/mvc/target/classes/com/lemon/demo/service/IDemoService.class new file mode 100644 index 0000000000000000000000000000000000000000..2bf493075309a132374183a6417cc0af9b54d8b9 GIT binary patch literal 220 zcmZXOOA5k35JanEJ{mWA20?V=Y}~mOK~NNOf^pKsgnVE!=5Q`NfQJ%0xKMCYbiHo6 z>iN1q0IV^NFp3Zp1{piTd~qmrr&X!zOeN0db+%dlBf{j!?%JehZFR+tZAR%IPrm0jZxK^pCYCl``dny6n9;Zve#)SleC#3=Mr7wK( Ofw+JW_7IV%hv6Fxl{oqU literal 0 HcmV?d00001 diff --git a/mvc/target/classes/com/lemon/demo/service/impl/DemoServiceImpl.class b/mvc/target/classes/com/lemon/demo/service/impl/DemoServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..8618bdd30e2838025b95b6fef21e1d09a32ab0a6 GIT binary patch literal 1008 zcmb7DOHUI~6#j0Zol-_Y9x9>;f>@|9qUGK8GAex^NMr7RGYu zz(^LCVm%&^RB5Xfu5rF)x*eJR>2dw?9$R# zG!^NVWuW78+t?Yd=!U>dv0^;ORi5#kDy7ppa+0Jd>H=zu*@fkn2uN$vfc@`tTFu`+2?s+*ySu;_)D|VD_N;hJ< z?zsK7*@lf17N%_!a8=;U;p*>1+O4WUV4^*)(VdU)ci*hyO+gCr| zt^fMEW@84kHXK~DFlXaBZU_|qW9%H&UICAmS5<`+jQ<5-ao^Mq1eRVlLgkS`6ES?S z#g;bC64?vMp^_e_k&*Sf@~d2of1=)mp^tF`jaLOW)!gMaemilNylX@ zV+>t<7UYL-Bt=bTC{Oa_Pz&nx^cKWMa@|9jNsL+a^51Sb;1v3J66nVOLE_*NUsQ^E z_!Cmw=y^>z$ZZBSyrHz7k+Qw-}-Rw%TiS(~|@CW## z#L2~o6g(`mv-8Y5%)6go?;ilpu;XFN!?uUEKs{GFBZ2nO@nEKMCABi49J?ek;kiKT z!Wiq6i>&FI*p3T<|2jZ3W7l$;bg0=uKkxG1KFD2*nXN}*KX z;MXkmGeP!jki}#iJ@e?j#f-0#kQ~z4>id{aYw9pYG*RFD3?(q9hm+KQ8T37TeusSrFr&(nLa{ zi9f&}WqfC5Dchwae3_X&bLKtIoO5RX{`>U@z!Ki%kj2X^?%|aj7Ui&%!Rs7S+Ps{> zN(QR}xr*lozE`i?zCdsJ*gCV!y5-i)4+qC~C0G|oH|*fZs|t)nc76M>&TVr??a?dK zw1U9)U4dckb{aT!)3lQTSY9fo9LYm@H6`Y$+upWOkHKi zwcnpM4s8FUbx^0Jx9nA{`o85m@;fvpgCpleV5(g48fM*Yc&^zvs~j=`_7~6pY&N}P z&)l-yDsxZZZk@|rnIW60s7AzdlkavckGJ9tXjekFUOU3%IA=!RL1+wR^b{fg*D zl-?+t3?hjJ+pGMwc~$APnD<@7tL*K0r+&qL=g2l!|ChyQ@?6UX^7ch!5`*^}XM3(=KBoZtB zt^4TB8exEbgS32u!Lz_b=@Ozedx1o0?gB<>{sPI;Z=^n5B7K3(4|RBm;|S6mhj{2A zrG|OA5%ggck1$3HP||YT8Q~X&6_!vd36@YRiDvK=P%!8KGJ{ee+Ze_OvyNt*^%ivraLhu z<4lWWTDpZv*09B-YgfcfC>yO^CeF0dfl0S#iHft#f}!%YOR-iBRSz1f19T17$+mF| dn{N4eCQ4T$&9~NfP20^49dLn0lV1tE_z&QJc_#n> literal 0 HcmV?d00001 diff --git a/mvc/target/classes/com/lemon/mvcframework/servlet/LgDispatcherServlet.class b/mvc/target/classes/com/lemon/mvcframework/servlet/LgDispatcherServlet.class new file mode 100644 index 0000000000000000000000000000000000000000..21ff8ccf17b39521380c07dcc3548029def6831b GIT binary patch literal 11188 zcma)C34Bxa9smB)q%TcgTL>)}5Je6tg&H~4f=o`SmWq@^@CxGA&51{#I+0zvOXt+NIX5@mn45Fz4uv_P`~Kd0NnU8H__445_dkB;_jmkX z`RU<@_5zsY2?wxUjx}U#03JEE0w0s(3^_gkpZzk?ll7%eA5-*EuaBt}GEEx%a#BDda&l0n%M5+Y49YB-9h5n8iat&?&~) zp5}lomli|LF=T~Ko~tBQ2Czk1Rf<)*ygDdrWUVfoXUMvMtXJ~umE~Nr#94B_J}%I? z7TvX4M;Gexi*$6cA(sTORH8~|gFe~}Y1fT0)xSeWorZJ;(PC>5H)LY~=Snmnmr6n( zn*x%QR6x4rGQXt#l2L|PLwW*OFPrtTMIT%Ja=HFq?U!x3;|eAHK|T8+wf>ccTopi! zbh-9neSAa(_^3WU7Q{^1?w6|r@^QIFEwMw*bFCqt2x5j@XGqX5*9YVV`J}qxM%C_9 zhTNo>h>TDO13kk1Big{|rgJ@`4*ceZZ$yc+%s0of_H7;>v2Ulato)2Z%QIvbB= z1S6X_MmI+zJ=u67vZ63Qm%G{$(M+Z#x=D8pbM0!5XR=(cXpMI!quHKxOfd0?<$3md zBAV=sv}V)sWar%ZJW>`QZps>g zcTuXHdQ~^ald+bbO&enARnZLz&V-s%ZPCP@>0;kQQeyPX}2Qpt{Z=UkPlyv-U5#=hrPK`l3CV_UQK zSrs`OPbF1)%h_(f(9uh_w#B-2L&lIV(bvmk*{)Rkil|yE8%tBOkc#M-t6=OvG?`3g z9m=N;rF(HxCej@3O!cgcUDgxJWF0aJr0zVYykZecz;vu5K~F~tf^e^Fm)O6}rerdfw&-bK*4j+0@TEy7TD!<- zWGPNB@6Kbj=18gL)oWD$ZaeehJ2a%*1!XXe8tKN68F-OJl;PQ)YHf=$;ndnm z%?@a%5?J}QBd*!B%JyG863u&8cX+o&E}{a97hgZdHb*W0_P>x-GUKL)l`{O(k2C-91@*n%dpLB2Hfx z-6uG4Fx^~$bkt?)$z;=-7P_LEOFic=GVnjXx2MjGG4HQDGVga~v)z$pd^iQbNtkmj z(#7&Ha9gIEDLiIXin4UBUp(0! z+bS60GJ#^ZGnOU;pOr=h4X)LE#5N^2I~8hGG~F4?x?NONNWZI?!)QJ$AFolCd>P@! zVj*bE!Wm{Hf`PWsiqmAvSE;J1p`3Ro$(3f%K{B74mE&4XoO5i2^2d+%pxyc!awl6i zDn+fG@+xR~e=pc>n=({7IHH6Zo9vdOkS{G^)AY>N$Z~s$2>%+zXtkn2V^MI-Al=GI z+CG^06mAmK4AwWAxEdd)Uy5rB(&^~s+KZXE20K_4i%ZL*nJ#+B#C5pd#3!-Ckh@Ij z#X%GQ#4DzJT}OZ62*1KjCVs4suiz#_zG2EY3ABb#!Me8-e~WtSoMnR36dDBWhtgF2a$-6aASs;DV@WVb1O z@{nN05Pjr;TEdi*O{ZAD(yV``JS^W8fG9cI^QGO9DUZlrQ@rx1Df{GmtfYcbmH}NY z+`^uCqCJ*2<@@pjQ+_Cq3MLG}&J7Gheq_pH@;KcoKQ`qj@>5o3Q+}rEPEsE4m1-;i zG6lZhK0DG(`MEq{%9ECZR{>YZPXsW?m3R7MpsN`k&lOFpsd*9*-JH}1fFMly{fKZfI z6e*FTmC-4|ruQ~oZmneq>L-Hr^t!AWe5BBuOD z-eMNBBy$R#h9CpvZ8>1dLHQ21aclWWR`oXJzw(YL|C85Ec~=gZa#;HF{7WmK>EZ2^ z9`SfgDZ^n?YGtJ9Df4*QXw5o#);MMR55-$)$&|E>Mix1nqYc{(dwSzx+UZpA(&b;{reUM(^EsAdulx+ zO&R4G#pGprj!`=d6{ne@Z(!`|mGjVOAF#ox%Y`zN4aq5n&!2rTQ?=xFdFg9 zl1<%NlIBHxJ=<67`qQe7((t+|u3F0}R$rH*)*gSnVE&OM+w*SW8QuXiExa7F>q%O_ zYVtcRd=}aWKQ*-)4NAeG$Rgzk9H@_PU zvdz^d6|-NYc#1qr#V&N4+Dq7|VuLicZi>5a$%ChGyDaCIlUR~BsRp+U4lT#r14|8= z`?D!~S00=$aIsaV7u1=|mEBe|@gC#{9whl?ZgCusxJ+_{9xhneU5z7w)e5V%3;3l; z#tm+g!WMEjctqPx+BkpMY8Dww_IIXIC~}&Il#lyPXIOplIUT%<*EP9KS!{~Sc*78! z`rf)a+Pf(fAgY2om(^m#YqQ1hiMG?NCHJp9B|>mG4=#4!rD>RB2RBUqKJDdqJcf5U zo9SqR+bc6fv2{a_TVKY!b?fzJS4PT5+>P>lT@Ea0P(~`es2rUMNWR+26xQd4RcY%| z?9Ift(Njzp{4P{mYU%NlY7n63BRZIjZ7E*j)w$|7>mp9&8GG)y${%v2 z!&P0pP|^dHZ9VBUvqAp7G-~ZxqNkP&w0G2xc6tYI=JhqkA`%{$ZtNvJQ>+;!XEa5x zbZ)l%urjp5Nq&=Dy|S64OpBEBZU=yU;SQu@-3i)xL4se;N|5T<&gIlWtm#bgQ(S_m z)Qbg;$LMj4=d?2vAQ;aq<|mjoR!-)AX8rce+PL2MOAwsrKm=E*!Q7S_;nKQzpPw?c z_N7IWGI$d-I;*sE|r{R9;u}H)F{6+5QEb2^&)~2;0F-hkAn6HTT z0=X6{xK$DJ`+ZyVAnisP`5u7*>az9`Ina*jLKbsw%hfzyn6p}eiK%pFB+AbyT`_HC z`DHv~eVv){L2f$6BiER4Y^I3A6dfYT|# z2N1ymONMbaA4di~u@kpYmJ05=6E~ z8$uKKz7wOY!Nh%-(C7>M`Y=hr#T-s-^p(viuPqPz_TG*s!oJ$_8I4BR&{LC@3huXG z>hz>P?6*%=Jd7!HReji-!_;sEA302G3_Og6b+#yBBOKU+lXfH07z`UZoZM)Z&8e)d z44Y)LDs0wP&S_wWnqK`#_Jn=zKpvxt(jQHd6MYz0okN-RVxmS7E< zu$FJ<;Xcq4v}B%VPEFQOa!k;Z?Kl^Sf8DM(2K zACkGaNEYBKS&WZZsQ3aMdLc3JRoqVJ?#E)>fjfz#=g8}8xQp^!iAT_jufrgpJFR_w za=R7ZAZ9Aa^J;vPqX0Rla5uiizPk5=v zuW&yeAm50D@F4aOYy_8s&_3E^BxmfC5AmeEi@}NSa_w4FRlbWV1CJa+oq@du9(@<% z4D34uzk%<`yBK5O`~9>l_xym{>^VeErnK z7~~|-Pl-MD3h)la@#qILJ4R$56|10l4<1E~;O0SMB!|Y9vN_&bZv(NIY^e3l(2xkt z&0(H}_|^8y>H9FZu{>Pf2mU3s(Fl!K9Dg8(GjxiDO5;b?y`*#sPck|3HBIN-hL^I+_X05wu$DiP* z95oZoKO=&Cq_dRgo*-h9%wJEEqQM-Nwov3H=N|k5Pbn7g(L7@K+s>1eoRLN&d+ z%I1wJyx)#zbv&jIO&%t@vzAZWgR`AHw-a^DVY3^(Rwin0^zm(ZW4Yx9pSsRY9XB+D zTC6O%-5M|pwlsRf-aec|&pK!5UpiI&dkbogBrv94+2lYDrAwS%(P)&-@z?sp2H`Xz zY}EQ^G*(!h1$&cA1(G^oKN_yg&AsK*{BO;vM6 zQ7i+R%A9tg{Q; z@`tg09h-;qTjC3k#?*!w&ijcVZIz7^_aw*Hc3m@uAt^ zVw)QKj$WK$O@uDVA-WSY2i+aILEcPx6o!Ft(m8O%5AqzP9BIDetr#+8H}){|=2ElQw33}baXXg}TQIF`)*YzfbJ+SjU`{K$VAim4m)yLX z>8tBrZnI?$siIQJX0QsiQq4AQxFxIIOin0BIDw6Zn%{@xh~@t|68gbRdz?WxIt}H2 zN!W`+I85@|{WkHp%4F0}rS0Oyrk4Mhi+o3-Tt>P083ld@_@SNrcvM8R0&DYH&fmAu z-pZ}Q!#b_zCP)3`Zgcc#-yP)Kf%>Vtv9YD$aa6N5^6%WCL=KyF(R0ZhQW`vaA3=Ac zj|G~4-L(sCzQxrJ)NXQdo{sD;*KR-A=k7x~l-Yx9V+E)(-Z)kCn`_ z6z{{9#z5E?4&<;kT+!Owf2ZyU&0tEmN;TKHGKaOi)|lFAt<5}Q&CfOeG+j&b=W;C- z+t`!VG*)Q$d!|-;YxKcgw9vE6tNWRy_4gYr*me`zfiTTAkrqD@0hvs1*I}eI;CPvi z$ugVG*QscgMzqW6*d}M-Mp?)ve=)u&OL3o^i9K=_o|LoktgOJxvKss4T)ZMH@fyc( zNGtv+tMIn0vAn6-ydAR{2O7{flAn)p5MaBzln~y-(0+wT($=7YVaE}hNA0N&6#Rdn z;Qs@T|I4{k+s`syetyGicYyAvNXi1z?Z~6nMcsVgu^Svhx88SlY5END}|Rw zYw{}oWxK&a=wuEofHo+obNDa=?IT(ka`>o)$LGV|d!-ohC#t1o9kbMWRLOEM1l#XVJ3rxoeah!_iD4NIjsbv8CXt7ROVyywd1J!OmUGb5(~h n%*wv(->0YnC9J8+$rOxT{>5yx^&G=$0K$Xc*a^m5dBy($%JS4# literal 0 HcmV?d00001 diff --git a/mvc/target/classes/springmvc.properties b/mvc/target/classes/springmvc.properties new file mode 100644 index 00000000..1171d682 --- /dev/null +++ b/mvc/target/classes/springmvc.properties @@ -0,0 +1 @@ +scanPackage=com.lemon.demo \ No newline at end of file diff --git a/mvc/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/mvc/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..728df232 --- /dev/null +++ b/mvc/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,9 @@ +com/lemon/demo/service/impl/DemoServiceImpl.class +com/lemon/mvcframework/annotations/LagouService.class +com/lemon/mvcframework/pojo/Handler.class +com/lemon/demo/controller/DemoController.class +com/lemon/mvcframework/annotations/LagouController.class +com/lemon/mvcframework/annotations/LagouRequestMapping.class +com/lemon/mvcframework/annotations/LagouAutowired.class +com/lemon/demo/service/IDemoService.class +com/lemon/mvcframework/servlet/LgDispatcherServlet.class diff --git a/mvc/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/mvc/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..50e2f792 --- /dev/null +++ b/mvc/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,9 @@ +/Users/fangpeng/IDEAProjects/springmvc/mvc/src/main/java/com/lemon/demo/service/IDemoService.java +/Users/fangpeng/IDEAProjects/springmvc/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouService.java +/Users/fangpeng/IDEAProjects/springmvc/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouController.java +/Users/fangpeng/IDEAProjects/springmvc/mvc/src/main/java/com/lemon/demo/controller/DemoController.java +/Users/fangpeng/IDEAProjects/springmvc/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouAutowired.java +/Users/fangpeng/IDEAProjects/springmvc/mvc/src/main/java/com/lemon/mvcframework/pojo/Handler.java +/Users/fangpeng/IDEAProjects/springmvc/mvc/src/main/java/com/lemon/mvcframework/annotations/LagouRequestMapping.java +/Users/fangpeng/IDEAProjects/springmvc/mvc/src/main/java/com/lemon/demo/service/impl/DemoServiceImpl.java +/Users/fangpeng/IDEAProjects/springmvc/mvc/src/main/java/com/lemon/mvcframework/servlet/LgDispatcherServlet.java diff --git a/mvc/target/tomcat/conf/logging.properties b/mvc/target/tomcat/conf/logging.properties new file mode 100644 index 00000000..76c9512b --- /dev/null +++ b/mvc/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/mvc/target/tomcat/conf/tomcat-users.xml b/mvc/target/tomcat/conf/tomcat-users.xml new file mode 100644 index 00000000..7114f5d1 --- /dev/null +++ b/mvc/target/tomcat/conf/tomcat-users.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/mvc/target/tomcat/conf/web.xml b/mvc/target/tomcat/conf/web.xml new file mode 100644 index 00000000..cc8383cb --- /dev/null +++ b/mvc/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/mvc/target/tomcat/logs/access_log.2022-02-23 b/mvc/target/tomcat/logs/access_log.2022-02-23 new file mode 100644 index 00000000..b8f80bd9 --- /dev/null +++ b/mvc/target/tomcat/logs/access_log.2022-02-23 @@ -0,0 +1,16 @@ +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:04:48 +0800] "GET /demo/query HTTP/1.1" 405 1065 http-bio-8080-exec-1 32 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:04:48 +0800] "GET /favicon.ico HTTP/1.1" 405 1065 http-bio-8080-exec-3 0 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:35:22 +0800] "GET /demo/query HTTP/1.1" 405 1065 http-bio-8080-exec-1 36 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:35:22 +0800] "GET /favicon.ico HTTP/1.1" 405 1065 http-bio-8080-exec-3 0 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:36:54 +0800] "GET /demo/query?name=lisi HTTP/1.1" 405 1065 http-bio-8080-exec-5 1 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:36:54 +0800] "GET /favicon.ico HTTP/1.1" 405 1065 http-bio-8080-exec-7 0 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:37:33 +0800] "GET /demo/query?name=lisi HTTP/1.1" 500 1550 http-bio-8080-exec-1 38 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:37:33 +0800] "GET /favicon.ico HTTP/1.1" 200 13 http-bio-8080-exec-2 1 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:41:06 +0800] "GET /demo/query?name=lisi HTTP/1.1" 500 1550 http-bio-8080-exec-1 74239 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:44:42 +0800] "GET /demo/query?name=lisi HTTP/1.1" 500 1550 http-bio-8080-exec-1 205957 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:44:42 +0800] "GET /demo/query?name=lisi HTTP/1.1" 500 1550 http-bio-8080-exec-3 18 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:45:54 +0800] "GET /demo/query?name=lisi HTTP/1.1" 500 1550 http-bio-8080-exec-1 51330 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:46:10 +0800] "GET /demo/query?name=lisi HTTP/1.1" 200 - http-bio-8080-exec-1 38 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:46:10 +0800] "GET /favicon.ico HTTP/1.1" 200 13 http-bio-8080-exec-3 1 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:46:41 +0800] "GET /demo/query?name=lisi HTTP/1.1" 200 - http-bio-8080-exec-1 46 +0:0:0:0:0:0:0:1 - - [23/Feb/2022:22:46:41 +0800] "GET /favicon.ico HTTP/1.1" 200 13 http-bio-8080-exec-3 1 diff --git a/springmvc-demo/pom.xml b/springmvc-demo/pom.xml index 45120536..8466a1c8 100644 --- a/springmvc-demo/pom.xml +++ b/springmvc-demo/pom.xml @@ -7,7 +7,10 @@ com.lemon springmvc-demo 1.0-SNAPSHOT - war + + mvc + + pom UTF-8