制作模块化Java Web应用程序的最佳方法是什么

mor*_*rty 6 java module spring-mvc

我正在用Java构建小型网站(带有JSP视图的Spring MVC),我正在努力寻找制作和包含一些可重用模块的最佳解决方案(如"最新消息""即将发生的事件"......).

所以问题是:Portlets,瓷砖或其他一些技术?

pje*_*esi 4

如果您使用 Spring MVC,那么我建议使用 Portlet。在Spring中,portlet只是轻量级控制器,因为它们只负责整个页面的一个片段,并且非常容易编写。如果您使用 Spring 2.5,那么您可以享受新注释支持的所有好处,并且它们通过依赖注入和使用 Spring 的其他好处很好地融入了整个 Spring 应用程序。

Portlet 控制器与 Servlet 控制器几乎相同,下面是一个简单的示例:

@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";        
    }
}
Run Code Online (Sandbox Code Playgroud)

这里,NewsService 将自动注入到控制器中。view 方法将一个 List 对象添加到模型中,该对象将在 JSP 中作为 ${newsList} 提供。Spring将根据方法的返回值查找名为news.jsp的视图。RequestMapping 告诉 Spring 该控制器用于 portlet 的 VIEW 模式。

XML配置只需要指定视图和控制器所在的位置:

<!-- 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>
Run Code Online (Sandbox Code Playgroud)

如果您只想将 portlet 嵌入到现有应用程序中,则可以捆绑 portlet 容器,例如eXoSunApache。如果您想将应用程序构建为一组 portlet,您可能需要考虑一个完整的门户解决方案,例如Liferay Portal