JSP怎么生成“动态URL”?

发布于 2022-09-01 12:27:35 字数 379 浏览 14 评论 0

也不知道“动态URL”这种叫法对不对,反正这样的需求也还不会描述。

需求如下:
譬如 http://segmentfault.com/q/1010000002910984 这样的URL,URL中的一串数字(1010000002910984)对应一个问题详情页面,我们暂且认为这也是数据库中的ID,那在JSP怎么达到这样的效果?即,数据库里有很多条数据,以ID标识,希望就是通过一个包含记录的ID的URL来到达详情页面,使用的是JSP技术。其实这样的做法在很多网站都实现了。
现在在下能做到的程度只是一个个JSP页面跳转(每个页面都是写好了的),自己道行不够深,还没想到怎么实现这样的需求。

希望大神指点,先谢谢了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无法言说的痛 2022-09-08 12:27:35

JSP就是servlet,比较好的方案写一个servlet来统一调度请求,起一个路由的作用。比如SpringMVC的入口是DispatcherServlet。
下面根据答主的问题进行回答,当然我的方式并不是最好的。
比如 http://segmentfault.com/q/1010000002910984,使用一个servlet处理所有的http://segmentfault.com/q/下的请求

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Created by reeco_000 on 2015/6/16.
 */
@WebServlet(name = "URLServlet",urlPatterns = "/q/*")
public class URLServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取请求的地址
        String id = request.getRequestURI();

        //do something
    }
}
不打扰别人 2022-09-08 12:27:35

其实这个应该不是jsp来做的事,通过在web服务器中用过url rewrite轻松就可以搞定。nginx apache 都支持。tomcat 通过一个叫 UrlRewriteFilter filter在 web.xml 配置一下即可。

暮年慕年 2022-09-08 12:27:35

@netingcn 的回答感觉差不多啊,服务器来做这件事完全可以吧?
如果你坚持java web后台实现,那么设置一个filter来过滤所有的jsp页面请求,改变URI到对应页面即可。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文