当先锋百科网

首页 1 2 3 4 5 6 7

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);