학원/JSP

12/05 57-3 [JSP] Error + 스크랩핑(이건 천천히 정리)

도원결의 2022. 12. 6. 00:51

JSP 마지막 작업

에러처리하는 방법

error15 폴더생성

ErrorIndex.jsp 생성

방법1. try~catch

try{
    //파라미터로 받은 문자열의 길이 출력, 파라미터 안넘기면 에러남
    out.println("HTTP 메소드:"+request.getMethod());
    out.println("파라미터의 문자열 길이:"+request.getParameter("name").length());
}
 catch(NullPointerException e ){
    out.println("<h2>관리자에게 문의하세요</h2>");
    return;
 }

 

방법2. page지시어 속성 이용(이건 전에 한거라 패쓰)
방법3. web.xml의 설정으로 예외처리- 전역설정으로 페이지마다 설정 불필요
즉, web.xml에 설정만 하면 모든 .jsp혹은 서블릿에서 적용된다.
근데 이건 개발 다 끝나고 적용하는게 좋음 왜냐면 디테일한 오류정보를 알 수 없기 때문!!!

 

여기서도 방법이 2가지가 나옴

 3-1. 코드로 예외처리

 3-2.클래스로 예외처리

 

 

3-1 코드로처리

 web.xml로 가서

<error-page>
  <error-code>500</error-code>
  <location>/error15/ErrorCode.jsp</location>
</error-page>

추가

ErrorCode.jsp생성

<h2>관리자에게 문의하세요</h2>
<h3>Request Scope:${requestScope.requestVar}</h3>

 

3-2예외클래스로 처리

 web.xml로 가서

<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/error15/ErrorType.jsp</location>
</error-page>

추가

ErrorType.jsp생성

<h2>관리자에게 문의하세요</h2>
<h3>Request Scope:${requestScope.requestVar}</h3>

 

뽀너스!!!

스크래핑!!!!

 

jsoup16폴더

jsoup.org->download -> jsoup-1.15.3.jar core library 다운받아서

여기다 두기!!!

  <div class="jumbotron bg-info">
    <h1>자바로 웹 스크래핑하기</h1>
</div>
<fieldset class=" form-group border p-3">
    <legend class="w-auto px-3">https://jsoup.org</legend>
    <%
    Document doc = Jsoup.connect("https://en.widipedia.org/").get();
    out.println("<h3>"+doc.title()+"</h3>");

    Elements newsHeadlines = doc.select("mp-itn b a");
    out.println("<ul class='list-unstyled'>");
    for(Element headline : newsHeadlines){
        out.println(String.format("<li><a href='%s'>%s</a></li>",headline.absUrl("hrdf"),headline.attr("title")));
    }
    out.println("</ul>");
    %>
</fieldset>

도큐먼트는 저거로 임포트 해야함!!!

아.... 나머지 정리는 그냥 주말에... 어차피 이건 보너스니....

<fieldset class=" form-group border p-3">
    <legend class="w-auto px-3">네이버 영화.랭킹 스크랩핑 하기(조회순)</legend>
    <%
        doc = Jsoup.connect("https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=cur&date=20221204").get();
        System.out.println(doc.html());
        //영화 제목 스크래핑
        //css선택자 이용시
//		Elements movieTitles = doc.select("#old_content > table > tbody > tr > td.title > div > a");
        //xpath 이용시
        Elements movieTitles=doc.selectXpath("//*[@id=\"old_content\"]/table/tbody/tr/td[2]/div/a");
        out.println("<h3>스크래핑한 영화 제목 수:"+movieTitles.size()+"</h3>");
        out.println("<ul class='list-unstyled'>");
        int rank=1;	
        for(Element movieTitle:movieTitles){
            //out.println(String.format("<li>%s</li>",movieTitle.html()));
            out.println(String.format("<li><span class='badge badge-danger'>%s</span>%s<a href=''>%s</a></li>",rank++,movieTitle.absUrl("HTML"),movieTitle.attr("title")));
        }				
        out.println("</ul>");

    %>
</fieldset>