Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> архитектура MVC, Model, View, Controller 
V
    Опции темы
Samotnik
Дата 23.10.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Значит есть проект, в нем :
Сервлет
Код

public class SayHello extends HttpServlet {
    String message = "";
     private static final Logger log = Logger.getLogger(SayHello.class);
    public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        message = request.getParameter("Name");
        System.out.println("message = " + message);
        request.setAttribute("fromServlet", "Hello, " + message);
        log.info("   !!!!!!!!!!!!!!!!!   We  are the  chempions ,  my  friend!!!!!!!!1" + message);
        request.setAttribute("MessageType", request.getMethod());
        request.getRequestDispatcher("/indexPast.jsp").forward(request, response);
    }
}

jsp страница 
Код

<%@ page contentType="text/html;charset=UTF-8" language="java"  %>
 <%
    String message = (String) request.getAttribute("fromServlet");
    String message2 = (String) request.getAttribute("MessageType");
  %>
<html>
  <head>
    <title>Simple jsp page</title>
  </head>
  <body>
   <h1><%=message%>
        <br>Type is , " </br>
       <%=message2%>
   </h1>
  </body>
</html>

ВСЕ  РАБОТАЕТ.
Нужно сделать архитектуру  MVC   т.е. нужно чтобы в проекте присутствовали три слоя (Model, View, Controller), представленные соответственно: сервис классом (реализующим бизнес логику создания фразы приветствия), JSP (реализующим способ отображения), servlet (контролирование процесса обработки запроса).
Помогите плз..   smile

Добавлено через 7 минут и 54 секунды
Я пологаю, что нужно новый класс создать в котором будет формироваться это самое приветствие, но как? ведь он будет обычным классом, а не сервлетом, и получаетчся что request  у него не будет  smile 
PM MAIL   Вверх
Vasay
Дата 23.10.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата

Я пологаю, что нужно новый класс создать в котором будет формироваться это самое приветствие, но как? ведь он будет обычным классом, а не сервлетом, и получаетчся что request  у него не будет 


А передать в него реквест, как параметр?


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 23.10.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Vasay,  т.е.  создать метод в новом классе и  через параметр его вызвать?  
Я что тоне особо представляю, как  его передать через параметр ?!?
PM MAIL   Вверх
mbasil
Дата 23.10.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



Вот Вам пример класса модели

Код

/**
 * This domain object represents a User in application.
 */
package model;

public class User {
    
    String name = "";
    
    Player( String name ) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
    public void setName(String value) {
        name = value;
    }
}

Ваш класс SayHello по сути является контроллером, то есть он осуществляет 
прием параметров и диспетчирование.
Пусть он создает объект модели и помещает его в Request  в виде атрибута, а
затем выполняет диспетчирование на Вашу JSP, которая собственно и есть View.
JSP страница получить атрибут с объектом модели и выведет информацию.

Добавлено через 4 минуты и 25 секунд
Извините за двойной вывод и ошибку в имени конструктора (Конечно User, а не Player).
Однако суть от этого не меняется.

Да, пожалуйста не переопределяйте метод  service(),  лучше переопределить doGet() и doPost()
PM MAIL   Вверх
Samotnik
Дата 23.10.2007, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Так мне ведь нужно 3-х слойную модель, т.е.
1 -сервис классом (реализующим бизнес логику создания фразы приветствия),  Model
2 -JSP (реализующим способ отображения),                                                           View    
3-  servlet (контролирование процесса обработки запроса).                Kontroler

Я так себе это представляю, или нет?

Добавлено через 11 минут и 17 секунд
не получается  smile 
PM MAIL   Вверх
mbasil
Дата 23.10.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



Так.
Но модель не обязательно должна включать службу. 
В таком простом случае, как у Вас моделью может служить сущность инкапсулирующая принятые от
пользователя параметры.
Если Вы все-же хотите службу, то создавайте объект модели в службе, которая вызывается из сервлета контроллера.
Это не меняет основной картины: у Вас уже есть прототип контроллера и представления.
Их только надо подкорректировать и создать объект сущность.

Добавлено через 5 минут и 27 секунд
MVC - это всего лишь концепция.
Она может быть реализована, как очень просто, так и сложно.
Если хочется посложнее, используйте Struts. При этом модель все равно может представлять один единственный класс сущности.
 
PM MAIL   Вверх
Samotnik
Дата 23.10.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



mbasil,  да мне че по-проще   smile    Я изучаю сервлеты всего неделю.   
Вот не получается пока сделать это и все!!  Не могу  понять как передать  в качестве параметра request 
PM MAIL   Вверх
Vasay
Дата 23.10.2007, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Вобще, тебе не обязательно передавать реквест, можно и имя ("Name")

У тебя сейчас все очень просто. 

Но если нужно передать реквест, то создаешь класс, внем метод

Код

public String CreateMessage(HttpServletRequest request)
{
// обработка

return message;
}


а в сервлете просто вызываешь этот метод, передавая ему реквест.

Это сообщение отредактировал(а) Vasay - 23.10.2007, 16:53


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 23.10.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Все разобрался, оказалось вообще  детский  сад, и без никакого  реквеста
Код

import org.apache.log4j.Logger;
import java.util.GregorianCalendar;
import java.util.Calendar;
public class ModelClass {
    private static Logger log = Logger.getLogger("log4j.properties");
    ModelClass() {
    }
    public String SendToServlet(String clientMessage) {
        String MessageOfDay ="";
        log.info("O'k  Let's  go");
        Calendar cal = new GregorianCalendar();
        int hour = cal.get(Calendar.HOUR_OF_DAY);
        if (hour<=9)
                 MessageOfDay = "Good Morning, ";
        else if(hour<=12 && hour>=9)
                MessageOfDay = "Good Day, ";
        else if(hour<=17 && hour>=12)
                MessageOfDay = "Gootten  tag, ";
        else if(hour<=24 && hour>=17)
                MessageOfDay = "Good  evening, ";
        else if(hour<=9 && hour>=24)
                MessageOfDay = "Good  night, ";
        return  MessageOfDay + clientMessage;
    }
}

PM MAIL   Вверх
mbasil
Дата 23.10.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



В сервлете 

        User u = new User( message );  
        request.setAttribute("user", u );

в JSP странице:

<jsp:useBean id=”myBean” scope=”request” class=”model.User” />

или (это хуже) 

<%
  CustomerBean myBean = (CustomerBean) request.getAttribute(“myBean”);
  if ( myBean == null ) {
               . . .
     }
%>

Так как ссылку request определять не надо - на JSP странице она 
существует "автоматом".

Добавлено через 3 минуты и 2 секунды
Опять поспешил, переменная должна называться  user, а не myBean:

Код

<jsp:useBean id=”user” scope=”request” class=”model.User” />


или (это хуже) 

Код

<%
  CustomerBean user = (CustomerBean) request.getAttribute(“myBean”);
  if ( myBean == null ) {
               . . .
     }
%>

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0816 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.