当前位置: 首页 > news >正文

东莞道滘网站建设百度做网站联系电话

东莞道滘网站建设,百度做网站联系电话,ppt模板资源网站,网站建设要求有哪些MVC框架MVC是一种设计模式#xff08;设计模式就是日常开发中编写代码的一种好的方法和经验的总结#xff09;。模型#xff08;model#xff09;-视图#xff08;view#xff09;-控制器#xff08;controller#xff09;#xff0c;三层架构的设计模式。用于实现前端…MVC框架MVC是一种设计模式设计模式就是日常开发中编写代码的一种好的方法和经验的总结。模型model-视图view-控制器controller三层架构的设计模式。用于实现前端页面的展现与后端业务数据处理的分离。Spring MVC的主要组件前端控制器 DispatcherServletSpring的MVC框架是围绕DispatcherServlet来设计的它用来处理所有的HTTP请求和响应。此模块不需要程序员开发。作用接收请求、响应结果相当于转发器有了DispatcherServlet 就减少了其它组件之间的耦合度。处理器映射器HandlerMapping此功能不需要程序员开发。作用根据请求的URL来查找Handler处理器适配器HandlerAdapter作用进行视图的解析根据视图逻辑名解析成真正的视图view视图View需要程序员开发jsp。View是一个接口 它的实现类支持不同的视图类型jspfreemarkerpdf等等用户发送请求至前端控制器DispatcherServletDispatcherServlet收到请求后调用HandlerMapping处理器映射器请求获取Handle处理器映射器根据请求url找到具体的处理器生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServletDispatcherServlet 调用 HandlerAdapter处理器适配器HandlerAdapter 经过适配调用 具体处理器(Handler也叫后端控制器)Handler执行完成返回ModelAndViewHandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServletDispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析ViewResolver解析后返回具体ViewDispatcherServlet对View进行渲染视图即将模型数据填充至视图中DispatcherServlet响应用户。手写模拟SpringMvc源码spring mvc调用到Controller执行的原理通过加载配置文件web.xml进而加载spring-mvc.xml。根据配置文件给定的目录来扫描整个项目。扫描所有加了Controller注解的类。当扫描到加了Controller注解的类之后遍历里面所有的方法。拿到方法对象之后 解析方法上面是否加了RequestMapping注解。定义一个Map集合把RequstMapping的value 与方法对象绑定起来即MapString,Method。定义一个Map把声名该方法的类的对象绑定起来即MapString,Object。拦截到请求之后拿到请求的URI。处理请求例如执行指定方法返回字符串或跳转到相应视图。目录导入依赖 dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/version/dependency!-- 解析xml文件--dependencygroupIddom4j/groupIdartifactIddom4j/artifactIdversion1.6.1/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactIdversion3.9/version/dependency代码DispatcherServlet类public class DispatcherServlet extends HttpServlet {private ApplicationContext applicationContext;private ListMyHandle myHandleListnew ArrayList();Overridepublic void init() throws ServletException {String contextConfigLocation this.getServletConfig().getInitParameter(contextConfigLocation);System.out.println(contextConfigLocation);applicationContext new ApplicationContext(contextConfigLocation);applicationContext.refresh();initHandleMappinng(applicationContext);}Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {excuteDispatch(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}public void initHandleMappinng(ApplicationContext applicationContext){if(applicationContext.beanDefinitionConcurrentHashMap.size()0){throw new RuntimeException(Spring容器为空);}for (Map.EntryString, BeanDefinition stringBeanDefinitionEntry : applicationContext.beanDefinitionConcurrentHashMap.entrySet()) {Class clazz stringBeanDefinitionEntry.getValue().getClazz();for (Method declaredMethod : clazz.getDeclaredMethods()) {boolean annotationPresent declaredMethod.isAnnotationPresent(RequestMapping.class);if(annotationPresenttrue){String value declaredMethod.getAnnotation(RequestMapping.class).value();MyHandle myHandlenew MyHandle(value,declaredMethod,clazz);myHandleList.add(myHandle);}}}}public void excuteDispatch(HttpServletRequest request,HttpServletResponse response){MyHandle handle getHandle(request);if(handlenull){try {response.getWriter().print(404);} catch (IOException e) {e.printStackTrace();}}else {Method method handle.getMethod();Class?[] parameterTypes method.getParameterTypes();Object[] paramsnew Object[parameterTypes.length];MapString, String[] parameterMap request.getParameterMap();for (Map.EntryString, String[] stringEntry : parameterMap.entrySet()) {String key stringEntry.getKey();String value stringEntry.getValue()[0];int i GetRequestParams(method, key);if(i0)params[i]value;else {//反射获取的是arg0官方这里用的不是反射机制}}try {Object invoke method.invoke(handle.getClazz().newInstance(), params);PrintWriter writer response.getWriter();writer.print(invoke);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}public MyHandle getHandle(HttpServletRequest request){String requestURI request.getRequestURI();for (MyHandle myHandle : myHandleList) {if(myHandle.getUrl().equals(requestURI))return myHandle;}return null;}public int GetRequestParams(Method method,String name){Parameter[] parameters method.getParameters();for (int i0;iparameters.length;i) {boolean annotationPresent parameters[i].isAnnotationPresent(RequestParam.class);if(annotationPresent){String value parameters[i].getAnnotation(RequestParam.class).value();if(value.equals(name))return i;}}return -1;}}XmlPaser类public class XmlPaser {public static String getbasePackage(String xml){SAXReader saxReadernew SAXReader();InputStream inputStream XmlPaser.class.getClassLoader().getResourceAsStream(xml);try {Document document saxReader.read(inputStream);Element rootElement document.getRootElement();Element componentScan rootElement.element(component-scan);Attribute attribute componentScan.attribute(base-package);String text attribute.getText();return text;} catch (DocumentException e) {e.printStackTrace();}return ;} } web.xml?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0display-nameApplication/display-nameservletservlet-nameDispatcherServlet/servlet-nameservlet-classcom.example.demo.springmvc.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:springmvc.xml/param-value/init-paramload-on-startup1/load-on-startup/servletservlet-mappingservlet-nameDispatcherServlet/servlet-nameurl-pattern//url-pattern/servlet-mapping /web-app 代码下载地址https://download.csdn.net/download/qq_43649937/87558006
http://www.dnsts.com.cn/news/98524.html

