Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Spring MVC и robots.txt 
:(
    Опции темы
m0zg
Дата 27.11.2011, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Как при такой конфигурации сделать так, чтобы robots.txt открывался?

web.xml

Код

...
<servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
</servlet-mapping>
...


spring-servlet.xml
Код

...
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="mediaTypes">
            <map>
                <entry key="xml" value="application/xml"/>
                <entry key="html" value="text/html"/>
                <entry key="json" value="application/json"/>
                <entry key="txt" value="application/txt" />
            </map>
        </property>
        <property name="viewResolvers">
            <list>
                <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
                    <property name="prefix" value="/WEB-INF/jsp/"/>
                    <property name="suffix" value=".jsp"/>
                </bean>
            </list>
        </property>
        <property name="defaultViews">
            <list>
                <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
            </list>
        </property>
</bean>

<mvc:annotation-driven/>

<mvc:resources mapping="/resources/**" location="/resources/" />
...


И куда robots.txt при такой структуре положить?
PM MAIL   Вверх
Stolzen
Дата 27.11.2011, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



Примерно так:
Код

@Controller
public class RobotsController {
    @RequestMapping(value = "/robots.txt", method = RequestMethod.GET) 
    public String robots() {
        return "robots";
    }
}


Где robots - это /WEB-INF/jsp/robots.jsp с нужными txt данными.


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
m0zg
Дата 27.11.2011, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Как ни странно:

Код

javax.servlet.ServletException: Could not resolve view with name 'robots' in servlet with name 'spring'
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1029)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)


robots.jsp в /WEB-INF/jsp/ с текстовыми данными. В контроллере:

Код

@RequestMapping(value = "/robots.txt", method = RequestMethod.GET) 
    public String robots() {
        return "robots";
    }


Странно.
PM MAIL   Вверх
m0zg
Дата 27.11.2011, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Вот так возвращает правильно:

Код

@RequestMapping(value = "/robots", method = RequestMethod.GET) 
public String robots() {
        return "robots";
}


но это не то, что нужно, как вы понимаете smile
PM MAIL   Вверх
Stolzen
Дата 27.11.2011, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



Что-то мне подсказывает, что дело в ContentNegotiatingViewResolver 

Цитата
Implementation of ViewResolver that resolves a view based on the request file name or Accept header. 


Вот немного информации об нем - http://static.springsource.org/spring/docs...representations

Цитата
In the above configuration, if a request is made with an .html extension, the view resolver looks for a view that matches the text/html media type. The InternalResourceViewResolver provides the matching view for text/html. If the request is made with the file extension .atom, the view resolver looks for a view that matches the application/atom+xml media type. This view is provided by the BeanNameViewResolver that maps to the SampleContentAtomView if the view name returned is content. If the request is made with the file extension .json, the MappingJacksonJsonView instance from the DefaultViews list will be selected regardless of the view name. Alternatively, client requests can be made without a file extension but with the Accept header set to the preferred media-type, and the same resolution of request to views would occur.


Значит нужно каким-то образом добавить в него резолвер для txt.

При таком маппинге
Цитата(m0zg @  27.11.2011,  21:47 Найти цитируемый пост)
@RequestMapping(value = "/robots", method = RequestMethod.GET) 
public String robots() {
        return "robots";
}


По запросу /robots.txt что-нибудь возвращается? Или 404?



--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
m0zg
Дата 27.11.2011, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Цитата(Stolzen @  27.11.2011,  23:46 Найти цитируемый пост)
По запросу /robots.txt что-нибудь возвращается? Или 404?



ошибка 500, стэк-трэйс я выше писал
PM MAIL   Вверх
m0zg
Дата 28.11.2011, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Если конфиг поменять на:

Код

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>


то всё работает правильно. Как бы чего не сломалось. Надо подумать над резолвером для txt-файлов
PM MAIL   Вверх
jk1
Дата 29.11.2011, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 5
Всего: 75



А зачем статику резолвить вообще? Отдавайте как есть
Код

 <mvc:resources mapping="/robots.txt" location="/robots.txt" />



--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
m0zg
Дата 30.11.2011, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Цитата(jk1 @  29.11.2011,  17:00 Найти цитируемый пост)
А зачем статику резолвить вообще? Отдавайте как есть
Разметка XML
1:
 <mvc:resources mapping="/robots.txt" location="/robots.txt" />





мать перемать  smile 


Спасибо smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.