Java Servlets 从数据库设置 urlPattern

Java Servlets set urlPattern from database

我一直在练习java Servlets。我可以从数据库设置 url 模式吗?

@WebServlet(name = "PatternServlet", urlPatterns = "/pattern")

以下 servlet 创建 html 页面从 postgres 获取信息,因此内容是动态的。但是 url 地址每次都保持不变。

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;
import java.io.PrintWriter;
import java.util.List;

@WebServlet(name = "PatternServlet", urlPatterns = "/pattern")
public class PatternServlet extends HttpServlet {
    String title;
    String content;
    List<String> headerItems;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        initializeFields();
        //Dynamically creates pages with a given information
        PageMaker pageMaker = new PageMaker(title, headerItems, out);
        pageMaker.setContent(content);
        pageMaker.makePage();
    }

    public void initializeFields(){
        //initializes field from database
    }
}

我可以做些什么来解决这个问题吗?谢谢!

希望我能正确理解你的问题。首先,一旦创建了 servlet,urlPatterns 就是静态的。您可以在启动时使用一些花哨的东西为其命名,但是一旦设置就无法更改。

但是你可以使用通配符

@WebServlet(urlPatterns = "/dbcontent/*")

使用

调用您的 servlet

http://yourserver/dbcontent/dbRef

然后

@Post
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String pathInfo = request.getPathInfo();
  String[] pathElements = pathInfo.split("/"); 
  // get last item (or whatever one you need)
  String dbRef = pathInfo[pathInfo.lenth -1];
  // check input. User could have tampered url

  // do your stuff with dbRef
}

我没有测试代码,有更好的方法来获取您需要的 dbRef,但我希望这说明了如何使用 servlet 从数据库中获取内容。