2013-03-28 7 views
0

Привет, я очень новичок в Spring. Мой проект имеет дело с spring + hibernate + jsp. Я очень беспокоиться о задаче вверенной мнеSpring + jsp session

Задача:

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

+0

FYI - хранение данных в сеансе может быть опасным. У меня были проблемы, когда мои страницы отображались неправильно, потому что бывшие разработчики полагались на данные сеанса, срок действия которых истек. – Jess

+0

Mr.Jessemon В моем случае я хочу перейти с 4-х ступенчатым процессом регистрации, например, мастером, как мы можем это сделать –

ответ

1

В JSP:

<c:set var="name" value="yourname" scope="session" /> 

Весной

ServletRequestAttributes attr = (ServletRequestAttributes) 
    RequestContextHolder.currentRequestAttributes(); 
    HttpSession session = attr.getRequest().getSession(); 
    session.getAttribute("name"); 
+1

Избегайте использования сценариев в JSP. –

+0

Mr.PSR Я попробовал ваше предложение, это работает как шарм, но только в том, как я могу передать значение value –

+0

Я попытался решить эту проблему, но кончился напрасно. В jsp: -i написал <% /////////// /// получить информацию для входа: Строка userName = "sudharsan"; ////////////// и сохранить его в сеансе: session.setAttribute ("username", userName); %> Я могу уладить значение сеанса весной mvc, но когда я передаю значение динамически как String userName = request.getParameter («name»); я могу получить только значение NULL весной mvc..pls, помогите мне зайти на этот счет –

1

если вы хотите процесс регистрации 4 шагов с помощью пружинного проекта, я хотел бы предложить вам взглянуть на Spring Web Flow. вы можете найти образцы here tutorials here и искать в stackoverflow и в Интернете. Он используется точно так, как вы хотите.

В противном случае вам необходимо добавить @SessionAttributes к контроллеру и объявить @ModelAttributes. Ниже приведен пример:

@SessionAttributes({"oneDto","secondDto", [...as many as you want...]}) 
    public class MyController { 

     [...Declaration and init of forms and modelAttributes...] 

     @RequestMapping(method = RequestMethod.POST) 
     public String processFirstPage(
      @ModelAttribute("oneDto") OneDto infoFromFirstPage, 
      BindingResult result, SessionStatus status) { 

        [...Do whatever you need...] 

      //return form success view 
      return "secondPageView"; //uses secondDto 

     } 

     @RequestMapping(method = RequestMethod.POST) 
     public String processSecondPage(
      @ModelAttribute("oneDto") OneDto infoFromFirstPage, @ModelAttribute("secondDto") SecondDto infoFromSecondPage 
      BindingResult result, SessionStatus status) { 

        [...Do whatever you need...] 

      //return form success view 
      return "thirdPageView"; 

     } 
    } 

С JSP точки зрения, DTO объявляется в «modelAttribute» формы и все поля находятся в пути входов, выбирает, и т.д.:

<form:form method="post" modelAttribute="oneDto" action="matchResquestMappingURL" enctype="application/x-www-form-urlencoded"> 
<form:input path="oneField"/> 
etc. 

full TLD description here

Вам не нужно использовать несколько DTO, вы можете использовать их и добавить дополнительную информацию на каждую страницу. Когда вы закончите использовать свои данные, позвоните status.setComplete();, чтобы очистить сеанс.

Это просто база для понимания концепции, но есть много других способов борьбы с этим. например, вы можете проверить это here. (несколько форм страницы)

+0

После долгих битв я собрал задачу поблагодарить друзей за всю вашу уверенность ... в личном виде перейдите с вкладкой на случай, если вы находитесь в процесс создания многостраничной формы ... PLS имеют вид Twitter-бутстрап, это очень полезно .. –