Как получить куки в сервлете (показать все) - PullRequest
0 голосов
/ 15 октября 2018
String userNmae = req.getParameter("userName");
Cookie ck = new Cookie("hello", vall);
res.addCookie(ck);

// предположим, я сохранил 5 разных имен пользователей или целых чисел в cookie.

Cookie [] cookies = req.getCookies();
            String name;
        for(Cookie cookie : cookies) {
                 name = cookie.getValue();
                req.setAttribute("vav", name);
                req.getRequestDispatcher("index.jsp").forward(req, res);
              }

// Теперь я хотел бы получить все значения и отобразить их на странице jsp.Как бы я это сделал ..

${vav}

jsp файл .. Спасибо всем заранее ..

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Простой пример демонстрации использования сеанса:

@Controller
public class UserController {

    private static final String USER_HISTORY = UserController.class.getName() + "_USER_HISTORY";

    @GetMapping("/")
    public String home() {
        return "index";
    }

    @ModelAttribute
    public User getUserModelAttribute() {
        return new User();
    }

    @GetMapping("/history")
    public String getHistoryView(HttpSession httpSession, Map<String, Object> model) {
        model.put("userHistory", getUserHistory(httpSession));
        return "index";
    }

    private List<User> getUserHistory(HttpSession httpSession) {
        // check if session exists
        Object history = httpSession.getAttribute(USER_HISTORY);
        if (history != null && history instanceof List) {
            return (List<User>) history;
        }
        return new ArrayList<>();
    }

    @PostMapping("/user")
    public String saveUser(HttpSession httpSession, @ModelAttribute User user) {
        List<User> history = getUserHistory(httpSession);
        history.add(user);
        httpSession.setAttribute(USER_HISTORY, history);
        return "redirect:/";
    }
}

и файл jsp:

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

<html>
<head></head>
<body>
    <form:form method="POST" action="/user" modelAttribute="user">
         <table>
            <tr>
                <td><form:label path="firstName">First Name</form:label></td>
                <td><form:input path="firstName"/></td>
            </tr>
            <tr>
                <td><form:label path="lastName">Last Name</form:label></td>
                <td><form:input path="lastName"/></td>
            </tr>
            <tr>
                <td><input type="submit" value="Submit"/></td>
            </tr>
        </table>
    </form:form>

    <a href="/history">See Your History</a>

    <c:if test="${not empty userHistory}">
        <c:forEach var="user" items="${userHistory}">
            ${user.firstName} ${user.lastName}
        </c:forEach>
    </c:if>
</body>
</html>
0 голосов
/ 15 октября 2018

Если вы используете spring, я полагаю, у вас есть класс контроллера для представления, на котором вы хотите отобразить информацию.Просто добавьте сохраненную информацию в данную модель, которую затем можно получить с помощью языка выражений.

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

@RequestMapping(value = "/login")
public String login(ModelMap model, HttpServletRequest request){
   // retrieve all data from cookies and save it somewhere in a List/Map
   model.addAttribute(cookieData);
   return "login";
}

Затем в цикле JSP по карте с использованием JSTL и ELи отобразите то, что вам нужно:

<c:forEach items="${cookieData}" var="cookie">
  <p>${cookieData.userName}</p>
</c:forEach>

Надеюсь, это даст вам некоторое представление.

РЕДАКТИРОВАТЬ: убедитесь, что импортировали JSTL на странице JSP, прежде чем пытаться выполнить цикл foreach.

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Я также согласен с тем, что конфиденциальные данные никогда не должны храниться в файлах cookie, поскольку они легко доступны.

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