12/05 57-3 [JSP] Error + 스크랩핑(이건 천천히 정리)
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>