Как получить статус после использования HttpServletResponse.setStatus - PullRequest
2 голосов
/ 13 сентября 2011

У меня есть Http Upload Servlet (http-post), и пользователь может загрузить XML-файл вместе с некоторыми полями формы. Я поставил некоторые проверки, чтобы проверить, был ли неправильный запрос (например, нулевое значение). Поэтому для этого я использовал следующий фрагмент кода.

String myID = request.getParameter("ID");
if (myID .equalsIgnoreCase("")|| myID ==null)
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
else
myBean.setMyId(myID );

Теперь, когда я установил response.setStatus, я хотел посмотреть, как будет выглядеть response.getStatus, но я не нашел ни одного метода в классе HttpServletResponse (мой ответ - HttpServletResponse), который мог бы показать мне статус. Мне нужно было выводить статус в виде поля «Ответ сервера» в качестве ответа на загрузку. Пожалуйста, помогите мне с предложениями.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2011

Если под «выводить статус в виде поля» вы подразумеваете отображение кода состояния в HTML, типичным способом сделать это в веб-приложении является использование в вашей логике обработки запросов (контроллер) для хранения кода состояния где-то (модель) так что его можно извлечь и показать в любом механизме, создающем HTML (представление), отсюда и шаблон MVC. Не рассматривайте HttpServletResponse как место для хранения данных, необходимых для визуализации представления. Это не что иное, как ваш канал обратно к пользователю. Данные, необходимые для визуализации представления, должны идти куда-то еще, например, в атрибуте запроса , может быть.

0 голосов
/ 13 сентября 2011

API сервлетов не предоставляют способа сделать это напрямую, но есть способы, которыми вы могли бы сделать это.

  • Чистым способом было бы создать Filter дляоберните настоящий HttpServletResponse объект классом-оберткой, который позволит вам получить status.

  • Хакерский / непереносимый способ - это посмотреть на фактический класс реализации дляHttpServletResponse и посмотрите, есть ли дополнительный публичный метод.(Или даже непубличный метод или поле, к которому вы могли бы обратиться рефлексивно ... хотя это было бы действительно плохой идеей, ИМО)

...