Spring 容器
启动容器
创建对象
作用域 scope 单例 多例
生命周期 inint() destory() 关闭容器 AbstractXmlApplicationContext
延迟加载 lazy
IOC 控制反转
DI注入
set注入 property name="" ref=""
构造器注入 constructor-arg index="" ref=""
自动装配(底层set实现)
autowire byName 属性名(优选)
byType 类型
注入基本类型值
<value>
集合类型注入
List Set Map Properties
引用方式注入
<util:list id="">
<value>...<value/>
<util:list />
<util:properties id=""
location="classpath:xxx.properties"/>
spring表达式
#{eb.name} #{eb.list[0]}
#{eb.score['english']} (必须单引号)
注解
组件扫描 扫描指定base-package包下类
step1. <context:component-scan
base-package="" />
step2. @Component @Service
@Repository @Controller
@PostConstruct
@PreDestory
@Scope @Lazy (使用较少)
依赖注入相关注解
@Autowired @Qualifier
支持set和构造器方式注入
1.采用set注入 @Autowired添加到set方法前面
使用 @Qualifier指出id及为byName方式注入
2.或者采用属性名前 @Autowired @Qualifier("ID")
此时set方法就不需要了
@Resource
仅支持set注入
@Resource(name="Id")
spring表达式
@Value("#{id.pro}")
@Value("#{config.pagesize}")
private String pageSize;
springmvc
基本原理:
1.五大组件
1)DispatcherServlet(前端控制器)
接受请求,依据HandlerMapping的配置
调用相应的模型来处理
2)HandlerMapping
包含了请求路径与模型的对应关系
3)Controller(处理器)
负责处理业务逻辑
4)ModelAndView
封装了处理结果
注:处理结果除了数据之外还可能有视图名
5)ViewResolver (视图解析器)
DispatcherServlet依据ViewResolver的解析,
调用真正的视图对象来生成对应的视图页面。
注:五大组件的关系
a.DispatcherServlet收到请求后
依据Handlermapping调用对应的Controller
来处理
b.Controller将处理结果封装成ModelAndView
c.DispatcherServlet依据ViewResolver调用
相应的视图对象(jsp)
编程步骤
step1 导包 spring-mvc
2 添加spring.xml
自动扫描
context:component-sacan base-package=""/>
注解扫描
<mvc:annotation-driven/>
配置视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
3 配置前端控制器(DispatcherServlet)web.xml
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
4写Controller(处理)
@Controller
public class xxx{
@RequestMapping("/xxx.do")
public String xxx(){
return xxx;
}
}
5读取请求参数
1)通过request对象读取
HttpServletRequest request作为方法参数
2)使用注解@RequestParam获取参数
将该注解添加到方法的形参前面(不常用)
3)使用javabean封装请求参数
step1 写一个javaBean(类),实现get,set方法
6向页面传值
1)使用request
将数据绑定到request,然后转发到某个jsp
注:springmvc默认使用转发
2)使用ModelAndView
将数据先封装到ModelAndView对象里面,然后将该对象
作为方法的返回值
3)使用ModelMap作为参数
ModelMap.addAttribute("adminCode",adminCode);
4)HttpSession session作为参数
session.setAttribute("adminCode",adminCode);
7重定向
1)方法返回值是String
在重定向地址前加redirect:
return "redirect:toIndex.do"
2)方法返回值是ModelAndView
RedirectView rv =
new RedirectView("toIndex.do");
return new ModelAndView(rv);