Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/30: Рейтинг темы: голосов - 30, средняя оценка - 4.80
2 / 2 / 2
Регистрация: 01.04.2012
Сообщений: 110

Паттерн Front Controller

08.12.2012, 14:45. Показов 5733. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте мне надо реализовать Паттерн Front Controller в своем приложение, (без Frameworkov), в интернете искал описания о нем много а примеров мало а если есть то какие то сложные и запутанные. Решил попробовать чего то не выходит вот код:

Это форма с двумя полями для логина и пароля.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form name="Login" action="admin/Welcom.jsp">
            <p align="center">
                Username <input type="text" name="Username" value="" size="20"/>
                <br/>
                <br/>
                Password <input type="password" name="Password" value="" size="20"/>
                <br/>
                <br/>
                <input type="submit" name="Submit" value="Submit"/>
                <input type="reset" name="Reset" value="Reset"/>
            </p>
        </form>
    </body>
</html>
Это сам Front Controller.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;
 
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
/**
 *
 * @author 
 */
public class FrontController extends HttpServlet {
 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
 
        HttpSession sesion = request.getSession(true);
        Bean userBean = (Bean)sesion.getAttribute("userbean");
        
        if(userBean == null){
        
            String username = request.getParameter("Username");
            String password = request.getParameter("Password");
            userBean = new Bean(username, password);
        }
        String nexPage;
        String user = "log";
        String pass = "123";
        boolean result = false;
        
        if(user.equals(userBean.getUsername()) && pass.equals(userBean.getPassword())){
 
            nexPage = "/Welcom.jsp";           
        } else {
        
            nexPage = "/Error.jsp";
        }
       dispatch(request, response, nexPage);
    }
    
  protected void dispatch(HttpServletRequest request, HttpServletResponse response, String page) 
  throws  javax.servlet.ServletException,java.io.IOException {
    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(page);
    dispatcher.forward(request, response);
  }
}
Bean.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;
 
/**
 *
 * @author 
 */
public class Bean {
    
    private String username;
    private String password;
    
    public Bean(){
    
    }
    
    public Bean(String username, String password){
    
        this.username = username;
        this.password = password;
        
    }
    
    public String getUsername(){
    
        return username;
    }
    
    public void setUsername(String username){
    
        this.username = username;
    }
    
    public String getPassword(){
    
        return password;
    }
    
    public void setPassword(String password){
    
        this.password = password;
    }
    
}
И web.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>FrontController</servlet-name>
        <servlet-class>controller.FrontController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FrontController</servlet-name>
        <url-pattern>/admin/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    
    <welcome-file-list>
        <welcome-file>
            Login.jsp
        </welcome-file>
        </welcome-file-list>
</web-app>
В итоге нечего не получилось. По нажатию на кнопку браузер пишет: description The specified HTTP method is not allowed for the requested resource (HTTP method GET is not supported by this URL).

В чем здесь ошибка?
Или дайте простой пример который реализует Паттерн Front Controller.
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2012, 14:45
Ответы с готовыми решениями:

Front Controller
Добрый день. Если на сайте все запросы направляются на index.php, а он уже создает объект нужного класса(отдельного контроллера) для...

Настроить Front Controller
Читаю Мэтта Зандстру и пытаюсь на реальном приложении использовать шаблон Front Contorller Структура папок выглядит так ...

Controller Serve Raid M5014 SAS/SATA Controller совместимость с HDD
Здравствуйте! Есть контроллер Controller Serve Raid M5014 SAS/SATA Controller и жесткие диски HDD 1ТБ, Western Digital RE, WD1004FBYZ ...

2
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
08.12.2012, 14:59
зачем вам наследовать в фронт контроллере сервлет, просто вызовите его в методе service и пусть обрабатывает все реквесты.
абстрактный контроллер с несколькими возможными реализациями может быть заинжектен класслоадером в любой момент в рантайме и присвоить ссылку интерфейсу или абстрактному классу которая используется во всей иерархии вызовов. Плюсы: версионирование контроллера и расширение его возможностей без изменения структуры использующего его кода и полной пересборки.
вот пример с жёстким наследованием http://linvader.blogspot.com/2011/02/dp.html
минус этого подхода в том что вы не можете изменить контроллер путём новой реализации, но как вариант подойдёт.
0
1 / 1 / 1
Регистрация: 23.07.2011
Сообщений: 14
09.12.2012, 18:33
В книге PRO JSP2 описан такой патерн. В инете книгу не проблема наити. Правда он на английском.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2012, 18:33
Помогаю со студенческими работами здесь

Я теряю данные на пути Controller-View-Controller. Как правильно получить модель из представления?
У меня есть модель, которая содержит несколько свойств. Есть List&lt;Point&gt; и ThranslatingCam. Свойство ThranslatingCam содержит свойства,...

Controller Serve Raid M5014 SAS/SATA Controller
Здравствуйте! Нужна очень помощь знатоков по этому контроллеру! Вопрос есть ли инструкция как создать два Raid1+ Raid1 через биос. ...

Смена Root View Controller в Navigation Controller
Доброго времени суток. В приложении есть Storyboard. В нем navigation controller выставлен как initial view controller. При первом...

Почему паттерн абстрактная фабрика - паттерн уровня объектов, если в нём могут быть статические отношения?
Взято из Шевчук А., Охрименко Д., Касьянов А. Design Patterns via C#. Приемы объектно-ориентированного проектирования (2015): Почему...

918 - Front USB not connected, 917 - Front Audio not connected
Есть мать от HP Compag dx6100 MT (PU836EC), при запуске выдает сообщения 918-Front USB Not Connected 917-Front Audio Not Connected ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru