Spring配置文件(spring-base.xml或spring-mvc.xml)


1.启用springMVC的注解配置和引入DispatcherServlet

2    <mvc:annotation-driven/>    <!-- 启用控制层的注解配置模式 ,写入这一个,idea会自动弹出几个sping-mvc的命名空间供我们选择,我们选择以mvc结尾的命名空间即可--><!--启用注解配置,启用不启用都可以-->
3    <mvc:default-servlet-handler/>  <!-- 使用之前配置的DispatcherServlet类处理请求 -->
4  

 2.引入ModelAndView类,并配置扫描前缀和扫描后缀

1 <!--定义此类即引入了Spring中的ModelAndView类, 定义一个页面资源解析的处理类,该类的主要功能是匹配路径的前缀与后缀 -->
2     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
3        <property name="prefix" value="/WEB-INF/pages" />
4         <property name="suffix" value=".jsp" />
5     </bean>

 3.引入aop相关的命名空间

1 xmlns:aop="http://www.springframework.org/schema/aop"
2 http://www.springframework.org/schema/aop
3 https://www.springframework.org/schema/aop/spring-aop.xsd">

4.为保存在WEB-INF下所有的静态资源设置映射访问路径

1 <!-- 为保存在WEB-INF下所有的静态资源设置映射访问路径 -->
2     <mvc:resources mapping="/mvcjs/**" location="/WEB-INF/js/"/>
3     <mvc:resources mapping="/mvccss/**" location="/WEB-INF/css/"/>
4     <mvc:resources mapping="/mvcimages/**" location="/WEB-INF/images/"/>
<!--举个例子,如果/WEB-INF/js/photo.jpg,需要引用此图片的时候直接用<img src="mvcjs/photo.jpg"即可>-->

5.加载资源文件的配置

1 假设文件目录为src/main/resources/com.ytinf.message包下有两个资源文件message.properties和pages.properties,配置方法如下
<!-- 进行所有要加载的“*.properties”配置文件的路径定义,直接通过CLASSPATH加载 --> 2 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 3 <property name="basenames"> 4 <array> <!-- basename是只包含有包名称和文件名称的组成,不包含有后缀 --> 5 <value>com.ytinf.message.message</value> 6 <value>com.ytinf.message.pages</value> 7 </array> 8 </property> 9 </bean>

6.进行上传文件的设置

 1 <!-- 进行上传文件组件的相关配置,配置的是上传文件的解析处理类 -->
 2     <bean id="multipartResolver"
 3           class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 4         <!-- 设置整体上传文件的最大数据量,本次允许上传最大文件量为5M,下面的单位都是字节(b) ,所以需要将其他单位的都转换成字节-->
 5         <property name="maxUploadSize" value="5242880"/>
 6         <!-- 设置单个上传文件的最大数据量,本次允许上传最大文件量为2M -->
 7         <property name="maxUploadSizePerFile" value="253952"/>
 8         <!-- 允许占用的最大内存量,本次设置为10M -->
 9         <property name="maxInMemorySize" value="10485760"/>
10         <!-- 设置上传文件的临时保存目录,该目录的内容在每一次请求之后都需要清空 -->
11         <property name="uploadTempDir" value="/tmp"/>
12     </bean>
注1:对上传组件设置完成之后应该在设置一个上传失败跳转页面,举个例子设置上传文件最大5M,结果用户传了一个6M的文件,这时就需要跳转,下面是设置错误页

  <!-- 定义一个全局的跳转路径配置 -->
  <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings"> <!-- 进行异常映射的处理配置 -->
      <props>
        <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">
          plugins/errors<!--再加上前面配置的WEB-INF/pages/前缀和.jsp后缀,这时会自动匹配到WEB-INF/pages/plugins/errors.jsp路径上-->    

        </prop>
      </props>
    </property>
  </bean>

  注2:设置完成异常跳转路径之后,需要设置一个文件保存目录,直接继承老师上课讲的那个类,然后调用其中的upload方法即可上传。如果页面需要展示此图片,则在action方法中就需要将文件名称传递过去,然后在jsp页面中接收(img src=上传目录/文件名称)。

  注3:设置完成上传目录之后,这时如果上传文件过大会直接搞垮掉,此时的上传控制实际上并没有生效,这时Tomcat自身的设置问题,如果要想解决这个限制就必须修改tomcat的server.xml配置文件,在<Connector>标签中加入maxSwallowSize="-1"即可。

强调:如果某个页面需要上传,则需要提供有输入表单,则此表单一定要封装 enctype="multipart/form-data"

7.(1)进行aop切入点的配置及相关处理类的配置*(这种配置方式有点麻烦)

1 <context:component-scan base-package="com.ytinf"/>
2     <bean id="serviceAdvice" class="com.ytinf.aop.ServiceAdvice"/>  <!-- 辅助处理类,用户自定义的类,这个类中有五个方法分别为beforeHandle(),afterHandle(),returnHandle(),throwHandle()和aroundHandle()-->

  <aop:config> <!-- 进行AOP的具体配置 前置通知,后置通知,返回通知,异常通知,环绕通知-->
    <aop:pointcut id="commonPointcut" expression="execution(public * com.ytinf.service..*.*(..))"/>
    <aop:aspect ref="serviceAdvice"> <!-- 进行代码的织入处理 -->
    <aop:before method="beforeHandle" arg-names="vo" pointcut="execution(public * com.ytinf.service..*.*(..)) and args(vo)"/>
    <aop:after method="afterHandle" pointcut-ref="commonPointcut"/>
    <aop:after-returning method="returnHandle" pointcut-ref="commonPointcut" returning="resval" arg-names="resval"/>
    <aop:after-throwing method="throwHandle" pointcut-ref="commonPointcut" throwing="e" arg-names="e"/>

    <aop:around method="aroundHandle" pointcut-ref="commonPointcut"/>
    </aop:aspect>
  </aop:config>

8.(2)基于Annotation实现AOP配置,要想使用Annotation配置,首先需要启用注解支持(然后在ServiceAdvice类上面用@Aspect注解,在前置方法上用@Before(value="AspectJ表达式",argNames="参数名称")注解,在后置上用@After注解,@AfterThrowing(value="AspectJ表达式",throwing="e",argNames="e),@AfterReturning(value="AspectJ表达式",returning="res",argNames="res"),@Around(value="AspectJ表达式"))

<!-- 进行扫描包的设置,如果要设置多个包,则可以使用“,”拆分 -->
    <context:component-scan base-package="com.ytinf"/>
    <aop:aspectj-autoproxy/>    <!-- 启用Annotation注解支持 -->

9.配置扫描包时,千万不能重复扫描(配置扫描包一共三种,在spring-mvc.xml文件中只配置控制层的扫描包,spring-base.xml文件中只配置业务层和数据层的扫描包)

1 <context:component-scan base-package="com.ytinf.action"/><!--设置控制层的扫描包-->

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM