spring 笔记

1.ioc 控制反转 与di依赖注入 ioc的概念是反转获取资源方向()原来是通过setxxx来设置属性值(我找你)通过使用容器初始化构造器 调用setxxx方法注入(你找我)更加方便省事;
di是ioc的一种表现 是预前定义的方式来接受容器的资源注入
2.分为属性注入和构造器注入(其实是向有参构造器传递参数)
多个参数如何定位?1.顺序2.type 3index(从零开始) 精确定位name
3.如何 在中使用1 applicationContext ...=new ....(加载文件)
对象获取bean 可以通过id 和类.class(唯一)
bean的作用域 singleton默认 是单例加载配置文件时一创建好构造器
prototype 使用才创建..
运行流程 1.创建构造器  2.注入属性值和引用bean beanpostproccess3.init()(方法名随便)4.使用bean
5.关闭容器
4创建构造器1.全类名(反射)2.工厂(静态工厂和实例工厂)2.实现factorybean<要创建构造器的类>
6.spring实质管理程序的对象 和维护对象和对象之间的关系

集合都有想对应得配置英语单词相同
面向横切编程是在目标方法前后异常返回时要进行的操作 实现代码分离减少冗杂
@before @after afterthrowing afterreturning aroung(这个会翻盖前面的方法) @pointcup可以简化作用域类的方法的全名,建议使用;
多个横面类执行的顺序可以用order制定
配置更加灵活
7.通知:定义业务逻辑方法(做什么)和何时执行(说白了就是一个方法在什么时候执行),连接点:通知方法能够织入的点:spring 只支持方法级别,例如方法前,后,异常,环绕
切点:通知方法在那里执行(就是通知方法在哪个方法执行),织入:将通知方法织入到连接点;
8.joinPoint要导入lang的jar不然出错
9.通知有 前置通知,后置通知(有异常也执行) 返回通知(没有返回,不执行) ,异常通知(没有异常不执行),环绕通知(控制目标方法的执行),xml配置是一样的,但是返回引用类型,要写全类名.


10.整合struts
为spring创建ioc容器     
<context-param>        
<param-name>
contextConfigLocation</param-name>
        
<param-value>classpath:spring配置xml名字.xml</param-value>
    </context-param> -->
spring配置也可以直接丢到web-inf目录里就不需要配置上面的
    <!-- 启动 IOC 容器的 ServletContextListener -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
为配置struts action class 写的是sping bean id而不是全类名,因为创建工厂已经转移给spring , spring 配置action 创建对象方式:使用原型scope="prototype"
11.spring 整合hibernate 主要是sessionfactory 和aop事务
12.值函数注入必须于set属性名 跟setter和getter一样
13.byName装配 是通过属性名查找 bean id 为属性名相同,然后通过set属性名进行注入;byType beans对所有bean尝试进行注入,没有抛异常
14.  为springmvc 配置控制器 spring配置丢到web-inf里面可以不用写init-param 不过配置文件有命名规则 [servlet-name]-servlet.xml
<servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
  <param-name>contextConfidLocation</param-name>
  <param-value>classpath:springmvc.xml</param-value>
  </init-param>
15.requestMapping 匹配原则:最多为准(但必须全部匹配上)
16.@pathvariable ("id")  类型 变量名可以把url的占位符的值注入到变量名里例如URL=http://localhost:8080/xxx/ssh/nihao  ,并配置RequestMapping("ssh/{id}")就把nihao注入到变量里面 类型必须能过转换
17. 将post方法包装成delete 和put...方法  
<filter>
   <filter-name>method_conversion</filter-name>
   <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>method_conversion</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>还要在<input type="hidden" name="_method" value="方法名"> 为什么不直接发put因为 put方法不对请求体的数据进行封装成map.如果想正常使用添加
<!-- put 封装数据 -->
<filter>
    <filter-name>put</filter-name>
    <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>put</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

18.@RequestParam(value="username",required=false,defaultValue="1" ) 类型 变量名 把username的值注入到变量名.当username没有传过来就使用默认值,required=false不会报错
@cookiesValue 和@RequestHeader用法是一样的
19.modelandView map<String,Oblect> 值会放到request的域里面
20.@ModelAttribute 都会在响应方法执行之前执行 类似struts2 preparable拦截器 解决部分数据更新问题. @sessionAttribute 把map值注入到session域里面
21.redirect:/视图.jsp虽然可以重定向,但是web-inf还是不能访问
22              <mvc:resources location="/test/" mapping="/test/**"></mvc:resources> :请求这些资源时不需要经过spring的servlet拦截 交给默认servlet处理
                <mvc:default-servlet-handler/>   如果spring servlet有处理url请求,不没有处理就交给,默认servlet
        <mvc:view-controller path="/success" view-name="hello"/>:直接把path 映射hello视图上不需要经过spring servlet拦截
        <mvc:annotation-driven></mvc:annotation-driven> :使注解其作用
23. 类型转换  
        