相关文章:

  • 大气网站首页品牌建设的最高境界是什么
  • 苏州网站建设找苏州聚尚网络推荐网站开发动态
  • icp许可证个人网站wordpress如何配置伪静态
  • 重庆律师网站网站建设项目国内外分析报告
  • 山东省交通厅建设网站首页网站建设策划书的心得
  • 黑龙江省建设安全网站做宣传的网站
  • 建设海外网站个人怎样建设网站
  • 南昌网站全新开发如何卸载微wordpress
  • 兰州建网站的vue停运还能编辑视频吗
  • 一个可以看qq空间的网站打电话沟通做网站
  • 南安住房与城乡建设部网站腾讯做的电子商务网站
  • 宁波有哪家公司做网站的抖音小程序推广怎么做
  • wordpress网站空间新浪云计算 网站开发
  • 微信分销网站建设费用wordpress手机模板
  • 济南网站建设泉诺wordpress盗版插件盈利
  • 小企业网站建设口碑wordpress w3
  • 网站开发的就业方向汕头新闻头条最新消息
  • wordpress电子商务站宁波seo排名优化
  • 太原搭建网站的公司扩展名 网站
  • 贵阳花果园网站建设淘宝联盟 wordpress
  • 内江做网站多少钱装修设计费
  • 企业品牌网站建设类型wordpress 自定义页面 模版
  • 公众号官方平台广州seo顾问
  • 南通网站建设案例上海企业一网通办
  • 做鱼网站的域名小程序商城开发北京
  • 县信用平台网站建设情况网站建设ASP心得体会
  • 怎样查看一个wordpress网站插件网店代运营店铺
  • 凯里信息网站网页设计与制作课程简介
  • h5 php mysql网站开发qq企业邮箱登录
  • 网站标题是什么厦门建设管理局网站首页