7

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 中访问这些?

我说不出我会感谢你多少。

4

2 回答 2

21

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

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

于 2012-04-06T14:38:50.837 回答
0

1)更好的方法是使用src/main/resources

2)是的,但这messages有不同的目的

3)

从属性文件中制作 bean 的一种方法src/main/resources

<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)如果您将属性放在视图 - 模型中,您可以访问,但这不是一个好的解决方案。在控制器(路径)中获取您需要的内容并将其放入结果中。

于 2012-04-06T14:41:54.917 回答