서브렛 3.0(모음)
[내용 내비게이션]
* 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가 되지 않을 때만 용기가 주석과 웹 세션을 처리합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fortinet FortiWeb Web Application Firewall Policy BypassFrom: Geffrey Velasquez Date: Wed, 2 May 2012 20:33:23 -0500...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.