簡體   English   中英

在 Spring-MVC 中訪問應用程序屬性

[英]Accessing Application Properties in Spring-MVC

新加入 Spring-MVC。

我想在 a.properties 文件中存儲兩個屬性(uploadFolder=..,downloadFolder=..)並在 HomeController class(由 MVC 模板自動創建)中訪問它。

你能指導我如何..

1) 用上面的內容創建一個 app.properties 文件並將其放在 /src/main/resources 下。 這是正確的還是應該是 /webapp/resources 下的 go?

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 中,您可以使用以下方式注釋您的字段/方法:

@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) 更好的方法是使用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>

並在您的 controller 中簡單地注入參考。

這里你的 controller 看起來像 xml:

<bean id="myController" class="my.project.package.controller.MyController">
 ...
 <property name="foldersConfig" ref="foldersConfig" />
</bean>

controller class,相關部分:

public class MyController extends ... {

 private Properties foldersConfig;

 public void setFoldersConfig(Properties config) {
   this.foldersConfig = config;
 }
}

4) 如果將屬性放在視圖中,您可以訪問 - Model,但這不是好的解決方案。 在 controller(路徑)中獲取您需要的內容並將其放入結果中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM