2017-04-14 10 views
0

私はjavaサーブレットを練習しています。データベースからurlPatternを設定できますか?JavaサーブレットはデータベースからurlPatternを設定しました

@WebServlet(名= "PatternServlet"、urlPatternsの= "/パターン")

次のサーブレットはPostgresから情報を取得するHTMLページを作成するので、コンテンツが動的です。ただし、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

私はあなたの質問を正しく理解することを願っています。まず、サーブレットが作成されると、urlPatternsは静的です。いくつかの派手なものを使って起動時に名前を付けることができますが、一度設定すると変更することはできません。

しかし、あなたは、私は、コードをテストしていないとのより良い方法がある

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 
} 

でサーブレットを呼び出し、ワイルドカード

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

を使用することができますあなたが必要とするdbRefを取得しますが、私はこれがあなたがeサーブレットはデータベースから内容を取得します。

+0

ワイルドカードを使用すると、URLアドレスも動的にすることができます。ありがとうございました) – user7244716

関連する問題