2010-01-18 2 views

답변

3

여기에서 Servlet입니다. 당신은 높은 수준으로 요청을 제어, 전처리 및 후 처리하기 위해이 도구를 사용할 수 있습니다. 쿼리 문자열을 사용하여 서블릿에 요청 특정 정보를 전달할 수 있습니다 (예 :다음과 같이 서블릿에 액세스 할 수 있습니다 http://example.com/context/servlet?name1=value1&name2=value2 :

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String name1 = request.getParameter("name1"); // Now contains "value1". 
    String name2 = request.getParameter("name2"); // Now contains "value2". 
    // Do your business thing with them. 
} 

또한 서블릿에 요청 특정 정보를 전달하는 요청의 PathInfo를 사용할 수있다,이보다 더 좋은 URL의, 예를 들어, 결과 다음과 같이 서블릿에 액세스 할 수 있습니다 http://example.com/context/servlet/value1/value2 :

<servlet> 
    <servlet-name>servlet</servlet-name> 
    <servlet-class>com.example.Servlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>servlet</servlet-name> 
    <url-pattern>/servlet/*</url-pattern> 
</servlet-mapping> 

는 JSP에서 결과를 표시하려면, 당신은 저장해야 다음과 같이 두 가지 경우 모두 Servlet에서

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String pathInfo = request.getPathInfo(); // Now contains "/value1/value2". 
    // Do your business thing with them. 
} 

web.xml에 매핑 물론입니다 데이터를 요청 범위에 저장하고 요청을 JSP로 전달하여 표시 할 수 있습니다. 예컨대 :

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String query = request.getParameter("query"); 
    List<Result> results = searchDAO.list(query); 
    request.setAttribute("results", results); 
    request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response); 
} 

여기 Result 클래스는 그냥 평범한 자바 빈즈 클래스 대략 데이터베이스 테이블의 한 행을 표현한다. JSP는 /WEB-INF에 배치되어 에서 직접 URL로 액세스하지 못하도록합니다. 물론 서블릿 만 액세스 할 수 있습니다. JSP에서 위의 예에서 results과 같은 범위가 지정된 속성에 액세스하려면 Expression Language을 사용할 수 있습니다. 또한 JSP에서 taglib을 사용하여 페이지 플로우와 출력을 제어 할 수 있습니다.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

... 

    <table> 
     <tr> 
      <th>Name</th> 
      <th>Description</th> 
     </tr> 
     <c:forEach items="${results}" var="result"> 
      <tr> 
       <td>${result.name}</td> 
       <td>${result.description}</td> 
      </tr> 
     </c:forEach> 
    </table> 

JSP/서블릿에 대한 자세한 내용은, 내가 추천 : 잘 알려진 표준 태그 라이브러리는 JSTL이 (그냥 일하러 가야 /WEB-INF/lib에서 jstl-1.2.jar 드롭), 여기에 JSP에 잘 결과를 표시하는 방법을 예입니다입니다 Marty Hall's Coreservlets.com tutorials. 데이터베이스와의 올바른 상호 작용 (DAO 패턴)에 대해 자세히 알아 보려면 this article도 유용 할 수 있습니다.

행운을 빈다.

3

예. 당신이 전달 된 인수에 따라 페이지의 표시 업데이트 GET 또는 POST 변수를 사용하여 :

/page.jsp?arg1=val1&arg2=val2 
/page.jsp?arg1=val2 

하는 것은 그 다음 page.js 코드 :

String arg1 = request.getParameter("arg"); 
String arg2 = request.getParameter("arg2"); 

if (arg1 == "val1") 
    // Do something 
if (arg2 == "val2") 
    // Do something else 
0

전쟁/WEB에서 web.xml 파일이 있습니다 -INF.

파일에 다음을 입력 할 수 있습니다.

  1. 서블릿 식별자 myApp1 정의 : 여기
    <servlet-mapping> 
        <servlet-name>myApp1</servlet-name> 
        <url-pattern>/hello/dolly</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
        <servlet-name>myApp2</servlet-name> 
        <url-pattern>/bye/bunny</url-pattern> 
    </servlet-mapping> 
    
    <servlet> 
        <servlet-name>myApp1</servlet-name> 
        <servlet-class> 
        misc.apps.enter.theDragon 
        </servlet-class> 
    </servlet> 
    <servlet> 
        <servlet-name>myApp2</servlet-name> 
        <servlet-class> 
        misc.apps.enter.theDragon 
        </servlet-class> 
    </servlet> 
    

    의 설명이다. 는 , 식별자 myApp2 들어 돌리
  2. 마찬가지로/헬로/같이 myApp1 컨텍스트 상대 URL 패턴/경로를 정의 서블릿 토끼/바이/같이
  3. 그런 동료 myApp1를 컨텍스트 상대 URL 패턴/경로를 정의 misc.apps.enter.theDragon.
  4. 뿐만 아니라 myApp1을 서블릿 misc.apps.enter.theDragon에 연결합니다. 그래서

, 지금은 두 경로

  1. /인사/돌리

는 실제로 같은 서블릿 기타/응용 프로그램을 호출 끝/인사/토끼/입력/theDragon.java

서블릿 코드 misc/apps/enter/theDragon.java 내부 코드가

01입니다.
this.requestUri = request.getRequestURI(); 
if (this.requestUri.contains("/hello/dolly")){ 
    happyRoutine(); 
else // if (this.requestUri.contains("/bye/bunny")) 
{ 
    response.redirect("whatever page"); 
} 

그러나 jsp가 아닌 JSP 서블릿이 아닌 맵핑을 원하십니까? 아래의 web.xml 항목을 살펴보면 두 URL 경로가 동일한 JSP에 매핑되는 방법에 대한 자세한 설명이 필요 없다고 확신합니다. 그런 다음 jsp 내부에서 request.getRequestURI()를 사용하여 url을 사용하여 jsp를 호출 한 다음 원하는 각 작업을 수행하는지 확인합니다.

<servlet-mapping> 
    <servlet-name>empJSP1</servlet-name> 
    <url-pattern>/hello/dolly</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>empJSP2</servlet-name> 
    <url-pattern>/bye/bunny</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>empJSP1</servlet-name> 
    <jsp-file>/employees/emp.jsp</jsp-file> 
</servlet> 
<servlet> 
    <servlet-name>empJSP2</servlet-name> 
    <jsp-file>/employees/emp.jsp</jsp-file> 
</servlet> 
관련 문제