springmvc配置文件的校验配置及文件上传的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <!-- 因为采用了注解配置,要启用注解配置 -->
    <mvc:annotation-driven />
    <!-- 把程序中的所有控制器类扫描SpringMVC的框架中,也就是实体控制器对象-->
    <context:component-scan base-package="com.etc.controller"/>

    <!-- 继承类的方式实现控制器类,1.添加参数分解器类    2.实例化控制器,并关联参数分解器 
    <bean id="parameterMethodNameResolver" 
        class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
       <property name="paramName" value="action"/>
    </bean>
    <bean name="/grade" class="com.etc.controller.GradeController">
      <property name="methodNameResolver">
        <ref bean="parameterMethodNameResolver"/>
      </property>
    </bean>
    -->
    
    <!-- 这个配置是配实现接口的方式实现的控制器 class表示类,name:表示访问这个类的URL
    <bean name="/teacher/list" class="com.etc.controller.TeacherController"></bean>-->
    <!-- 配置校验器 -->
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
       <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
       <property name="validationMessageSource" ref="hierarchicalMessageSource"></property>
    </bean>
    <!-- 配置验证消息 -->
    <bean id="hierarchicalMessageSource" 
      class="org.springframework.context.support.ReloadableResourceBundleMessageSource"></bean>
    
    <!-- 配置静态资源不拦截过滤 -->
    
    <!--<mvc:default-servlet-handler/> -->
    
    <mvc:resources location="/images/" mapping="/images/**"/>
    <mvc:resources location="/js/" mapping="/js/**"/>
    <mvc:resources location="/css/" mapping="/css/**"/>
    
    <!-- 文件上传的配置 -->
    <bean id="multipartResolver"
     class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
       <!-- 上传的文件的大小单位是字节数  1024byte->1KB  1024KB->1MB 1024MB->1GB  
          4194304=4MB  如果同时传多个文件,要求多个文件和的大小不能超过这个这个值    
       -->
       <property name="maxUploadSize" value="4194304"/>
       <!-- 缓冲区大小 -->
       <property name="maxInMemorySize" value="4096"/>
       <!-- 设置编码格式 -->
       <property name="defaultEncoding" value="utf-8"/>
    </bean>
    
    
    <!-- 视图分解器的配置,前缀与后缀用于拼接控制器类中的方法返回的视图名称。最终得到视图的具体路径.. -->
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀:/表示项目的根据目录 -->
        <property name="prefix" value="/"/>
        <!-- 后缀,控制器中只需要返回视图的名称,则框架会根据视图名称加上前缀与后缀,得到最终视图路径 -->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

对于Spring MVC来说,文件上传和下载是常见的功能之一。下面是关于如何实现文件上传和下载的基本步骤: 1. 文件上传: - 在Spring MVC的配置文件中,添加`CommonsMultipartResolver`来解析文件上传请求。 - 创建一个表单页面,使用`enctype="multipart/form-data"`属性,确保可以上传文件。 - 在Controller中创建一个处理文件上传请求的方法,使用`@RequestParam("file") MultipartFile file`注解来接收文件。 - 在方法内部,可以通过`file.getInputStream()`来获取文件的输入流,进而实现上传操作。 2. 文件下载: - 在Controller中创建一个处理文件下载请求的方法。 - 在方法内部,使用`HttpServletResponse`对象设置响应头信息,包括`Content-Disposition`和`Content-Type`。 - 通过`response.getOutputStream()`获取输出流,并将文件的内容写入输出流。 需要注意的是,为了确保文件上传和下载的安全性,可以进行一些额外的处理,例如限制文件类型、大小等。 以下是一个示例代码,用于演示文件上传和下载: ```java @Controller public class FileController { @Autowired private ServletContext servletContext; @RequestMapping(value = "/upload", method = RequestMethod.POST) public String upload(@RequestParam("file") MultipartFile file) { try { String fileName = file.getOriginalFilename(); String filePath = servletContext.getRealPath("/uploads/") + fileName; file.transferTo(new File(filePath)); return "redirect:/success"; } catch (Exception e) { e.printStackTrace(); return "redirect:/error"; } } @RequestMapping(value = "/download", method = RequestMethod.GET) public void download(HttpServletResponse response) { try { String fileName = "example.txt"; String filePath = servletContext.getRealPath("/downloads/") + fileName; File file = new File(filePath); InputStream inputStream = new FileInputStream(file); response.setHeader("Content-Disposition", "attachment; filename=" + fileName); response.setContentType("application/octet-stream"); IOUtils.copy(inputStream, response.getOutputStream()); response.flushBuffer(); inputStream.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码中,`servletContext.getRealPath()`方法用于获取文件的实际路径,`IOUtils.copy()`方法用于将文件内容写入输出流。 请注意,上述示例仅为演示目的,实际应用中可能需要进行更多的异常处理、文件校验等操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值