¿Cuál es la mejor manera de hacer un modular de aplicaciones web java [cerrado]

StackOverflow https://stackoverflow.com/questions/71692

  •  09-06-2019
  •  | 
  •  

Pregunta

Estoy construyendo pequeño sitio web en Java (Spring MVC con vistas JSP) y estoy tratando de encontrar la mejor solución para la fabricación e incluyendo algunos módulos reutilizables (como "últimas noticias" de "próximos eventos"...).

Así que la pregunta es:Los Portlets, los azulejos o algún otro tipo de tecnología?

¿Fue útil?

Solución

Si usted está usando Spring MVC, entonces le recomendamos el uso de Portlets.En Primavera, los portlets son sólo ligero controladores ya que sólo son responsables de un fragmento de la página entera, y son muy fáciles de escribir.Si usted está usando Spring 2.5, entonces usted puede disfrutar de todos los beneficios de la nueva anotación de apoyo, y encajan muy bien en el conjunto de la Primavera de la aplicación con la inyección de dependencia y los otros beneficios de la utilización de la Primavera.

Un portlet controlador es prácticamente el mismo como un servlet controlador, he aquí un ejemplo sencillo:

@RequestMapping("VIEW")
@Controller
public class NewsPortlet {

    private NewsService newsService;

    @Autowired
    public NewsPortlet(NewsService newsService) {
        this.newsService = newsService;
    }

    @RequestMapping(method = RequestMethod.GET)
    public String view(Model model) {
        model.addAttribute(newsService.getLatests(10));
        return "news";        
    }
}

Aquí, un NewsService se inserta automáticamente en el controlador.El método ver agrega un objeto de la Lista para el modelo, que estará disponible como ${newsList} en el JSP.La primavera se busca una vista con el nombre de noticias.jsp basado en el valor de retorno del método.El RequestMapping le dice a la Primavera que esta contoller es para el modo de VER el portlet.

El XML de configuración sólo se necesita especificar la ubicación de la vista y los controladores se encuentran:

<!-- look for controllers and services here -->
<context:component-scan base-package="com.example.news"/>

<!-- look for views here -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/news/"/>
    <property name="suffix" value=".jsp"/>
</bean>

Si simplemente desea incrustar los portlets en la aplicación existente, la que puede liar un portlet de contenedores, tales como eXo, Sol, o Apache.Si usted quiere construir su aplicación como un conjunto de portlets, usted puede ser que desee considerar un completo soplado portlal solución, tales como Liferay Portal.

Otros consejos

Las baldosas pueden ser un dolor de cabeza.Gran mejora con respecto a lo que había antes (es decir,nada), sino que se limita.

Wicket podría ser más de lo que usted está buscando, a menos que se haya instalado en JSP.

Yo no recomiendo el uso de Portlets a menos que su aplicación es verdaderamente un portal web.

Si sólo desea "componentes reutilizables" uso JSP tagfiles, muertos son simples pero extremadamente potente, ya que son los mismos como regular Jsp.

He tenido experiencia en el uso de las baldosas y la complejidad que implica simplemente no vale la pena.

Soy un gran fan de GWT.Se le permite escribir sus componentes como normal las clases de Java y, a continuación, se puede insertar en sus páginas a voluntad.La cosa termina siendo compila a Javascript.

He aquí un ejemplo:

public class MyApplication implements EntryPoint, HistoryListener
{
    static final String INIT_STATE = "status";

    /**
     * This is the entry point method.  Instantiates the home page.
     */
    public void onModuleLoad ()
    {
        RootPanel.get ().setStyleName ("root");
        initHistorySupport ();
    }

    private void initHistorySupport ()
    {
        History.addHistoryListener (this);

        // check to see if there are any tokens passed at startup via the browser’s URI
        String token = History.getToken ();
        if (token.length () == 0)
        {
            onHistoryChanged (INIT_STATE);
        }
        else
        {
            onHistoryChanged (token);
        }
    }


    /**
     * Fired when the user clicks the browser's 'back' or 'forward' buttons.
     *
     * @param historyToken the token representing the current history state
     */
    public void onHistoryChanged (String historyToken)
    {
        RootPanel.get ().clear ();
        Page page;
        if (Page1.TOKEN.equalsIgnoreCase (historyToken))
        {
            page = new Page1 ();
        }
        else if (Page2.TOKEN.equalsIgnoreCase (historyToken))
        {
            page = new Page2 ();
        }
        else if (Page3.TOKEN.equalsIgnoreCase (historyToken))
        {
            page = new Page3 ();
        }
        RootPanel.get ().add (page);
    }
}

Yo tenía un montón de experiencia con los portlets en conjunción con JSF Ajax (IceFaces) y Liferay Portal y yo no lo recomendaría a cualquier persona - todo se ve bien cuando se lee el tutorial y un verdadero infierno en la práctica.Por supuesto, yo creo que están mucho más cómodo y ligero con Spring MVC y JSP, pero de todos modos, los portlets no están bien soportados tecnología en mi humilde opinión.

No estoy 100% seguro de lo que "componentes reutilizables" significa, en este contexto, pero si te refieres a que quieres que ciertos elementos comunes que aparecen en cada página, tales como la bandera, el pie de página, enlaces de navegación, etc., entonces no busque más que SiteMesh.Mi equipo se ha utilizado con éxito en un par de internacionalización de aplicaciones web.

Tapiz es un marco de aplicaciones web de Java, con énfasis en la facilidad de la creación de componentes reutilizables.

He utilizado sitemesh, y es bueno para el envasado de un conjunto de páginas en el estándar de encabezados y pies de página, pero la Tapicería es mejor para la creación de componentes que se utilizan en muchas páginas, posiblemente muchas veces por página.Galería de componentes puede llevar otros componentes como parámetros, lo que permite la Sitemesh estilo de envolver.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top