龙空技术网

springMVC源码深度解析-初始化(适合初学者)

爱音乐的程序员小新人 201

前言:

当前你们对“jsp变量赋值给js”大致比较关怀,同学们都想要剖析一些“jsp变量赋值给js”的相关资讯。那么小编也在网上搜集了一些关于“jsp变量赋值给js””的相关知识,希望朋友们能喜欢,朋友们快快来学习一下吧!

1. 什么是MVCmvc是一种设计模式,帮助使用者更好搭建和编写项目,在b/s,c/s架构中经常使用,mvc表示全称为Model-View-controller,即模型-视图-控制三层结构,三层每层负责不同的功能,其中,model层用于封装简单的javaBean和复杂的javaBean,包括业务层,甚至dao层,只要是个javabean都属于model(注意不要狭义的以为,java仅仅只是pojo对象,他也可以是一个包含复杂逻辑的service),pojo对象的代码都是包含的,视图层主要是页面,用于返回给用户的,直观的一种可视化的界面,比如jsp,html2.什么是springMVCSpringMVC是整个spring中的一个很小的组成,准确的说他是spring WEB这个模块的下一个子模块,springMVC本质上是一个servlet,因为他间接的继承了httpServlet至于什么是servlet,本文就不做过多的解释了,可以参照我之前的博客链接如下:servlet教程3.DispatcherServlet的继承关系图

DispatcherServlet的继承关系图,能清晰的了解整个层次。4.DispatcherServlet初始化(此图很重要,下面有用到)当Web项目启动时,做初始化工作,所以我们大部分是配置在Web.xml里面,这样项目一启动,就会执行相关的初始化工作,下面是Web.xml代码

<!-- 前端控制器 --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <!-- 此处不配置 默认找 /WEB-INF/[servlet-name]-servlet.xml --> <param-value>classpath:Springmvc.xml</param-value> </init-param --> <!--启动的优先级 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <!-- 1:*.do *.action 拦截以.do结尾的请求 (不拦截 jsp png jpg .js .css) 2:/ 拦截所有请求 (不拦截.jsp) 建议使用此种 方式 (拦截 .js.css .png) (放行静态资源) 3:/* 拦截所有请求(包括.jsp) 此种方式 不建议使用 --> <url-pattern>/</url-pattern> </servlet-mapping>123456789101112131415161718
既然DispatcherServlet是一个servlet,那么就一定会有执行init,service等方法, DispatcherServlet继承了FrameworkServlet,FrameworkServlet继承了HttpServletBean,HttpServletBean继承了HttpServlet 类,而HttpServletBean类有一个入口点就是重写了init方法,如图所示:

init方法里有涉及到了BeanWrapper,PropertyValues,ResourceLoader。我这里大概介绍一下

1.PropertyValues:获取Web.xml里面的servlet的init-param(web.xml)

2.BeanWrapper:封装了bean的行为,提供了设置和获取属性值,它有对应的BeanWrapperImpl

3.ResourceLoader:接口仅有一个getResource(String location)的方法,可以根据一个资源地址加载文件资源。classpath:这种方式指定SpringMVC框架bean配置文件的来源

4.1 PropertyValues

**

下面是PropertyValues源码讲解

public ServletConfigPropertyValues(ServletConfig config, Set<String> requiredProperties) throws ServletException { Set<String> missingProps = (requiredProperties != null && !requiredProperties.isEmpty()) ? new HashSet<String>(requiredProperties) : null; //获取当前Servlet在web.xml中配置的名字,返回一个枚举对象 Enumeration<String> en = config.getInitParameterNames(); //遍历 while (en.hasMoreElements()) { //获取name,也就是我上图web.xml中的param-name里的值:contextConfigLocation String property = en.nextElement(); //根据name获取值,也就是我上图web.xml中的param-value里的值:classpath:Springmvc.xml Object value = config.getInitParameter(property); addPropertyValue(new PropertyValue(property, value)); if (missingProps != null) { missingProps.remove(property); } } // Fail if we are still missing properties. if (missingProps != null && missingProps.size() > 0) { throw new ServletException( "Initialization from ServletConfig for servlet '" + config.getServletName() + "' failed; the following required properties were missing: " + StringUtils.collectionToDelimitedString(missingProps, ", ")); } } }

标签: #jsp变量赋值给js