Contrôleur Java Front [dupliquer]

cette question a déjà une réponse ici:

je pense implémenter le contrôleur Front dans mon application J2EE. Pourriez-vous s'il vous plaît suggérer la même chose avec peu de liens (avec des exemples de code source) et n'importe quelles normes à suivre?

meilleures salutations

6
demandé sur BalusC 2010-01-13 23:47:21

2 réponses

pour commencer, créer un Servlet qui écoute un certain url-pattern , par exemple /pages/* . Implémenter la méthode service() pour rechercher l'action associée à la méthode request ( GET , POST , etc) et pathinfo (la partie URL après le servlet url-pattern ).

exemple de base:

protected void service(HttpServletRequest request, HttpServletResponse response) 
  throws ServletException, IOException {
  View view = new View(request, response);
  Action action = ActionFactory.getAction(request);
  action.execute(view);
  view.navigate();
}

l'interface Action doit représenter une unité de travail. Vous pouvez le mettre en œuvre pour faire le nécessaire la logique d'entreprise:

public interface Action {
  void execute(View view);
}

le ActionFactory doit maintenir les classes implémentant Action dans une sorte de Map<String, Action> où la touche String représente de moins en moins une combinaison de la méthode de requête et de pathinfo. Vous pouvez alors obtenir un Action comme suit:

public static Action getAction(HttpServletRequest request) {
  return actions.get(request.getMethod() + request.getPathInfo());
}

le View doit représenter le contexte de la requête avec lequel le Action peut travailler. Dans le navigate() vous pouvez transmettre la demande à un JSP pour affichage:

public void navigate() {
  String path = "/WEB-INF" + request.getPathInfo() + ".jsp";
  request.getRequestDispatcher(path).forward(request, response);
}

qui devrait vous permettre de commencer (notez que j'ai laissé toutes les vérifications évidentes telles que les pointeurs null loin pour rendre les exemples moins encombrés, c'est à vous maintenant).

il y a cependant plus à prendre en compte dans l'ensemble de l'histoire, comme la validation, la conversion, la gestion d'événements, les mappages de valeurs d'entrée, la localisation, l'injection de dépendances, etc. C'est tous avec tous un bon travail. Le plus décent MVC cadres prend la plupart de ce tout en compte, comme Sun JSF , Apache Struts , MVC printemps , Stripes , etcetera. Si vous n'en avez jamais fait, je vous recommande vivement de le faire avant d'en faire pousser une, sinon vous finiriez avec une perte de temps.

15
répondu BalusC 2011-02-20 14:13:29

Le web est plein de maturité java, frameworks web. Je ne vois pas de raison d'en créer une nouvelle avec deux exceptions: 1. Vous avez un environnement/flux très atypique et vous avez besoin de quelque chose de très, très spécifique à vos besoins. 2. Vous voulez simplement passer par l'exercice de la création d'un cadre pour apprendre les tenants et les aboutissants de httpservlet développement.

JSR 154 définit les spécifications servlet. Trouvez-le ici: http://jcp.org/en/jsr/detail?id=154

le ressort est l'un des cadres populaires actuels et celui qui fonctionne pour moi. Struts a été l'un des premiers cadres très populaires qui a commencé à décliner en popularité. Trouver une bonne liste de cadres avec une discussion à http://java-source.net/open-source/web-frameworks

1
répondu labratmatt 2010-01-13 21:04:06