1编写一个类实现converter    
<!--配置转换器  -->    
 2.  <bean id="timeConversion" class="org.springframework.context.support.ConversionServiceFactoryBean">
          <property name="converters" >
           <set>
            <ref bean="converter"/>
           </set>
          </property>
        </bean>
 3.  注册转换器 <mvc:annotation-driven  conversion-service="timeConversion"></mvc:annotation-driven>
跟 formatter的用法是一样的 ,不过只能以String转化其他类型
24.BindingResult result 存储着出错对象 ,如果方法参数有表示由程序员处理,不抛出异常.....?

25.ajax传递json时
   $.ajax({  
            type:"post", 必须
                url: 'testJson' ,           
                dataType: 'json',
                contentType:'application/json;charset=UTF-8',必须
                data:JSON.stringify({"id":"1","birth":"2015-1-2"}),  //提交json字符串数组,如果提交json字符串去掉[]   
                success:function(data){  
                    alert(data);  
                },  
                error:function(textStatus, errorThrown){  
                    console.log(textStatus);  
                    alert(textStatus);  
                }  
            });  
    $.post $.get()是ajax的简写没法设置contentType;
26.在整合shiro的时候redirect:/register发现没法 重定向,需要redirect:/register.jsp才可以
27.应该区分 Spring 根容器加载 和spring mvc子容器,从而避免多加载,property资源获取不到的问题
28.#{}是表达式 有#{12*1},#{T()} 表示java类型 可以调用这个类型的方法如:${T(com.yy.test.Person).toString(xxx)},#{ bean的id.属性名}
29.在带有@ControllerAdvice注解的类中,以上所述的这些方法会运用到整个应用程序所有控制器中带有@RequestMapping注解的方法上。通常用于execption异常统一处理
30.@ExceptionHandler 不能通过map来传递数据.
31.如果方法上@responsestatus和@ControllerAdvice注解的类会执行@responsestatus,如果@responsestatus修饰的是类,会执行@ControllerAdvice类中的方法(理由看29)
32.java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'user12' available as request attribute
 使用<form:from>的标签时需要request域 插入于command 值一致的键值对
33. fileupload和io文件上传要声明这个bean 并且id不能更改 <bean
            id ="multipartResolver"
            class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="#{1024*1024*10}"></property>
        <property name="defaultEncoding" value="utf-8"></property>
    </bean>

 属性名 应该于 input tyle=file的name一样  多文件上传 应该  使用@RequestParam("key上传文件key") 不然会报错不能实例化这个类

34.servlet3上传 可以没有id
<bean

            class="org.springframework.web.multipart.support.StandardServletMultipartResolver">

    </bean>
并且而在web.xml配置:
 <multipart-config>
            <max-file-size>5000000</max-file-size>
            <max-request-size>5000000</max-request-size>
            <file-size-threshold>100000</file-size-threshold>


        </multipart-config>
35.文件下载需要设置响应类型response.setContentType("text/plain");弹出下载框 response.addHeader("Content-Disposition","attachment;filename=nihao.txt");
36.国际化.1.配置获取accept-language  bean 选择第一个
 </bean>
    <bean class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver"></bean>
 2.配置加载 国际化资源 id不能改变
    <bean id="messageSource"
          class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename"
                  value="classpath:locale"></property>
    </bean>
  当然也可以配置 <bean id="localeResolver"
          class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean> 在配置 :
 <!--语言改变拦截器-->
    <mvc:interceptors>
        <bean id="localeChangeInterceptors"
              class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
            <property name="paramName" value="lang"></property>

        </bean>

    </mvc:interceptors> 可以在url lang=zh_CN等等 传递想要的语言,可以应用button改变语言,不一定要去设置浏览器的语言.
37.Spring validation验证 先 创建一个类 实现validator 判断自己写,2.然后在controller需要验证的model 调用validate方法传递model 和bindingResult 就可以了
38.redis 的默认序列化都是jdkxxxxx序列

39. 许多jsp文件 ,包含一个jsp(公共:获取访问uri,加载js)

<jsp-config>

   <jsp-property-group>

      <url-pattern>*.jsp</url-pattern>//所有jsp文件都加载common.jsp

      <include-prelude>/WEB-INF/jsp/common.jsp</include-prelude>

   </jsp-property-group>

</jsp-config>

40.rest 风格上传文件

     <filter>

<filter-name>MultipartFilter</filter-name>

<filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>

<init-param>

<param-name>multipartResolverBeanName</param-name>

<param-value>multipartResolver</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>MultipartFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 要写在 HiddenHttpMethodFilter 前面 上传文件解析器要写spring 父容器中.

41.使用@JsonView 和@JsonInclude 来控制json可以显示的内容.

42.先执行过滤器filter , 在执行拦截器intercept,然后是执行aop切面方法.切面可用获取参数和Handler对象.intercept可以获取Hander对象.

根据需求具体写重写那个

43.@GetMapping("/uu/{id:\\d+}") 可以正则,匹配就执行这个方法.否则将报错

  jar http://repo.spring.io/release/org/springframework/spring/

  源吗jar https://github.com/spring-projects/spring-framework/tags?after=v4.3.4.RELEASE
   验证jar http://hibernate.org/validator/
jstl:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值