Как получить свойства в файлах JSP с помощью spring mvc 3

Я очень новичок в приложении spring mvc 3 для аннотаций. У меня есть два файла свойств - WEB-INF\Resources\general.properties, WEB-INF\ресурсы\jdbc_config.properties

Теперь я хочу настроить их через spring -servlet.xml. Как я могу это достичь?

В целом. свойства,

label.username = User Name:
label.password = Password:
label.address = Address:

... и т.д. jdbc_config.properties,

app.jdbc.driverClassName=com.mysql.jdbc.Driver
app.jdbc.url=jdbc:mysql://localhost:[port_number]/
app.jdbc.username=root
app.jdbc.password=pass

--- и т.д.

Если я хочу получить label.username и app.jdbc.driverClassName на моей странице jsp, как мне их закодировать?

Я также хочу получить доступ к этим значениям свойств из моей службы. Как получить эти значения свойств с помощью соответствующих ключей на уровне метода в классе обслуживания или классе контроллера?

Ответ 1

Я предполагаю, что ваш файл spring -servlet.xml является одним из ваших файлов контекста приложения. Если этот случай добавит в него следующий bean:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>WEB-INF/resources/general</value>
            <value>WEB-INF/resources/jdbc_config</value>
        </list>
    </property>
</bean>

тогда вы можете получить значение свойства в JSP (не забудьте добавить тегlib spring в верхней части вашего JSP):

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<table>
    <tr>
        <td>User Name:</td>
        <td><spring:message code="label.username" />:</td>
    </tr>
    <tr>
        <td>Driver Class Name:</td>
        <td><spring:message code="app.jdbc.driverClassName" />:</td>
    </tr>
etc...
</table>

Ответ 2

Вам нужно различать свойства приложения (конфигурация) и сообщения локализации. Оба используют файлы свойств JAVA, но они выполняют разные задачи и обрабатываются по-разному.

Примечание. Я использую конфигурацию Spring на основе Java в приведенных ниже примерах. Конфигурация может быть легко выполнена и в XML. Просто проверьте Spring JavaDoc и справочную документацию.


Свойства приложения

Свойства приложения должны быть загружены как источники ресурсов в контексте вашего приложения. Это можно сделать с помощью @PropertySource аннотации в классе @Configuration:

@Configuration
@PropertySource("classpath:default-config.properties")
public class MyConfig  {

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

}

Затем вы можете вводить свойства, используя @Value аннотацию:

@Value("${my.config.property}")
private String myProperty;

Сообщения о локализации

Сообщения о локализации - это немного другая история. Сообщения загружаются как ресурсные пакеты, и создается специальный процесс разрешения для получения правильного сообщения о переводе для указанного locale.

В Spring эти сообщения обрабатываются MessageSource s. Вы можете определить свой собственный, например, через ReloadableResourceBundleMessageSource:

@Bean
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("/WEB-INF/messages/messages");
    return messageSource;
}

Вы можете получить доступ к этим сообщениям из beans, если вы позволите Spring вставить MessageSource:

@Autowired
private MessageSource messageSource;

public void myMethod() {
    messageSource.getMessage("my.translation.code", null, LocaleContextHolder.getLocale());
}

И вы можете переводить сообщения в своих JSP с помощью тега <spring:message>:

<spring:message code="my.translation.code" />

Ответ 3

Я закончил использование среды

Добавьте эти строки в конфигурацию

@PropertySource("classpath:/configs/env.properties")
public class WebConfig extends WebMvcConfigurerAdapter{...}

Вы можете получить свойства с контроллера с помощью автономной среды

public class BaseController {
    protected final Logger LOG = LoggerFactory.getLogger(this.getClass());

    @Autowired
    public Environment env;

    @RequestMapping("/")
    public String rootPage(ModelAndView modelAndView, HttpServletRequest request, HttpServletResponse response) {
        LOG.debug(env.getProperty("download.path"));
        return "main";
    }
}

Ответ 4

Сначала импортируйте весенний тег lib:

<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>  

Чем импортировать свойство из вашего application.properties

<spring:eval var="registration_url" expression="@environment.getProperty('service.registration.url')"/>  

Чем использовать вашу переменную

<a href="<c:out value="${registration_url}"/>" class="btn btn-primary btn-block"> test </a>