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

时间:2015-08-12 11:08:24

标签: java spring-mvc web

我有一个Java Web应用程序,它有几个servlet,我想把它变成Spring mvc应用程序的可选模块。理想情况下,我想将模块添加为"依赖"使其可用并在我的主UI中添加适当的链接。

有没有一种流行的方式来实现这一目标?

非常感谢提前!

3 个答案:

答案 0 :(得分:0)

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

这样,在构建时,所有必需的Servlet项目都是由maven在构建父项时自动构建的......并且您可以选择在构建时排除Servlet。

答案 1 :(得分:0)

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

1)在你的web.xml中,你必须指定你的调度程序servlet和它将被调用的url模式。将servlet类指定为调度程序servlet类,将servlet名称指定为此servlet的自定义名称

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

3)将自定义servlet转换为控制器,方法是让它们实现Controller接口,然后在第二步创建的xml文件中指定

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

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

6)部署

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

答案 2 :(得分:0)

根据您的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);
}

这样,只要你有一个全局代理来阻止外部客户端访问第二个应用程序,所有安全性都可以由main管理,第二个只接收来自main的转发请求。

如果出于任何原因,您没有隐藏servlet容器的代理,您仍然(但仅)通过混淆具有安全性,因为永远不会发布到辅助应用程序的直接地址,只要您始终只在链接和表单操作中写入相对于第一个应用程序的地址

出于安全原因,

(*)ServletContext.getContext()可能会在某些servlet容器上返回null。