2017-04-14 1 views
0

저는 자바 서블릿을 연습 해 왔습니다. 데이터베이스에서 urlPattern을 설정할 수 있습니까?자바 서블릿은 데이터베이스에서 urlPattern을 설정합니다.

@WebServlet (이름 = "PatternServlet", urlPatterns의 = "/ 패턴")

다음 서블릿 포스트 그레스에서 정보를 얻고 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

귀하의 질문을 올바르게 이해하시기 바랍니다. 먼저 urlPattern은 일단 서블릿이 생성되면 정적입니다. 시작시 이름을 붙이기 위해 멋진 것들을 사용할 수 있지만 일단 설정하면 변경할 수 없습니다.

하지만 당신은

내가 코드를 테스트하지 않았고 더 나은 방법이 와일드 카드

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

다음

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 데이터베이스에서 물건을 가져 오는 서블릿.

+0

와일드 카드를 사용하면 URL 주소도 동적으로 만들 수 있습니다. 고맙습니다) – user7244716

관련 문제