Spring-MVC的新手。
我想在.properties文件中存储两个属性(uploadFolder = ..,downloadFolder = ..) 在HomeController类中访问它(由MVC模板自动创建)。
你能指导我怎么做..
1)使用上面的内容创建了一个app.properties文件,并将其放在/ src / main / resources下。这是正确的还是应该在/ webapp / resources下?
2)以下列方式在servlet-context.xml中放置一个bean。这是对的吗?
<beans:bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<beans:property name="basename" value="app" />
</beans:bean>
3)现在如何在Java控制器中访问它?
4)如何在JSP中访问它们?
我不知道我会多么感谢你。
答案 0 :(得分:20)
有几种不同的方法可以做到这一点。我做了以下事情。在应用程序上下文中:
<util:properties id="myProps" location="classpath:app.properties" />
确保文件顶部有以下内容,以包含“util”命名空间:
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation= "... http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"
我通常将我的属性文件放在src / main / resources中。只要他们在课堂上,你就会很好。然后,在控制器中,您可以使用以下命令注释您的字段/方法:
@Controller
public class MyController {
@Value("#{myProps['uploadFolder']}")
private String uploadFolder
@Value("#{myProps['downloadFolder']}")
private String downloadFolder
@RequestMapping("myPage")
public String loadPage(ModelMap m) {
m.addAttribute("uploadFolder", uploadFolder);
m.addAttribute("downloadFolder", downloadFolder);
return "myPage";
}
public void setUploadFolder(String uploadFolder) {
this.uploadFolder = uploadFolder;
}
public void setDownloadFolder(String downloadFolder) {
this.downloadFolder = downloadFolder;
}
}
然后,在你的JSP中:
Download folder: ${downloadFolder} <br/>
Upload folder: ${uploadFolder}
HTH。如果您有任何问题,请告诉我。
答案 1 :(得分:0)
1)更好的方法是使用src/main/resources
2)是的,但这个messages
有不同的目的
3)
从src/main/resources
中的属性文件创建bean的一种方法:
<bean id="foldersConfig" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" >
<value>/WEB-INF/classes/folders.properties</value>
</property>
</bean>
在您的控制器中只需注入参考。
这里是你的控制器的样子,xml:
<bean id="myController" class="my.project.package.controller.MyController">
...
<property name="foldersConfig" ref="foldersConfig" />
</bean>
控制器类,相关部分:
public class MyController extends ... {
private Properties foldersConfig;
public void setFoldersConfig(Properties config) {
this.foldersConfig = config;
}
}
4)如果将属性放在View - Model中,则可以访问,但这不是一个好的解决方案。在控制器(路径)中获取所需内容并将其放入结果中。