Как передать параметры из сервлета через бин на страницу JSP с помощью сеанса? - PullRequest
4 голосов
/ 27 апреля 2011

Как упоминалось ниже, я внес изменения в код, который выглядит как в следующем примере, но в JSP не отображаются имя и фамилия:

Код сервлета:

//....
HttpSession session = request.getSession();
Person person = (Person) session.getAttribute("person");
if (person == null) {
    person = new Person();                      
}
person.setNewId(newId);
person.setFirstName(firstName);
person.setLastName(lastName);
session.setAttribute("person", person);

RequestDispatcher rd = request.getRequestDispatcher("jsp Address");
rd.forward(request, response);

Код персоны Bean:

private int newId;
private String firstName;
private String lastName;

// Default Constructor
public Person() {}

public Person(int newId, String firstName, String lastName) {
    setNewId(newId);
    setFirstName(firstName);
    setLastName(lastName);
}

//Getter and Setter Methods
public int getNewId() {return newId;}
public void setNewId(int newID) {this.newId = newID;}
public String getFirstName() {return firstName;}
public void setFirstName(String FirstName) {this.firstName = FirstName;}
public String getLastName() {return lastName;}
public void setLastName(String LastName) {this.lastName = LastName;}

И в коде JSP:

<jsp:useBean id="person" type="app.models.Person" scope="session">
    <jsp:getProperty name="person" property="firstName" />
    <jsp:getProperty name="person" property="lastName" />
</jsp:useBean>

Вывод этой страницы JSP: нет

Ожидаемый вывод: firstName lastName

Вопросы:

1. How can i pass parameters from Servlets to JSP via Bean with help of Session? 
2. Is there a better way to do this code? I am using MVC architecture.

1 Ответ

2 голосов
/ 27 апреля 2011

Избавьтесь от <jsp:useBean>.При использовании атрибута type вместо class он не будет проверять, есть ли уже экземпляр в области, он просто переопределит экземпляр Person, который вы создали в сервлете, с новым, пустым, построенным по умолчаниюпример.

При использовании «архитектуры MVC» тег <jsp:useBean> бесполезен.Удалите его и просто используйте обычный EL для доступа к нему:

${person.firstName} ${person.lastName}

Или лучше, чтобы предотвратить XSS-атаки , используйте JSTL <c:out>.

<c:out value="${person.firstName} ${person.lastName}" />
...