서브렛 3.0(모음)

7568 단어 Webxmljspservletjpa
서브렛 3.0 게시자로 먼저 보기: IT168
[내용 내비게이션]
* 1페이지: 서브렛 3.0 새로운 기능 개요
* 페이지 2: 서브렛의 주석
* 3페이지: 메타데이터 및 일반 주석
* 4페이지: 웹 프레임용 플러그 가능
* 5페이지: 서브렛의 비동기 처리
* 6페이지: 기존 API의 개선 사항 및 요약
    *
모두 펼치기
2. 서브렛의 주석
서브렛 3.0의 주요 혁신 중 하나는 지원 주석입니다.주석을 사용하여 서브렛과 필터를 정의하면 웹 배치 설명자 (웹.xml) 에 서브렛/필터 항목을 만들 필요가 없습니다.
  @WebServlet
웹 응용 프로그램에서 서브렛 구성 요소를 정의하려면 @Web서브렛을 사용할 수 있습니다.우리는 그것을 계승류javax에 사용할 수 있습니다.servlet.http.Http서브렛의 클래스입니다.주석 @WebServlet에는 여러 속성이 있습니다.예를 들어 name, urlPatterns 및 initParams를 사용하여 서브렛의 동작을 정의할 수 있습니다.url 모드에 대해 우리는 주석 자체를 규정하거나 주석의 속성을 규정해야 한다.
@WebServlet을 사용하여 다음과 같이 간단한 서브렛을 정의할 수 있습니다.
@WebServlet(name = "GetQuoteServlet",  urlPatterns = {"/getquote"} )
public class GetQuoteServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        try {
            String symbol = request.getParameter("symbol");
            out.println("<h1>Stock Price is</h1>" + StockQuoteBean.getPrice(symbol);
        } finally {
            out.close();
        }
    }
}

public class StockQuoteBean {
private StockQuoteServiceEntity serviceEntity = new StockQuoteServiceEntity();
    public double getPrice(String symbol) {
        if(symbol !=null )  {
return serviceEntity.getPrice(symbol);
         } else {
            return 0.0;
        }
    }
}

          Servlet,              url   。
@WebServlet(name = "GetQuoteServlet",  urlPatterns = {"/getquote",  "/stockquote"} )
public class GetQuoteServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        try {
            String symbol = request.getParameter("symbol");
            out.println("<h1>Stock Price is</h1>" + StockQuoteBean.getPrice(symbol);
        } finally {
            out.close();
        }
    }
}

  @WebFilter
주석 @WebFilter를 사용하여 필터를 정의할 수 있습니다.이 주석에는 선택할 수 있는 매개 변수도 있다.우리는 어떤 것에서든javax를 실현할 수 있다.servlet.Filter 인터페이스의 클래스에 @WebFilter를 사용합니다.@WebServlet 주석과 유사합니다. 이 주석에 url 모드를 지정해야 합니다.
@WebFilter(filterName = "AuthenticateFilter", urlPatterns = {"/stock.jsp", "/getquote"})
public class AuthenticateFilter implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain)     throws IOException, ServletException {
        String username = ((HttpServletRequest) request).getParameter("uname");
        String password = ((HttpServletRequest) request).getParameter("password");
          if (username == null || password == null) {
                 ((HttpServletResponse) response).sendRedirect("index.jsp");            }
if (username.equals("admin") && password.equals("admin")) {
                chain.doFilter(request, response);      }
else {
                ((HttpServletResponse) response).sendRedirect("index.jsp");         }
         }

    public void destroy() {
    }
    public void init(FilterConfig filterConfig) {
    }
}

  @WebInitParam

          @WebInitParam init     Servlet     。  ,         @WebFilter @WebServlet  initParam     init  。
@WebServlet(name = "GetQuoteServlet", urlPatterns = {"/getquote"})
@WebInitParam(name = "default_market", value = "NASDAQ")
public class GetQuoteServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String market = getInitParameter("default_market");
            String symbol = request.getParameter("symbol");
            out.println("<h1>Stock Price in " + market + " is</h1>" + StockQuoteBean.getPrice(symbol, market));
        } finally {
            out.close();
        }
    }
}

다음은 @WebInitParam 주석을 @WebServlet 및 @WebFilter initParams 속성의 일부로 사용하는 예입니다.
@WebServlet(name = "GetQuoteServlet",
            urlPatterns = {"/getquote"},
            initParams={@WebInitParam(name="default_market",  value="NASDAQ")}
           )
public class GetQuoteServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String market = getInitParameter("default_market");
            String symbol = request.getParameter("symbol");
            out.println("<h1>Stock Price in " + market + " is</h1>" + StockQuoteBean.getPrice(symbol, market));
        } finally {
            out.close();
        }
    }
}

  @WebListener
우리는 @WebListener를 웹 응용 프로그램의 상하문에 있는 각종 웹 응용 이벤트의 감청기 클래스로 사용할 수 있습니다.@Web Listener를 사용하여 Servlet Context Listener, Servlet Context Attribute Listener, Servlet Request Listener, Servlet Request Attribute Listener, Http Session Listener, Http Session Attribute Listener의 종류를 표시할 수 있습니다.다음은 서브렛ContextListener를 사용한 예입니다.
@WebListener
public class QuoteServletContextListener implements ServletContextListener {
   public void contextInitialized(ServletContextEvent sce) {
   ServletContext context = sce.getServletContext();
context.setInitParameter(“default_market”, “NASDAQ”);
}
public void contextDestroyed(ServletContextEvent sce) {
}
}

  @MultipartConfig
주석 @MultipartConfig을 사용하여 서브렛의 여러 부분으로 구성된 MIME 유형 요청을 지정할 수 있습니다.MIME 첨부 파일은 요청된 객체에서 읽습니다.
3. 메타데이터 및 일반 주석
서브렛 3.0은 위에서 설명한 서브렛별 주석 외에도 JSR 175(Java 메타데이터 사양) 및 JSR 250(Java 플랫폼에서 일반적으로 사용되는 주석)으로 정의된 주석의 일부를 지원합니다.
* @DeclareRoles 및 @RolesAllowed 등의 보안 관련 참고 사항
*@EJB 및 @EJBs와 같은 EJB 주석 사용
*@resource 및 @Resources와 같은 리소스 주입에 대한 참고 사항
*@PersistenceContext, @PersistenceContexts, @PersistenceUnit 및 @PersistenceUnits와 같은 JPA 주석 사용
*@PostConstruct 및 @PreDestroy와 같은 라이프 사이클 주석
* @WebServiceRef 및 @WebServiceRefs와 같은 웹 서비스 인덱스에 대한 참고 사항 제공
4. 주석이냐, 웹이냐.xml?
주석의 도입으로 웹 배치 설명자 (웹.xml) 는 웹 구성 요소를 설정할 때 선택할 수 있으며, 강제적이지 않습니다.단, 설정을 수정하거나 업데이트해야 한다면, 배치 설명서를 사용할 수도 있습니다.용기는 설명자에 따라 웹입니다.xml의 metadata-complete 요소의 값으로 웹을 사용합니다.xml 또는 주석입니다.만약 이 속성의 값이true라면 용기는 주석과 웹 세션을 처리하지 않습니다.배치 설명자는 모든 메타데이터 정보의 유일한 출처입니다.이 요소가 metadata-complete에 존재하지 않거나true가 되지 않을 때만 용기가 주석과 웹 세션을 처리합니다.

좋은 웹페이지 즐겨찾기