Я загружаю документы на сервер с помощью сервлета. После успешной загрузки мне нужно показать дополнительную информацию пользователю, например, какой документ загружен с каким идентификатором. Для этого я помещаю ID и имя файла в modelMap, пытаясь отправить его на страницу JSP.Пропустить модель от сервлета до страницы JSP
Для этого я использую этот код: -
ModelMap model = new ModelMap();
for(FileItem item : files) {
model.put(id, fileName);
}
req.setAttribute("message", model);
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/success.do");
dispatcher.forward(req, resp);
На странице JSP
<%
if(request.getAttribute("message")!=null){
String value = request.getAttribute("message").toString();
if(value!=null)
{
value = value.substring(1, value.length()-1); //remove curly brackets
String[] keyValuePairs = value.split(","); //split the string to creat key-value pairs
for(String pair : keyValuePairs) //iterate over the pairs
{
String[] entry = pair.split("="); //split the pairs to get key and value
out.println("<font color='red'>"+entry[1].trim()+"</font> indexed with id <font color='red'>"+entry[0].trim()+"</font><br/>");
}
}
System.out.println(request.getAttribute("message"));
}
%>
Моя проблема в этой сцене все вещи работают, кроме одного. Когда я загружаю сообщение документа, пока отображается, но мой URL-адрес остается загруженным URL-адресом сервлета. Поэтому, когда пользователь нажимает на него (GET Request), сервлет генерирует исключение для загрузки файла.
Если я использую
resp.sendRedirect("../success.do");
Тогда я не могу передать параметры в нем. Итак, как я могу достичь этой задачи?
Мой сервлет загрузки файла
mySite/upload/servlet
и успех страница
mySite/success.do
Для передачи параметра вы можете сделать что-то вроде resp.sendRedirect ("../ success.do?p1=abcd&p2=xyz"); –
Предположим, что пользователь выбрал 100 загружаемых файлов. Таким образом, с именем файла и URL-адресом загруженного-идентификатора превышено ограничение на 256 символов. Поэтому мы не можем это использовать. –
Если пользователю разрешено загружать несколько файлов, другим вариантом может быть установка карты в сеансе, а затем перенаправление запроса, и оттуда мы можем получить карту, а затем удалить переменную из сеанса. –