простой возврат в Java-класс - PullRequest
0 голосов
/ 23 марта 2012

Вместо того чтобы писать слишком много SQL-операторов в каждом сервлете, я просто хочу написать один SQL-оператор в Java-классе и хочу вызвать этот класс из каждого сервлета, но я не нашел правильного способа сделать это.

Заявление sql: select distinct username from table where userid=?

while (rs.next){
    username=rs.getString(1);
}

Я хочу вернуть username каждому сервлету поэтому я создал класс Java в NetBeans:

public class Username {
     //How should I proceed here?        
}

Ответы [ 3 ]

2 голосов
/ 23 марта 2012

Я думаю, что получил ваш вопрос.Я надеюсь, что вы получите ответ в следующем коде: -

public class Username {

    public String getUserName(Long userId) {
        String userName = "";
        //all your sql code here
        return userName;
    }
} 

напишите следующий код в классе сервлетов

Username uName = new Username();
uName.getUserName(userId);
2 голосов
/ 23 марта 2012

Не вставляйте этот код в сервлет.

Создайте отдельный POJO, который сделает всю работу за вас. Напишите его, протестируйте и дайте ссылку на любой сервлет, который нуждается в его услугах. Пусть сервлет вызовет единственный метод, который выполняет эту логику.

Начните с интерфейса:

package persistence;

public inteface UserDao {
    String getUsername(Long userId);
}

Тогда дайте ему реализацию:

package persistence; 

public class UserDaoimpl implements UserDao {
    public String getUsername(Long userId) {
        // All the SQL stuff here
    }
}

Ваш сервлет будет иметь ссылку на него:

private UserDao userDao = new UserDaoImpl();

Сервлет должен получить соединение из пула и передать его DAO.

Если у вас есть операции записи, я бы порекомендовал вам создать отдельный сервисный слой. Службы знают о единицах работы. Они переживут ваш веб-интерфейс и эти сервлеты.

0 голосов
/ 23 марта 2012

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

ServletContext context = getServletContext();
context.setAttribute("username", username); 

или другими способами поместить класс POJO в атрибут сеанса или в контекстный атрибут

...