2017-04-14 56 views
0

我一直在练习java Servlets。我可以从数据库中设置urlPattern吗?Java Servlets从数据库中设置urlPattern

@WebServlet(名称= “PatternServlet”,URL模式= “/图案”)

下列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 
    } 
} 

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

回答

0

我希望我能正确理解你的问题。首先,一旦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,但是我希望这可以说明你是如何做到的e servlet从数据库中提取东西。

+0

使用通配符我也可以使URL地址动态。谢谢) – user7244716