springMvc+페이지 정적 화+tomcat+nginx

프로젝트 배경:SpringMvc+tomcat 배치
기대 변경:프로젝트 를 정적 으로 만 들 고 이 부분 을 정적 으로 만 든 html 를 nginx 로 사용 합 니 다.
문제:nginx 루트 디 렉 터 리 에 html 파일 을 설치 하면 직접 사용 할 수 있다 는 것 을 알 고 있 습 니 다.http://xxx/productList/a.html
근 데 보통 저희 가 spring Mvc 를 사용 하면 이렇게 url 을 구성 해 요. http://xxx/productList/a   html
해결:
이 페이지 의 정적 화 는 더 이상 말 하지 않 겠 습 니 다.주로 nginx 를 말 합 니 다.
//주로 아래 규칙
    location ~ ^/productList/[\w|-]+$ {
            rewrite ^/productList/([\w|-]+)$ /productList/$1.html last;
        } 
얼굴 위의 규칙 은 rewrite 를 사용 하여 html 로 전송 하 는 것 입 니 다.
정칙 을 설명 하 다:이전에 정칙 을 배 우 는 것 은 매우 골 치 아 팠 고 늘 기억 하지 못 해서 극단 으로 갔다.정칙 규칙 을 매일 외 웠 는데 지금 은 정칙 을 쓰 는 것 과 정칙 을 읽 는 것 이 매우 쉬 워 졌 다 는 것 을 알 게 되 었 다.
 정말 익숙 하면 요령 이 생 긴 다.
정규 안에 1 달러,2 달러,3 달러 이런 게 생 긴 다 는 뜻 은 사실 간단 해 요.
^/
productList
/([\w|-]+)$
이 정규 의 미 는/productList/abd-dd 와 같은 url 과 일치 합 니 다.
그러나 괄호 안에 있 는 것 을 알 고 있 습 니까?
그 러 니까 위의 뜻 은
^/
productList
/
$1
$  
아래 의 예 를 보십시오.
^/
p
(ro)
duct
(List)
/
([\w|-]+)
$  ^/p$1duct$2/$3$  
또는 이렇게 이해$1=po$2=List$3=[\w|-]+
그러면$1,$2...............................................................
그것 은 때때로 괄호 가 필요 하지만$1$2 와 일치 하 는 것 을 알 아내 고 싶 지 않 습 니 다.그러면 어떻게 합 니까?일치 하지만 필터 결과 로 사용 되 지 않 습 니 다.
^/
p
(?:ro)
duct
(List)
/
([\w|-]+)
$  ^/p(?:ro)duct$1/$2$  
우리 가 정규 와 자주 접촉 하지 않 고 사용 하고 싶 지만 만 날 때마다 무 서운 사람 에 게 는 정규 의 혜택 을 외 우 는 데 시간 이 좀 걸린다. 
html 정적 화 방안 을 꺼 내 서 참고 하도록 하 겠 습 니 다.
public class HtmlGenerator {
    /**               */
    public static boolean createUTF8HtmlPage(String url,String htmlFileName){
        String statusCode="";
        String returnResponse;
        //    HttpClient         
        HttpClient httpClient = HttpClientBuilder.create().build();
        //  GET     
        HttpGet get = new HttpGet(url);
        //  Get             ,            
        get.addHeader("Content-type", "text/html;charset=UTF-8");
        RequestConfig requestConfig = RequestConfig.custom()
                .setSocketTimeout(12000).setConnectTimeout(12000).build();//           
        get.setConfig(requestConfig);
        HttpResponse response;
        try{
            response = httpClient.execute(get);
            HttpEntity entity = response.getEntity();
            returnResponse = EntityUtils.toString(entity);
            statusCode = response.getStatusLine().getStatusCode()+"";
            if(!"200".equals(statusCode)){//   200
                System.out.println("    :" + returnResponse.length() + "     :" + response.getStatusLine());
            }else{
                //            HTML   ,    HTML  
                FileHelper.fastWriteFileUTF8(htmlFileName,returnResponse);
            }
            EntityUtils.consume(entity);
        } catch (ClientProtocolException e) {
            statusCode="ClientProtocolException";
            e.printStackTrace();
        } catch (IOException e) {
            statusCode="IOException";
            e.printStackTrace();
        }catch (Exception e) {
            statusCode="Exception";
            e.printStackTrace();
        } finally {
            get.releaseConnection();
            get.abort();
        }
        return "200".equals(statusCode);
    }

좋은 웹페이지 즐겨찾기