2014-02-02 2 views
0

Я действительно борюсь с этой проблемой. Я храню имена и адреса пользователей в качестве переменных сеанса на сервере. В операторе else if я хочу выполнить поиск по ранее введенным именам в соответствии с именем, которое было введено (с полем адреса пустым), к соответствующему адресу, который был введен для этого имени.Сервлет в Java. Как получить атрибуты?

For example: 
First entered details: Name=John, Address=Ireland, 
Second entered details: Name=Mary, Address=France, 
Third entered details: Name=John, Address=null,(EMPTY FIELD) 

Когда эти третьи детали вводятся для «Джона», я хочу, чтобы получить адрес для Джона (то есть: Ирландия), который был ранее введенным для этого пользователя. Не могу понять, почему это не сработает. Любая помощь приветствуется. Благодаря

@WebServlet("/Test2") // tells server under which URL to offer this servlet 
public class UserRegistration extends HttpServlet { 

    public void doGet(HttpServletRequest request, 
      HttpServletResponse response) throws IOException { 
     // set content-type header before accessing the Writer 
     response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 
     // then write the response 
     out.println("<html>" + "<head><title>Online Shopping Directory</title></head>"); 
     //Get the identifier of the book to display 
     out.println("<body bgcolor=\"#ffffff\">" 
       + "<h2>Please enter your name:</h2>" + "<form method=\"get\">" 
       + "<input type=\"text\" name=\"username\" size=\"25\">" 
       + "<p></p>" 
       + "<h2>Please enter your address:</h2>" + "<form method=\"get\">" 
       + "<input type=\"text\" name=\"useraddress\" size=\"25\">" 
       + "<p></p>" 
       + "<input type=\"submit\" value=\"Submit\">" 
       + "<input type=\"reset\" value=\"Reset\">" 
       + "</form>"); 

     String name = request.getParameter("username"); 
     String address = request.getParameter("useraddress"); 
     HttpSession session = request.getSession(true); 

     if ((name != null) && (name.length() > 0) && (address != null) && (address.length() > 0)) { 

      session.setAttribute("username", address); 
      out.println("The username " + name + " has been saved for " 
        + "this session. The address of this user is " 
        + (String) session.getAttribute("username")); 
     } else if ((name.equals("username")) && (address == null)) { 
      out.println("The username " + name + " is already saved. " 
        + "The address of this user is " 
        + (String) session.getAttribute("username")); 
     } 
     out.println("</body></html>"); 
     out.close(); 
    } 
} 
+0

Являетесь ли вы целью для предложений? – Hannes

+0

Я новичок в программировании, и я просто ищу немного помощи с проблемой, которую я потратил много времени, пытаясь понять себя. Если эта помощь находится в форме «предложений», как вы сказали, все в порядке со мной, но если вы не хотите помогать, это тоже хорошо со мной. – kellzer

+0

извините, мой ошибка. Я имел в виду метод для отображения ранее введенных данных в сочетании с введенной информацией. – Hannes

ответ

1

вы должны сделать что-то вроде следующего:

if ((name != null) && (name.length() > 0)){ 

session.setAttribute("username", name); 

out.println("The username " + name ); 


}else { 
out.println("The username " + (String) session.getAttribute("username")); 
} 





if ((address != null) && (address.length() > 0)){ 
session.setAttribute("address", address); 

    out.println("The address " + adress); 

}else { 
out.println("The address " + (String) session.getAttribute("address")); 
} 

и, пожалуйста, дайте мне несколько отзывов.

Надеюсь, что это поможет.

+1

Спасибо за вашу помощь. Это очень помогло мне и жаль, что я так медленно признал помощь! – kellzer

+0

Вы так рада, что я могу помочь –

0

Если вы хотите список всплывал, если пользователь вводит определенный префикс уже введенный текст, вы должны хранить текст первым. Используйте объект списка, чтобы добавить информацию, когда она отправлена ​​на сервер, и сохраните ее в сеансе пользователя. Имейте в виду, что когда сеанс отключается или удаляется, ваш список больше не будет доступен. Чтобы сохранить список введенной информации более настойчивым образом, вместо этого вы можете использовать базу данных.

Когда пользователь запрашивает страницу, на которой должна быть введена информация, вы извлекаете список из ее сеанса и записываете его на страницу (смотрите окно автоматического предложения, чтобы узнать, как это сделать, используя javascript).

0

Вы фактически создаете новый экземпляр сеанса evertime, вы должны получить экземпляр сеанса, связанный с запросом в то время как вам нужно получить атрибуты

Используйте request.getSession(false); это вернет соответствующий сеанс с запросом или вернуть нуль. Вы должны быть осторожными в сеансах обработки во время управления сеансами, то есть, когда для создания нового или получить сеанс, который был создан для пользователя

Смежные вопросы