我需要将文件从浏览器上传到服务器.我使用spring 3.2作为我的web框架.
所以我像这样配置我的应用程序.
1 - 我得到了web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>racoonsoft.chaos.settings</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>admin/library</welcome-file>
</welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud)
2 - MainConfig类
@Configuration
@Import({WebConfig.class })
public class MainConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean
public static ScheduledAnnotationBeanPostProcessor scheduledAnnotationBeanPostProcessor() {
return new ScheduledAnnotationBeanPostProcessor();
}
@Bean
public static StandardServletMultipartResolver multipartResolver() {
StandardServletMultipartResolver …
Run Code Online (Sandbox Code Playgroud) 如何将多部分配置添加到spring mvc应用程序中,该应用程序使用带有使用RequestMapping注释的方法的控制器?
背景:
我想启用csrf保护,所以在我的spring配置中添加了security:csrf标签.我有一个控制器类,其中一个方法使用RequestMapping进行注释,用于上传文件.我还遵循了多部分的警告说明,我在安全过滤器上方添加了多部分过滤器.当我在添加csrf标签后尝试上传文件时,我遇到了一个缺少getParts()方法的异常.一个快速谷歌强调这是由于使用基于servlet 2.5规范的jetty版本.我将jetty-maven-plugin升级到8.1.14.v20131031并再次尝试上传.导致:
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: No multipart config for servlet
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:68)
at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:58)
at org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:110)
Run Code Online (Sandbox Code Playgroud)
我在哪里为xml设置放置多部分配置?所有文档都说要在web.xml中的特定servlet的servlet标记中添加multipart-config.但是我的应用程序只有一个servlet.所以我添加了它,但我仍然遇到同样的问题.
<servlet>
<servlet-name>SpringDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<multipart-config>
<location>/tmp</location>
<max-file-size>20848820</max-file-size>
<max-request-size>418018841</max-request-size>
<file-size-threshold>1048576</file-size-threshold>
</multipart-config>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/servlet-context.xml
</param-value>
</init-param>
<load-on-startup>10</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)
我还更新了web.xml顶部的模式位置,指向servlet规范的3.0版本,源自http://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples /.
有帮助吗?
编辑:为Rob添加了以下riles:
web.xml中
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring/webapp.xml</param-value>
</context-param>
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>OracleDB,common</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher
</listener-class>
</listener>
<servlet> …
Run Code Online (Sandbox Code Playgroud)