Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Переменная сервлета


Автор: Grelloo 17.4.2006, 21:20
Сервлет получает имя и пароль из login.jsp
Код
String user = request.getParameter("userName");
String password = request.getParameter("password1");

Проверяю наличие пользователья в базе данных, затем на этом же сервлете вывожу поле для ввода сообщений (что-то типа чата). Каждое сообщение и имя его пользователя должны попадать в базу данных, но вместо этого я получаю null, когда пытаюсь получить user с помощью 
Код
request.getParameter("userName");

Как мне сделать чтобы эта переменная не сбрасывалась?   

Автор: COVD 17.4.2006, 22:19
если вы хотите, чтобы вместе с сообщением приходило и юзернейм, то надо его явно каждый раз посылать. Что пошлете, то и получите на серверной стороне. Если это HTML форма, значит должен быть туда вписан такой параметр и определено его значение.  

Автор: Goliath 17.4.2006, 22:36
Самый простой метод поместить ее в сессию! 

Автор: Tirael 17.4.2006, 22:40
Как Вы передает данные от login.jsp в сервлет.

Код сервлета и login.jsp в СТУДИЮ !! smile  

Автор: Grelloo 17.4.2006, 23:01
Передаю из login.jsp
<input name="userName" size="10" value="" maxlength="10" type="text">
Получаю:
String user = request.getParameter("userName");
Может мне через атрибуты сессии это сделать. То бишь получить в login.jsp сессию установить username в качестве атрибута, потом вызывать эту же сессию в сервлете и получить этот параметр?
Да, еще параллельно вопрос: как отслеживать сессию (через куки бы не хотелось, вдруг отключат)?
 

Автор: Grelloo 18.4.2006, 09:25
В общем я сделал так
login.jsp

Код

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <h3>JSP Page</h3>
     <% if (request.getParameter("userName")==
null && request.getParameter("password1")
 == null) { %>      
    <form action="index.jsp" method="get">
  <center><br>
  <table border="0" cellpadding="4" cellspacing="2">
    <tbody>
      <tr>
        <th colspan="2" bgcolor="#ccccff"><font size="5">USER
REGISTERATION</font> <br>
        <font size="1"><sup>*</sup> Required Fields</font> </th>
      </tr>
      <tr bgcolor="#c8d8f8">
        <td colspan="2" valign="top">
        <div style="text-align: center;"> <b>User Name<sup>*</sup></b>
        <br>
        </div>
        <div style="text-align: center;"><input name="userName"
 size="10" value="" maxlength="10" type="text"> </div>
        </td>
      </tr>
      <tr bgcolor="#c8d8f8">
        <td valign="top"> <b>Password<sup>*</sup></b> <br>
        <input name="password1" size="10" value="" maxlength="10"
 type="password"></td>
        <td valign="top"> <b>Confirm Password<sup>*</sup></b> <br>
        <input name="password2" size="10" value="" maxlength="10"
 type="password"></td>
      </tr>
      <tr bgcolor="#c8d8f8">
        <td colspan="2" align="center"> <input value="Submit"
 type="submit"> </td>
      </tr>
    </tbody>
  </table>
  </center>
</form>
<% } else { %>     
<%! HttpSession session; %>
<%! String user, password; %> 
<% user = request.getParameter("userName");  %>
<% password = request.getParameter("password1"); %>
<%
session = request.getSession( );
session.setAttribute("user-name", user); 
session.setAttribute("pass-word", password);
%> 
    <jsp:forward page="/TestServlet" />  
<% } %>        
    </body>
</html>


[code=java]


В сервлете получаю соответствующие атрибуты сессии:
Код

HttpSession session = request.getSession();
String username = (String)session.getAttribute("user-name"); 
String password = (String)session.getAttribute("pass-word");


В приниципе мне кажется куки здесь не нужны, т. к. запоминать о пользователе ничего не надо кроме имени и пароля, которые можно извлечь из базы. 
А вот насчет нескольких пользователей, то здесь возникает проблема: если захожу под одним пользователем и одновременно под другим, то первый пользователь начинает слать сообщения под именем второго. Наверное проблема в том, что я захожу с одного и того же браузера? 

 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)