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


Автор: Christoph 14.8.2010, 15:07
Хочу получить из сессии значение в jsp, но не знаю как???
Код

public class SimpleAction extends ActionSupport implements SessionAware {
    public String getPassword() {
        return password;
    }
    private Map session;

    public void setSession ( Map session )
         {
              this.session = session;
         }

    

    public void setPassword(String password) {
        this.password = password;
    }

    private String password;

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    private String login;

    public String getMess() {
        return mess;
    }

    public void setMess(String mess) {
        this.mess = mess;
    }

    private String mess;

    public String execute() {
           Connection conn = null;

        try {
            String userName = "root";
            String password = "admin";
            String url = "jdbc:mysql://localhost/usersl";
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = DriverManager.getConnection(url, userName, password);
            Statement st = conn.createStatement();
            ResultSet res = st.executeQuery("select* from users;");
            while (res.next()) {
                if (res.getString(1).equals(getLogin()) && (res.getString(2).equals(getPassword()))) {
                    setMess("Пользователь успешно зашел на сайт");
                    session.put("admin","1");
                    return SUCCESS;
                }
            }
        }
        catch (Exception e) {

        }
        finally {
            if (conn != null) {
                try {
                    conn.close();

                }
                catch (Exception e) { /* ignore close errors */ }
            }
        }
        

        return SUCCESS;
    }



а вот сам результат jsp
Код

<div class="leftbar">
      <% session.getAttribute("admin");%>
      <s:property value="mess"></s:property>
</div>


<% session.getAttribute("admin");%> не канает, пишет что cannot resolve method getAttribute
Может разные сессии создаются, не знаю в чем ошибка

Автор: lazycat 14.8.2010, 23:11
То, что Ваш код не работает - вполне естественно.

1. Вы совершенно правильно решили, что предопределенная переменная session из JSP и объявленная Вами переменная session - это разные переменные. В этом Вы можете убедиться, просмотрев код сервлета, генерируемого по Вашему JSP. В сервере Tomcat этот файл "закопан" глубоко в подкаталогах Work. Найти его можно по имени. Если Ваш файл JSP - foo.jsp, то сгенерированный файл сервлета foo_jsp.java. 
(Если Вы пользуетесь другим сервером приложений, можно поискать по содержимому).
Посмотрите java-код и Вы увидите там переменную session.
Кроме того Ваша session имеет тип Map, а в JSP переменная session типа HttpSession. 

2. Даже если бы с сеансом было все в порядке, Вы бы не увидели результата. Для того, чтобы он отобразился надо вместо 

 <% session.getAttribute("admin");%>

написать

 <%= session.getAttribute("admin");%>

Больше ничего сказать не могу, т.к. Ваше описание чрезвычайно краткое и составить представление о происходящем для меня крайне сложно. (Судя по количеству ответов, для других тоже).

Автор: Christoph 15.8.2010, 20:10
Сессия httpSession одинаковая ...

Код

<div class="leftbar">

      <%  String str= (String) session.getAttribute("admin");
          if (str=="id1") { %>
      <s:property value="mess"></s:property>
      <% } else { %>
    <s:form action="Action">
        <h5>Логин или пароль неверный</h5>
        <s:textfield label="Введите логин" name="login" value=""></s:textfield>
        <s:textfield label="Введите пароль" name="password" value=""></s:textfield>
        <s:submit value="Войти"></s:submit>
    </s:form>
    <a href="#">Регистрация</a>
    <a href="#">Забыли пароль?</a>
    <% } %>
</div>


просто я не добавил в либы javax.servlet.session; и не получается через String строки сравнить :( что то с тайпкастом, ладно разберусь

Автор: MisterCleric 16.8.2010, 09:56
Привет.
Вообще в struts есть возможность с помощью его тегов получать значение из сессии
Код

<s:property value="#session[admin']"/>

а если "if", то так:
Код

<s:if test="#session[admin'] == 'id1'">

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