Olá a todos,
Sou desenvolvedor web, outrora via ASP e atualmente utilizando JSP. Estou estudando o assunto que parece estar na moda, o MVC model 2. Bom, de cara já fiquei satisfeito em saber que eu já me enquadrava no model 1 com largo uso de Beans e pouco código nas páginas.
Na documentação blueprints do site da Sun tem um exemplo de um Servlet Controller "pobre" como eles mesmos descreveram, mas que para os meu propósitos didáticos já está pra lá de bom.([url]http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier5.html#1078720[/url]):
Alguém pode me explicar o que é o objeto Model utilizado nas classes? Se for algo genérico, alguém podia me dar um exemplo "mundo real" que explique a utilidade deste atributo?
Por enquanto já vou agradecendo qualquer resposta.
Sérgio.
// Action.java:
public abstract class Action {
protected Model model;
public Action(Model model) { this.model = model; }
public abstract String getName();
public abstract Object perform(HttpServletRequest req);
};
// CreateUserAction.java:
public class CreateUserAction extends Action {
public CreateUserAction(Model model) {
super(model);
}
public String getName() { return "createUser"; }
public Object perform(HttpServletRequest req) {
return model.createUser(req.getAttribute("user"),
req.getAttribute("pass"));
}
}
public class ControllerServlet extends HttpServlet {
private HashMap actions;
public void init() throws ServletException {
actions = new HashMap();
CreateUserAction cua = new CreateUserAction(model);
actions.put(cua.getName(), cua);
//... create and add more actions
}
public void doPost(HttpServletRequest req,
HttpServletResponse resp)
throws IOException, ServletException {
// First identify operation "op" from URL.
// method getOperation() is defined elsewhere.
String op = getOperation(req.getRequestURL());
// Then find and execute corresponding Action
Action action = (Action)actions.get(op);
Object result = null;
try {
result = action.perform(req);
} catch (NullPointerException npx) {
//... handle error condition: no such action
}
// ... Use result to determine next view (see next section)
}
//... other methods...
}