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

标签 java spring-mvc module

<分区>

我正在用 Java(带有 JSP View 的 Spring MVC)构建小型网站,并试图找到制作和包含少数可重用模块(如“最新消息”“即将发生的事件”...)的最佳解决方案。

那么问题是:Portlet、磁贴或其他一些技术?

最佳答案

如果您使用的是 Spring MVC,那么我建议您使用 Portlet。在 Spring 中,portlet 只是轻量级的 Controller ,因为它们只负责整个页面的一个片段,而且非常容易编写。如果您使用的是 Spring 2.5,那么您可以享受新注释支持的所有好处,它们非常适合整个 Spring 应用程序,具有依赖注入(inject)和使用 Spring 的其他好处。

Portlet Controller 与 Servlet Controller 非常相似,这里是一个简单的示例:

@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";        
    }
}

这里,一个 NewsService 会被自动注入(inject)到 Controller 中。 view 方法将一个 List 对象添加到模型中,它将在 JSP 中作为 ${newsList} 提供。 Spring会根据方法的返回值寻找名为news.jsp的 View 。 RequestMapping 告诉 Spring 该 Controller 用于 portlet 的 VIEW 模式。

XML 配置只需要指定 View 和 Controller 所在的位置:

<!-- 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>

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

关于java - 制作模块化 Java Web 应用程序的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71692/

相关文章:

css - Spring MVC 不加载静态文件

php - 您将如何测试表达式引擎中的模块是否有错误?

java - 保护 Jersey 2 Rest API

java - Freemarker压缩没有空格的single_line

java - th :disabled objects in Thymeleaf

php - 如何有效地管理一个 Web 应用程序的多个安装?

module - D 开发流程

javascript - ScriptEngine JavaScript 不支持包含?

java - JSF、Servlet 和 JSP 之间有什么区别?

spring - 如何使用 REST-ful URL 创建 Spring 3 + Tiles 2 webapp?