在看springMVC之前,就听说现在很多公司用SSH的并不多,但是springMVC的不少,感觉springMVC应该是一个比较好用的框架,但是具体怎么用多好用还是没有概念,通过这次简单的学习,发现的确有他的很多优势,下面以springMVC上次为例,写一个简单的springMVC实例,稍微感受一下springMVC 的好处。
首先配置web.xml文件:
- <servlet>
- <servlet-name>springMVC</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath*:/config/springAnnotation-servlet.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <filter>
- <filter-name>characterEncodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- <init-param>
- <param-name>forceEncoding</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>characterEncodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <servlet-mapping>
- <servlet-name>springMVC</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
springMVC的配置相对比较简单,和之前的配置spring区别不大。
下面配置springMVC文件:
- <!-- 注解扫描包 -->
- <context:component-scan base-package="com.tgb.web.controller.annotation.upload"/>
- <!-- 开启注解 -->
- <mvc:annotation-driven/>
- <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
- <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>
- -->
- <!-- 静态资源访问 -->
- <mvc:resources location="/img/" mapping="/img/**"/>
- <mvc:resources location="/js/" mapping="/js/**"/>
- <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/"></property>
- <property name="suffix" value=".jsp"></property>
- </bean>
- <!-- 上传拦截,如最大上传值及最小上传值 -->
- <bean id="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <!-- set the max upload size100MB -->
- <property name="maxUploadSize">
- <value>800000</value>
- </property>
- <property name="maxInMemorySize">
- <value>4096</value>
- </property>
- </bean>
- lt;/beans>
因为web里设置springMVC拦截的是所有的网址,所以,这里需要对图片和js等静态文件进行配置,不然无法识别。
同时,配置需要上传文件的最大值和最小值,当然,在程序里也可以用代码配置,但是,不提倡。
这里配置注解,个人认为springMVC的注解很好用,简单易用。
配置好之后,我们开始写代码:
- @RequestMapping("/upload1")
- public String upload2(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException{
- //创建一个通用的多部分解析器.
- CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
- //判断 request 是否有文件上传,即多部分请求...
- if(multipartResolver.isMultipart(request))
- {
- //判断 request 是否有文件上传,即多部分请求...
- MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)(request);
- Iterator<String> iter = multiRequest.getFileNames();
- while(iter.hasNext()){
- MultipartFile file = multiRequest.getFile(iter.next());
- String fileName = "demoUpload" +file.getOriginalFilename();
- String path ="F:/" +fileName;
- File localFile = new File(path);
- file.transferTo(localFile);
- }
- }
- return "/success";
- }
最后是前台界面:
- <h>上传文件</h>
- <form name="userForm" action="/springMVC1/file/upload1" method="post" enctype="multipart/form-data">
- 选择文件:<input type="file" name="file">
- <input type="submit" value="上传">
- </form>
至此,一个简单上传文件就完成了,