繁体   English   中英

Web应用程序作为Spring MVC应用程序的模块

[英]Web application as module of a Spring MVC application

我确实有一个包含多个servlet的Java Web应用程序,我想将其转换为Spring mvc应用程序的可选模块。 理想情况下,我想将模块添加为“依赖项”以使其可用并在我的主UI中添加适当的链接。

有一种流行的方法可以做到这一点吗?

提前谢谢了!

将所有项目转换为maven项目,然后Servlet特定项目是总体MVC父项目中指定的模块。

这样,在构建时,只要您构建父级,maven都会自动构建所有必需的Servlet项目。您可以选择在构建时排除Servlet。

要将普通的java servlet项目转换为spring mvc,您需要执行以下操作

1)在您的web.xml中,您必须使用指定您的调度程序servlet以及将为其调用的url模式。 将servlet类指定为调度程序servlet类,并将servlet名称指定为该servlet的自定义名称。

2)创建一个xml文件作为servletname-servlet.xml

3)通过让自定义servlet实现控制器接口,将其转换为控制器,然后在第二步中创建的xml文件中指定

4)定义这些控制器到请求的映射

5)为请求定义一个视图解析器

6)部署

这些大致就是将servlet项目转换为Spring MVC所需执行的步骤。

根据您的servlet容器(*),您可以尝试将小型应用程序放在其自己的servlet上下文中的同一容器中:这意味着它将是一个完全独立的Web应用程序。

然后,在主应用程序中安装一个映射到完整层次结构的特殊控制器,该控制器将充当辅助应用程序的转发中继。 就像是 :

@Autowired
String extContext;

@RequestMapping("/optapt/app1/**")
public void relay(HttpServletRequest req, HttpServletResponse resp) {
    ServletContext ext = req.getServletContex().getContext(extContext);
    String extUrl = req.getServletPath();
    if (req.getPathInfo() != null) {
        extUrl += req.getPathInfo();
    }
    ext.getDispatcher(extUrl).forward(req, resp);
}

这样,如果您有一个禁止外部客户端访问第二个应用程序的全局代理,则所有安全性都可以由主体来管理,第二个将仅接收来自主体的转发请求。

如果由于某种原因您没有代理来隐藏servlet容器,那么您仍然(但仅)具有通过混淆的安全性 ,因为永远不会发布辅助应用程序的直接地址,前提是您始终只写入相对于第一个应用程序的地址在链接和形式上的行动

(*)出于安全原因,某些Servlet容器上的ServletContext.getContext()可能返回null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM