작은 바퀴 하나. - express 를 모방 한 자바 서버.
2212 단어 Webjettyexpress.java
물론 가장 많이 사용 되 는 해결 방안 은 자바 로 웹 백 엔 드 를 쓰 는 것 이다.그러나 이렇게 해결 하 는 것 은 너무 무 겁 습 니 다. 대부분의 시간 을 웹 설정 에 써 야 합 니 다. 마지막 으로 하나의 용 기 를 사용 하여 시작 해 야 합 니 다. 프로그램 프로 세 스 도 제 가 제어 할 수 없습니다.
사실 JMX 의 제어 방식 을 좋아 하 는데 다른 언어 로 연결 하 는 것 은 비용 이 좀 비싸다.그래서 JMX 방식 대로 웹 서버 를 쓰 고 응용 프로그램 에 삽입 하려 고 합 니 다.Jetty 를 직접 사용 하면 너무 원생 태 적 입 니 다. URL 경로 / 매개 변수 맵 과 전환 은 항상 해 야 합 니 다. 그래서 express 의 문법 을 참고 하여 아주 작은 웹 프레임 워 크 express. 자바 가 있 습 니 다.
원래 야심 차게 netty 로 직접 써 야 하 는데 나중에 어색 한 점 을 만 났 습 니 다. 자신 이 HttpMessage 류 를 쓰 면 API 를 디자인 하 는 것 이 번 거 롭 고 디자인 을 잘 하 는 데 시간 이 필요 합 니 다.HttpServletRequest / Response 를 다시 사용 하려 면 실현 하기 가 너무 힘 듭 니 다.그래서 제 티 로 직접 썼 고 바퀴 를 다시 만 들 지 않 았 어 요.
웹 프레임 워 크 는 이미 한우충동 의 지경 에 이 르 렀 기 때문에 누구 와 도 비교 하고 싶 지 않 고 자신의 요 구 를 완성 하면 충분 하 다.이 물건 은 servlet 규범 (HttpServletRequest / Response 두 대상 이 servlet 3.0 기반) 을 지원 하지 않 습 니 다. 간단 한 것 을 원 합 니 다.
이 웹 서버 는 프로그램 내 에서 시작 하여
UrlRouter
로 경 로 를 완성 하고 해당 하 는 Controller
로 이동 할 수 있 습 니 다.비교적 큰 특징 은 동적 으로 컨트롤 러 와 맵 을 추가 하 는 것 을 지원 하 는 것 으로 새로 추가 하 는 데 매우 편리 하 다.예 를 들 어 저 는 service 에 상태 가 있 습 니 다 count
. 그러면 저 는 이렇게 쓸 수 있 습 니 다.
public class ServiceMonitor {
private int count;
private WebServer webServer;
public ServiceMonitor(WebServer webServer) {
this.webServer = webServer;
monitor();
}
private void monitor() {
webServer.get("/service/count", new AjaxController() {
@Override
public Object ajax(ParamMap params) {
return ResultMap.create().put("count", count);
}
});
}
public static void main(String[] args) throws Exception {
WebServer server = WebServer.jettyServer().port(8080);
ServiceMonitor serviceMonitor = new ServiceMonitor(server);
server.start();
for (int i = 0; i < 1000; i++) {
serviceMonitor.count = i;
Thread.sleep(1000);
}
}
}
물론 이렇게 분산 식 분 배 는 url 의 관리 문 제 를 가 져 올 수 있 지만 작은 프로젝트 는 더욱 편리 할 것 입 니 다.이 걸 로 웹 애플 리 케 이 션 을 쓸 생각 은 없 었 기 때문에 현재 의 포 지 셔 닝 은 이 렇 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.