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 从数据库中获取内容。
我一直在练习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/*")
使用
调用您的 servlethttp://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 从数据库中获取内容。