在Java中开发Web应用程序,在Tomcat中启动时,我需要能够在服务器中创建(动态)新的静态地址(链接,URL),用于查看新项目的信息,我们称之为new_item_001
,它只是由一个用户创建的。
说我想创建一个新地址
www.domain.com/webapp/items/new_item_001
可用于呈现new_item_001
。
这是最好的方法吗?
items
和一个html文件new_item_001
吗?我理解这个问题是错误的,我甚至不太了解这个问题,所以我想要一些关于要寻找什么的指导方针。
答案 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>