こんにちは。
現在、サイト内検索の機能を作成しており、自ページを含めて、htmlソースそのものを取得しようとしています。
しかし、JAVAのopenStream()で処理が終了しません。
掲載したコードURLをyahooなどに変更すると動作するため、自ページの読み込みがうまくいかないのかと考えています。
※検索処理は省略しています。
<デバックで確認>
F6でステップ実行:openStream()で処理が止まる。
F8で実行(※openStream()の前後にブレーク):何回もクラスが実行される。
※localhostは待ち状態。
環境
JAVA 1.8.0_241
Eclipse 4.4.2
Struts 1
Tomcat 8
Windows 8.1
プロジェクト名:test
JAVA
1package hoge; 2 3import java.io.BufferedReader; 4import java.io.InputStream; 5import java.io.InputStreamReader; 6import java.net.URL; 7import java.util.ArrayList; 8import java.util.List; 9 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12 13import org.apache.struts.action.Action; 14import org.apache.struts.action.ActionForm; 15import org.apache.struts.action.ActionForward; 16import org.apache.struts.action.ActionMapping; 17 18public class Search extends Action { 19 20 @Override 21 public ActionForward execute(ActionMapping mapping, ActionForm form, 22 HttpServletRequest request, HttpServletResponse response) 23 throws Exception { 24 25 String line; 26 BufferedReader br = null; 27 InputStreamReader isr = null; 28 29 List<URL> list = new ArrayList<URL>(); 30 list.add(new URL("http://localhost:8080/test/Search.do")); 31 32 for (URL url : list) { 33 // InputStreamをUTF8のInputStreamReader(文字ストリーム)に変換する 34 InputStream is = url.openStream(); 35 isr = new InputStreamReader(is, "UTF-8"); 36 br = new BufferedReader(isr); 37 38 // 1行ずつ 39 while ((line = br.readLine()) != null) { 40 System.out.println(line); 41 } 42 } 43 // フォーワード 44 return mapping.findForward("success"); 45 46 } 47 48}
JSP
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<head> 4</head> 5<body> 6 <form action="/test/Search.do" method="GET"> 7 <input id="search-input" name="searchkey" property="searchkey" type="text"> 8 <input id="search-button" type="submit" value=検索"> 9 </form> 10</body> 11</html>
strutsconfig
1<?xml version="1.0" encoding="UTF-8" ?> 2<!DOCTYPE struts-config PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" 4 "http://struts.apache.org/dtds/struts-config_1_3.dtd"> 5 6<struts-config> 7 <!-- フォームビーン --> 8 <form-beans> 9 <form-bean name="Bean" type="hoge.Bean"/> 10 </form-beans> 11 12 <!-- アクションマッピング --> 13 <action-mappings> 14 <action path="/Search" type="hoge.Search" scope="request" name="Bean"> 15 <forward name="success" path="/pages/Search.jsp" /> 16 </action> 17 </action-mappings> 18 19 <!-- メッセージ --> 20 <message-resources parameter="MessageResources" /> 21 22 <!-- プラグイン --> 23 <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> 24 <set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml, /WEB-INF/validation.xml"/> 25 </plug-in> 26 27</struts-config>
あなたの回答
tips
プレビュー