在Java Web应用程序中动态创建新的静态地址

时间:2015-07-04 22:14:20

标签: java java-ee servlets

在Java中开发Web应用程序,在Tomcat中启动时,我需要能够在服务器中创建(动态)新的静态地址(链接,URL),用于查看新项目的信息,我们称之为new_item_001,它只是由一个用户创建的。

说我想创建一个新地址

www.domain.com/webapp/items/new_item_001

可用于呈现new_item_001

内容的视图

这是最好的方法吗?

  • 我应该为此视图动态创建一个新的servlet类吗?
  • 我应该为其中的此项动态创建文件夹items和一个html文件new_item_001吗?
  • 我应该编辑服务器地址映射规则来创建这个静态地址并将其映射到一个中央servlet,它以某种方式知道要显示哪个项目?

我理解这个问题是错误的,我甚至不太了解这个问题,所以我想要一些关于要寻找什么的指导方针。

2 个答案:

答案 0 :(得分:1)

以上都不是。

您应该将servlet映射到/items/*。当请求来到此servlet时,分析请求的实际路径,在/items/之后提取部件以了解示例中的实际值(new_item_001),从中获取与此项相对应的数据数据库,并将其发送到浏览器。

使用像Spring MVC这样的真正的MVC框架会更容易。您可以使用

简单地映射控制器的方法
@RequestMapping("/items/{itemId}")
public Item getItem(@PathVariable("itemId") String itemId) {
    ...
}

让框架为您完成所有URL解析。

答案 1 :(得分:0)

我想以一种简单的方式解决这个问题。在一段时间内成功运行应用程序后,为每个创建的项目创建一个servlet会有点过分,并且变得非常麻烦。

更改/编辑服务器映射URL看起来非常天真,并且也没有扩展。让配置在那里,只有在你真正需要改变时才改变它们。

我的建议是创建一个处理所有这些请求的servlet。例如,您可以将项目信息保存在数据存储区或文件系统上(即用户上传的图像等)。下次应用程序收到GET请求以获取项目的已保存信息时,servlet应该能够引用与URL上的项目ID关联的数据库上的项目。如果您不希望在数据库中公开项目ID /代理键,您还可以通过实现自己的逻辑在它们之间进行简单映射。如果您希望使用框架,像Spring MVC这样的框架可以很好地将URL映射到这样的资源。

此外,为了最大限度地减少对同一项目的请求数量,您还可以通过在用户发出第一个GET请求时指示您的Web服务器来实现HTTP缓存策略(即ETAG,If-Modified-Since)。 / p>