Как получить заголовки запроса, удаленный адрес и другую информацию, относящуюся к HttpServletRequest? - PullRequest
3 голосов
/ 20 декабря 2011

У меня есть веб-проект JSF 2.0, на моем веб-сайте есть форма, и он должен делать:

  1. Получить параметры формы и сохранить их в бобе (Готово)

  2. Получить эту информацию из сервлета:

    • Удаленный адрес:
    • Удаленный хост:
    • Язык:
    • Тип содержимого:
    • Граница:
    • Длина содержимого:
    • Кодировка символов:

  3. Вставка данных Bean и Servlet в таблицу базы данных (шаг ожидания 2)

Я не знаю много о сервлетах в JSF, мне не нужно, нужно ли мне их создавать или нет. У меня есть только код этого, но в JSP:

    String informe="";
    Enumeration a = request.getHeaderNames();
    while(a.hasMoreElements() ){
        String h = a.nextElement().toString();
        informe += h+": "+request.getHeader(h)+"\n";
    }
    a = request.getAttributeNames();
    while(a.hasMoreElements() ){
        String h = a.nextElement().toString();
        informe += h+": "+request.getHeader(h)+"\n";
    }
    informe += "Remote Address: "+request.getRemoteAddr()+"\n";
    informe += "Remote Host: "+request.getRemoteHost()+"\n";
    informe += "Locale: "+request.getLocale()+"\n";
    informe += "Content Type: "+request.getContentType()+"\n";
    informe += "Content Length: "+request.getContentLength()+"\n";
            .....
            ..

Я не знаю, как мне получить информацию о запросе в JSF и какие шаги мне нужно сделать. Я прочитал много страниц, но думаю, что мне не нужно все, что они делают.

1 Ответ

4 голосов
/ 20 декабря 2011

Объект HttpServletRequest в формате JSF доступен по ExternalContext#getRequest().

ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
// ...

Кстати, ExternalContext также предлагает несколько прямых способов получения нужной информации. Проверьте методы, начинающиеся с getRequestXxx(), такие как getRequestHeaderMap(), getRequestContentType() и т. Д. В javadoc .

Вам не нужен другой сервлет для этого. JSF уже имеет FacesServlet в качестве единственного контроллера запроса / ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...