J2EE 1.4 새로운 기능 의 Servlet 2.4 새로운 기능
1.XML Schema 정의 웹 조회 배치 설명 파일
Servlet 2.3 이전 버 전 은 DTD 를 배치 설명 파일 로 정의 하 였 으 며,웹.xml 의 형식 은 다음 과 같 습 니 다.
<?xml version="1.0" encoding="IS0-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//sunMicrosystems,Inc.//DTD WebApplication 2.3f//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.3.dtd">
<web-app>
.......
</web-app>
Servlet 2.4 버 전 은 처음으로 XML Schema 정 의 를 배치 설명 파일 로 사용 하여 웹 용기 가 웹.xml 문법 을 쉽게 검사 할 수 있 도록 합 니 다.또한 XML Schema 는 더 좋 은 확장 성 을 제공 합 니 다.웹.xml 의 형식 은 다음 과 같 습 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:workflow="http://www.workflow.com"
xmins:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
.........
</web-app>
위 에 두 버 전의 시작 줄 에 차이 가 있 지만 Servlet 2.4 버 전의 프로그램 웹.xml 에서 웹 구성 요소 의 설정 방법 은 Servlet 2.3 버 전과 대체적으로 같다.
2,Servlet 요청 모니터
Servlet 2.4 버 전 은 이벤트 감청 기 에 ServletRequest 감청 기 를 추 가 했 습 니 다.이 는 ServletRequestListener,ServletRequestAttributeListener 와 다른 관련 종 류 를 포함 합 니 다.이 종 류 는 ServletRequest 동작 과 관련 된 이 벤트 를 관리 하고 제어 할 수 있 습 니 다.다음 프로그램 은 전형 적 인 ServletRequest 모니터 의 구 조 를 보 여 줍 니 다.
import javax.setvlet.ServletContext;
import javax.servlet.ServletRequestListener;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.http.HttpServletRequest;
import iava.io.*;
import java.util.Locale;
public final class RequestListener implements SerVletRequestListener,
ServletRequestAttributeListener,ServletContextListener{
........
public void requestlnitialized(javax.servlet.ServletRequestEvent event){
........
}
public void attributeAdded(javax.servlet.ServletRequestAttributeEvent event){
........
}
public void attributeRemoved(javax.servlet.ServletRequestAttributeEvent event){
........
}
public void attributeReplaced(javax.servlet.ServletRequestAttributeEvent event){
........
}
public void attributeDestroyed(javax.servlet.ServletRequestAttributeEvent event){
........
}
}
3.디 스 패 치 변경 요청
Servlet 2.4 버 전의 웹 프로그램 은 filter 와 request dispatcher 의 결합 기능 을 강화 하여 필 터 는 요청 배포 기(request dispatcher)가 사용 하 는 방법 에 따라 웹 요청 을 조건 부 로 걸 러 낼 수 있 습 니 다.프로 그래 밍 자 는 웹.xml 에서 요 소 를 사용 하여 필터 역할 의 조건 을 설정 할 수 있 습 니 다(아래 그림 1).
그림 1 요소 설정 필터
·request 가 직접 클 라 이언 트 에서 와 야 필터 가 유효 하 며 REQUEST 조건 에 대응 합 니 다.
·request 가 하나의 요청 배포 기 에 forward()방법 으로 웹 구성 요소 로 전 환 될 때 만(사용 또는 정의)FORWARD 조건 이 라 고 합 니 다.
·유사 하 게 request 가 하나의 요청 배포 기 에 include()방법 으로 웹 구성 요소 로 전 환 될 때(사용 또는 정의)만 INCLUDE 조건 이 라 고 합 니 다.
·request 가 하나의 요청 배포 기 에 의 해'오류 정보 페이지'메커니즘 을 사용 하여 웹 구성 요소 로 전 환 될 때 만 ERROR 조건 이 라 고 합 니 다.
·다섯 번 째 필터 역할 의 조건 은 위의 네 가지 조건 의 조합 일 수 있다.
다음 프로그램 에 서 는 클 라 이언 트 요청/icsamples/*스타일 의 URL 을 정의 할 때 Security Filter 가 요청 을 걸 러 내 는 데 사 용 됩 니 다.그러나 URL 이/icsamples/*인 웹 구성 요소 에 대한 요청 이 request dispatcher 에서 전 송 된 경우 이 필 터 는 작 동 하지 않 습 니 다.
<filter-mapping>
<filter-name>Security Filter</filter-name>
<url-pattern>/icsamples/*</url-pattern>
</filter-mapping>
아래 프로그램 설정 을 사용 하면 INCLUDE 를 추가 합 니 다.Security Filter 는 RequestRecorder Servlet 을 포함 한 request dispatcher 에서 include()방법 을 사용 할 때 만 작 동 합 니 다.다른 경우(예 를 들 어 고객 에 게 직접 보 내 달라 고 요청 하거나 request dispatcher 가 forward 방법 을 사용 하 는 경우)Security Filter 는 작 동 하지 않 습 니 다.
<filter-mapping>
<fliter-name>Security Filter</filter-name>
<servlet-name>RequestRecorderServlet</servlet-name>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
다음 프로그램 설정 은 security Filter 를 정의 합 니 다.request 는 고객 이 직접 보 내 거나 request 합 니 다.
dispatcher 는 forward 방법 을 사용 할 때 일 할 수 있 습 니 다.
<filter-mapping>
<filter-name>Security Filter</filter-name>
<url-pattern>/icsamples/*</uri-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
프로그램 예 6 은 그 중에서 사용 하 는 예 를 보 여 줍 니 다.프로그램 7 이 정의 하 는 ReqDispatcher Servlet 은 사용자 가 요청 한 인자'type'에 따라 요청 을 어떻게 처리 할 지 결정 합 니 다.이 중 두 개의 RequestDispatcher(rd,rd2)를 사 용 했 습 니 다.URL 이/admin 또는/control 인 servlet 에 요청 을 전달 할 수 있 습 니 다.요청 이 전송 되면 적당 한 필터 가 작 동 합 니 다.필터 와 웹 자원 의 관 계 는 웹.xml 에서 정의 할 수 있 습 니 다.사용자 가 입력 한 웹 요청 인자 가"INCLUDE"이면 ReqDispatcher Servlet 의 RequestDispatcher 는 include 방법 을 호출 합 니 다.그러면 Dispatcher FilterIcd 는 INCLUDE 를 정의 하기 때문에 사 용 됩 니 다.사용자 가 입력 한 웹 요청 인자 가"ERROR"ReqDispatcher Servlet 이면 resp.senderror()방법 을 호출 합 니 다.그러면 Dispatcher FilterErr 는 ERROR 를 정의 하기 때문에 사 용 됩 니 다.
예 6:
<filter-mapping>
<filter-name>DispatcherFilterIcd</filter-name>
<url-pattern>/admin</url-pattern>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>DispatcherFilterErr</filter-name>
<url-pattern>/errorpage</url-pattern>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
예 7:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class ReqDispatcherServlet extends HttpServlet
{
String dispatchtype;
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
public void service(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException
{
PrintWriter out=resp.getWriter();
String type="NONE";
if((req.getParameter("type"))!=null)
{
type = req.getParameter("type");
}
resp.setContentType("text/html");
out.println("<HTML>");
out.println("<BODY>");
out.println("<HR>");
out.println("<p>");
out.println("ReqDispacherServelt");
out.println("</P><p>");
out.println("ServerName:"+req.getServerName()+"ServerPort:"+
req.getServerPort());
out.println("</p>");
RequestDispatcher rd=req.getRequestDispatcher("/admin");
RequestDispatcher rd2=req.getRequestDispatcher("/control");
if(type.equals("REQUEST"))
{
}
if(type.equals("FORWARD"))
{
rd.forward(reg,resp);
}
if(type.equals("INCLUDE"))
{
rd.include(req,resp);
}
if(type.equals("ERROR"))
{
resp.sendError(404,"Error from ReqDispacherServlet");
}
if(type.equals("CONTROL"))
{
rd2.forward(req,resp);
}
out.flush();
}
public voiddestroy()
{
System.out.println("ReqDispacherServlet:destroy()");
}
}
4.국제 화 기능 강화
Servlet 2.4 는 웹 프로그램의 국제 화 기능 을 추 가 했 고 웹.xml 에서 사이트 의 문자 인 코딩 방식 을 정의 할 수 있다.
<locale-encoding-mapping-list>
<locale-encoding-mapping>
<locale>zh</locale>
<encoding>gb2312</encoding>
</locale-encoding-mapping>
</locale-encoding-mapping-list>
클 라 이언 트 가 특정 언어의 웹 자원 을 요청 할 때 servlet 프로그램 은 ServletResponse 인터페이스의 set Locale 방법 을 통 해 웹 응답 언어 속성 을 설정 합 니 다.
5.로그 인/로그아웃 기능
Servlet 2.4 에 logout 과 login 방법 을 추가 하여 안전 관 리 를 편리 하 게 합 니 다.여러분 은 Servlet 2.4 의 API 를 참고 하여 그 용법 을 볼 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.