前提・実現したいこと
URLで以下のように指定がある場合に項目ごとに変数に入れたい。(1つしかないものはListではなくStringやint、booleanに格納する)
例
http://xxx.jp/a1/b2/c3/d4-e5/f6
aはString
bはboolean
cとd-e、fはList<String>とします。
xxx.jpまではサーバルート情報で同じなのでそれ以降が必要となるため
httpServletRequestのgetRequestURIを使用して
/a/b/c/d-e/f
を取得し、/で分割を行いパラメータのチェックおよび変数への格納を行います。
該当のソースコード
Java
1public boolean test(HttpServletRequest request, HttpServletResponse response) { 2 String resultA = ""; 3 boolean resultB = false; 4 List<String> resultC = new ArrayList<>(); 5 List<String> resultD = new ArrayList<>(); 6 List<String> resultF = new ArrayList<>(); 7 //URI部分の取得 8 String uri = request.getRequestURI(); //ここで/a/b/c/d-e/fが取得できている。 9 //「/」で分割する。 10 String[] uriAry = uri.split("/"); 11 //URIの先頭が「/」であり1つめは必ず空白になるためループは1から回す。 12 for (int i = 1; i < uriAry.length; i++) { 13 if (uriAry[i].startsWith("a")) { 14 resultA = uriAry[i].substring(uriAry[i].indexOf("a") + 1); 15 } 16 if (uriAry[i].startsWith("b")) { 17 resultB = uriAry[i].substring(uriAry[i].indexOf("b") + 1); 18 } 19 if (uriAry[i].startsWith("c")) { 20 resultC.add(uriAry[i].substring(uriAry[i].indexOf("c") + 1)); 21 } 22 if (uriAry[i].startsWith("d")) { 23 resultD.add(uriAry[i].substring(uriAry[i].indexOf("d") + 1)); 24 25 } 26 if (uriAry[i].startsWith("f")) { 27 resultF.add(uriAry[i].substring(uriAry[i].indexOf("f") + 1)); 28 29 } 30 } 31}
###問題点、悩み
別クラスからこのURLのパラメータ取得だけを行いたい場合にメインメソッドではなく別メソッドに出しておかないといけないかと思います。
その際にまとめて行い、1つの変数にしてreturnする方法なども知れたらと思います。
補足情報(FW/ツールのバージョンなど)
Java8、Spring
回答2件
あなたの回答
tips
プレビュー