1.spring MVC环境搭建
1.jar包引入
spring*.jar、commons-logging*.jar、commons-connections*.jar、mybatis*.jar、mybatis-spring*.jar
2.web.xml配置
1、spring控制器
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2、spring监听
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
3、Spring配置文件
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
3.spring MVC模式的contextConfigLocation配置文件配置
2.spring注解
1.@Autowired
1.在配置文件里添加配置:<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
2.@Autowired注解可以出现在变量前,也可以出现在方法前。该注解表示该变量或方法参数的注入,不需要再配置文件里显示声明,有了这个注解,spring会自动
在配置文件里查找匹配的bean注入到该变量或方法的参数中去,如果没能找到就会抛出异常。该注解是按照参数类型来查找的,如果bean的配置文件里有多个该类型的bean时,使用该注解也会抛出异常。
2.@Qualifier(bean的id值)
为了解决@Autowired注解找到多个同类型的bean时抛异常的情况,使用@Qualifier注解指定要注入的bean。这样spring的自动注入就从按类型注入变为按id注入。
3.@Resource
1.在配置文件里添加配置<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>
2.@Resource注解是JSR-250规范定义的自动注入的注解方式,不带参数默认是按类型注入。可以bean的名称注入,方式是@Resource(name = “bean的id值”)。
4.@PostConstruct
该注解用在方法前,表示当该类被spring容器创建实例时,被该注解标注的方法就会被执行。
5.@PredDestroy
该注解用在方法前,表示当该类的实例被spring容器销毁时,被该注解标注的方法就会被执行。
6.@Respository(bean的名称)
该注解只能作用在持久层类上,作用是标记该类为bean,不需要在配置文件里配置bean。且可以将该类抛出的数据访问异常封装为spring数据访问异常。
注解的参数可以不带。
7.@Component(bean的名称)
该注解仅仅标注该类是个bean,无需在配置文件里配置。注解的参数可以不带。
8.@Service(bean的名称)
该注解一般作用在service层,功能和@Component相同。注解的参数可以不带。
9.@Controller(bean的名称)
该注解一般作用在控制层,功能和@Component相同。注解的参数可以不带。
10.@Scope(参数)
该注解用于标注该bean的作用域,参数可以是singleton表示spring容器中该类的实例是单例;参数prototype表示spring容器在创建该类的实例时每一次都创建一个
新的实例;参数request表示spring创建的实例在一次请求中有效;参数session表示在一个用户会话中有效;参数globalsession表示在全局所有会话中有效。
11.@RequestMapping
有多个参数value、method、headers、params。value参数的值表示url路径,method表示表单数据提交方式,headers一般在method是post方式时使用,params表示url路径中
必须或不能出现的参数。该注解可以出现在类体外面,也可以出现在方法外面。出现在类体外,表示访问该类的所有url中都必须带有该注解中value值;出现在方法外面,表示访问该方法的所有url中都必须带有注解中的value值。如果类外使用的注解中value的值中有“.do”或者“.html”,则方法外的注解不能设value值,可以使用param设置来调用到指定方法。
12.@ResponseBody
使用该注解需要在dispatcher.xml配置文件里配置<mvc:annotation-driven/>。该配置项告诉spring使用AnnotationMethodHandlerAdapter来处理@ResponseBody。
AnnotationMethodHandlerAdapter根据request haader的Accept的值和HttpMessageConverter的mediaType匹配,将Accept的第一个值写进response的content-type中。这个标签会将
返回的对象转成相应的格式,放入response的body中。
13.@RequestBody
另:使用<context:annotation-config/> 简化配置<context:annotationconfig/> 将隐式地向 Spring 容器注册AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 以及equiredAnnotationBeanPostProcessor 这 4 个 BeanPostProcessor。
dispatcher.xml配置:
context:component-scan该标签告诉spring自动扫描base-package下的java文件将@Component、@Controller、@Service等注册为bean;
14.@InitBinder
该注解用户处理action收到的请求字符串,可以对请求的字符串格式的日期及数字做转换处理,可以按自定义要求转成Date等类型
15.@Scheduled(cron="")
用在bean的方法前,表示该方法是个定时任务。
cron参数规则:秒 分 时 天 月 星期,
“秒”的值可以是0到59,或者a-b/n表示a到b范围(0<=a<b<60)内每隔n秒,或者*
“分”的值与“秒”类似,范围是0-59
“时”的值与“秒”类似,范围是0-23
“天”的值与“秒”类似,范围是1-31
“月”的值与“秒”类似,范围是1-12
“星期”的值是mon、tue、wed、thu、fri、sat、sun
3.spring依赖注入
listener、filter、servlet都不归spring管理,不能在里面使用spring注解,spring注入,被注入的对象必须注册为bean,否则注入失败。
4.什么是spring上下文?
spring上下文即spring容器,是spring可以管理的所有资源,包括控制层,服务层,持久层,事务等的bean。spring的上下文有父子上下文之分,父上下文一般包括服务层、持久层、事务的bean,父上下文的配置文件一般是由spring监听器加载;
spring的子上下文一般指spring的Action,子上下文是由spring的DispatcherServlet加载。一般来说spring的mvc有严格的层级关系,这样易于维护和拓展,父上下文是不允许访问子上下文资源的;
5.spring AOP
AOP即Aspect Oriented Programming,意思是面向方面编程;
1.jar包引入
spring*.jar、commons-logging*.jar、commons-connections*.jar、mybatis*.jar、mybatis-spring*.jar
2.web.xml配置
1、spring控制器
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2、spring监听
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
3、Spring配置文件
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
3.spring MVC模式的contextConfigLocation配置文件配置
2.spring注解
1.@Autowired
1.在配置文件里添加配置:<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
2.@Autowired注解可以出现在变量前,也可以出现在方法前。该注解表示该变量或方法参数的注入,不需要再配置文件里显示声明,有了这个注解,spring会自动
在配置文件里查找匹配的bean注入到该变量或方法的参数中去,如果没能找到就会抛出异常。该注解是按照参数类型来查找的,如果bean的配置文件里有多个该类型的bean时,使用该注解也会抛出异常。
2.@Qualifier(bean的id值)
为了解决@Autowired注解找到多个同类型的bean时抛异常的情况,使用@Qualifier注解指定要注入的bean。这样spring的自动注入就从按类型注入变为按id注入。
3.@Resource
1.在配置文件里添加配置<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>
2.@Resource注解是JSR-250规范定义的自动注入的注解方式,不带参数默认是按类型注入。可以bean的名称注入,方式是@Resource(name = “bean的id值”)。
4.@PostConstruct
该注解用在方法前,表示当该类被spring容器创建实例时,被该注解标注的方法就会被执行。
5.@PredDestroy
该注解用在方法前,表示当该类的实例被spring容器销毁时,被该注解标注的方法就会被执行。
6.@Respository(bean的名称)
该注解只能作用在持久层类上,作用是标记该类为bean,不需要在配置文件里配置bean。且可以将该类抛出的数据访问异常封装为spring数据访问异常。
注解的参数可以不带。
7.@Component(bean的名称)
该注解仅仅标注该类是个bean,无需在配置文件里配置。注解的参数可以不带。
8.@Service(bean的名称)
该注解一般作用在service层,功能和@Component相同。注解的参数可以不带。
9.@Controller(bean的名称)
该注解一般作用在控制层,功能和@Component相同。注解的参数可以不带。
10.@Scope(参数)
该注解用于标注该bean的作用域,参数可以是singleton表示spring容器中该类的实例是单例;参数prototype表示spring容器在创建该类的实例时每一次都创建一个
新的实例;参数request表示spring创建的实例在一次请求中有效;参数session表示在一个用户会话中有效;参数globalsession表示在全局所有会话中有效。
11.@RequestMapping
有多个参数value、method、headers、params。value参数的值表示url路径,method表示表单数据提交方式,headers一般在method是post方式时使用,params表示url路径中
必须或不能出现的参数。该注解可以出现在类体外面,也可以出现在方法外面。出现在类体外,表示访问该类的所有url中都必须带有该注解中value值;出现在方法外面,表示访问该方法的所有url中都必须带有注解中的value值。如果类外使用的注解中value的值中有“.do”或者“.html”,则方法外的注解不能设value值,可以使用param设置来调用到指定方法。
12.@ResponseBody
使用该注解需要在dispatcher.xml配置文件里配置<mvc:annotation-driven/>。该配置项告诉spring使用AnnotationMethodHandlerAdapter来处理@ResponseBody。
AnnotationMethodHandlerAdapter根据request haader的Accept的值和HttpMessageConverter的mediaType匹配,将Accept的第一个值写进response的content-type中。这个标签会将
返回的对象转成相应的格式,放入response的body中。
13.@RequestBody
另:使用<context:annotation-config/> 简化配置<context:annotationconfig/> 将隐式地向 Spring 容器注册AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 以及equiredAnnotationBeanPostProcessor 这 4 个 BeanPostProcessor。
dispatcher.xml配置:
context:component-scan该标签告诉spring自动扫描base-package下的java文件将@Component、@Controller、@Service等注册为bean;
14.@InitBinder
该注解用户处理action收到的请求字符串,可以对请求的字符串格式的日期及数字做转换处理,可以按自定义要求转成Date等类型
15.@Scheduled(cron="")
用在bean的方法前,表示该方法是个定时任务。
cron参数规则:秒 分 时 天 月 星期,
“秒”的值可以是0到59,或者a-b/n表示a到b范围(0<=a<b<60)内每隔n秒,或者*
“分”的值与“秒”类似,范围是0-59
“时”的值与“秒”类似,范围是0-23
“天”的值与“秒”类似,范围是1-31
“月”的值与“秒”类似,范围是1-12
“星期”的值是mon、tue、wed、thu、fri、sat、sun
3.spring依赖注入
listener、filter、servlet都不归spring管理,不能在里面使用spring注解,spring注入,被注入的对象必须注册为bean,否则注入失败。
4.什么是spring上下文?
spring上下文即spring容器,是spring可以管理的所有资源,包括控制层,服务层,持久层,事务等的bean。spring的上下文有父子上下文之分,父上下文一般包括服务层、持久层、事务的bean,父上下文的配置文件一般是由spring监听器加载;
spring的子上下文一般指spring的Action,子上下文是由spring的DispatcherServlet加载。一般来说spring的mvc有严格的层级关系,这样易于维护和拓展,父上下文是不允许访问子上下文资源的;
5.spring AOP
AOP即Aspect Oriented Programming,意思是面向方面编程;