在Spring-MVC中访问应用程序属性


问题内容

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中访问它们?

我不知道我要感谢你多少。


问题答案:

有几种不同的方法可以做到这一点。我执行以下操作。在应用环境中:

<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。如果您有任何疑问,请告诉我。