<%@ page language="java" contentType="text/html; charset=UTF-8"%> <%@ include file="/onsen/_htdocs/jsp/common/constants.jsp" %> <%@ include file="/onsen/_htdocs/jsp/common/functions.jsp" %> <%@ include file="/onsen/_htdocs/jsp/common/forward_functions.jsp" %> <%@ include file="/onsen/_htdocs/parts/terme/constants.jsp" %> <%@ include file="/onsen/_htdocs/jsp/common/common_include.jsp" %> <%@ include file="/onsen/_htdocs/jsp/bean/master/DareaMasterBean.jsp" %> <%@ include file="/onsen/_htdocs/jsp/bean/master/OareaMasterBean.jsp" %> <%@ include file="/onsen/_htdocs/jsp/bean/master/SareaMasterBean.jsp" %> <%@ include file="/onsen/_htdocs/jsp/bean/master/PrefMasterBean.jsp" %> <% logger.info("called! : " + request.getServletPath()); out.clear(); // スマホフラグ boolean isSmp = isSmpUserAgent(request); // PC強制表示の場合はスマホフラグを落とす if(isForcePcDisp(request, response)) { isSmp = false; } // 大エリアマップ DareaMasterBean dareaJsonBeanList = new DareaMasterBean(request); // 都道府県マップ PrefMasterBean prefJsonBeanList = new PrefMasterBean(request); // 温泉エリアマップ OareaMasterBean oareaJsonBeanList = new OareaMasterBean(request); // 温泉詳細エリアマップ SareaMasterBean sareaJsonBeanList = new SareaMasterBean(request); // ------------------------------- // パラメータ取得 // ------------------------------- String paramDareaAlpha = request.getParameter(PARAM_KEY_DAREA_ALPHA); String paramPrefAlpha = request.getParameter(PARAM_KEY_PREF_ALPHA); String paramAreaAlpha = request.getParameter(PARAM_KEY_AREA_ALPHA); String paramOnsenAreaAlpha = request.getParameter(PARAM_KEY_ONSEN_AREA_ALPHA); String paramOareaAlpha = request.getParameter(PARAM_KEY_OAREA_ALPHA); String paramSareaAlpha = request.getParameter(PARAM_KEY_SAREA_ALPHA); String paramIpAlpha = request.getParameter(PARAM_KEY_IP_ALPHA); String paramFeatureAlpha = request.getParameter(PARAM_KEY_FEATURE_ALPHA); String paramLineAlpha = request.getParameter(PARAM_KEY_LINE_ALPHA); String paramStationAlpha = request.getParameter(PARAM_KEY_STATION_ALPHA); String paramOnsenId = request.getParameter(PARAM_KEY_ONSEN_ID); String paramNureportId = request.getParameter(PARAM_KEY_NUREPORT_ID); String paramSpecialId = request.getParameter(PARAM_KEY_SPECIAL_ID); String paramType = request.getParameter(PARAM_KEY_TYPE); String paramDetailId = request.getParameter(PARAM_KEY_DETAIL_ID); String paramRankType = request.getParameter(PARAM_KEY_RANK_TYPE); String paramRankYm = request.getParameter(PARAM_KEY_RANK_YM); String paramRewritePage = request.getParameter(PARAM_KEY_REWRITE_PAGE); String paramKuchikomiText = request.getParameter(PARAM_KEY_KK_TEXT); String paramKuchikomiYear = request.getParameter(PARAM_KEY_KK_YEAR); String paramKuchikomiOnsenId = request.getParameter(PARAM_KEY_KK_ONSENID); // ------------------------------- logger.info("RewriteParameters:[" +" "+PARAM_KEY_DAREA_ALPHA+"="+paramDareaAlpha +" "+PARAM_KEY_PREF_ALPHA+"="+paramPrefAlpha +" "+PARAM_KEY_AREA_ALPHA+"="+paramAreaAlpha +" "+PARAM_KEY_ONSEN_AREA_ALPHA+"="+paramOnsenAreaAlpha +" "+PARAM_KEY_OAREA_ALPHA+"="+paramOareaAlpha +" "+PARAM_KEY_SAREA_ALPHA+"="+paramSareaAlpha +" "+PARAM_KEY_IP_ALPHA+"="+paramIpAlpha +" "+PARAM_KEY_FEATURE_ALPHA+"="+paramFeatureAlpha +" "+PARAM_KEY_LINE_ALPHA+"="+paramLineAlpha +" "+PARAM_KEY_STATION_ALPHA+"="+paramStationAlpha +" "+PARAM_KEY_ONSEN_ID+"="+paramOnsenId +" "+PARAM_KEY_NUREPORT_ID+"="+paramNureportId +" "+PARAM_KEY_SPECIAL_ID+"="+paramSpecialId +" "+PARAM_KEY_TYPE+"="+paramType +" "+PARAM_KEY_DETAIL_ID+"="+paramDetailId +" "+PARAM_KEY_RANK_TYPE+"="+paramRankType +" "+PARAM_KEY_RANK_YM+"="+paramRankYm +" "+PARAM_KEY_REWRITE_PAGE+"="+paramRewritePage +" "+PARAM_KEY_KK_TEXT+"="+paramKuchikomiText +" "+PARAM_KEY_KK_YEAR+"="+paramKuchikomiYear +" "+PARAM_KEY_KK_ONSENID+"="+paramKuchikomiOnsenId +" ]"); // 転送先初期値はエラーページ String forwardPath = PAGE_PATH_ERROR; String forwardPathSmp = PAGE_PATH_ERROR_SMP; // 301リダイレクトURL String redirectUrl = ""; // =================== // ID変換 // =================== // 大エリアID変換 Map dareaJsonBean = dareaJsonBeanList.getBeanByValue("alpha", paramDareaAlpha); String dareaId = dareaJsonBean == null ? "" : StringUtils.defaultString(dareaJsonBean.get("id")); // 都道府県ID変換 Map prefJsonBean = prefJsonBeanList.getBeanByValue("alpha", paramPrefAlpha); String prefId = prefJsonBean == null ? "" : StringUtils.defaultString(prefJsonBean.get("id")); // 温泉エリアID変換 Map oareaJsonBean = oareaJsonBeanList.getBeanByValue("alpha", paramOareaAlpha); String oareaId = oareaJsonBean == null ? "" : StringUtils.defaultString(oareaJsonBean.get("id")); // 温泉詳細エリアID変換 Map sareaJsonBean = sareaJsonBeanList.getBeanByValue("alpha", paramSareaAlpha); String sareaId = sareaJsonBean == null ? "" : StringUtils.defaultString(sareaJsonBean.get("id")); // エリアID変換(混合パラメータを優先) if(StringUtils.isNotEmpty(paramAreaAlpha)) { // 都道府県 prefId = prefJsonBean == null ? "": prefJsonBeanList.getBeanByValue("alpha", paramAreaAlpha).get("id"); // 都道府県でないなら大エリア if(StringUtils.isEmpty(prefId)) { dareaId = dareaJsonBean == null ? "" : dareaJsonBeanList.getBeanByValue("alpha", paramAreaAlpha).get("id"); } } // 温泉エリアID変換(混合パラメータを優先) if(StringUtils.isNotEmpty(paramOnsenAreaAlpha)) { // 温泉エリア oareaId = oareaJsonBean == null ? "" : oareaJsonBeanList.getBeanByValue("alpha", paramOnsenAreaAlpha).get("id"); // 温泉エリアでないなら温泉詳細エリア if(StringUtils.isEmpty(oareaId)) { sareaId = sareaJsonBean == null ? "" : sareaJsonBeanList.getBeanByValue("alpha", paramOnsenAreaAlpha).get("id"); } } String gatheredOareaId = convertGatheredOareaId(oareaId); String combinedOareaId = convertCombinedOareaId(oareaId); // =================== // =================== // ページ番号 // =================== int pageNum = toI(paramRewritePage); String urlPage = ""; // 0、マイナスはあり得ない if(pageNum < 1) { pageNum = 1; } String pageNumStr = String.valueOf(pageNum); // 2ページ目以降の場合のみURLに反映 if(pageNum > 1) { urlPage = "page-"+String.valueOf(pageNum)+"/"; } request.setAttribute(ATTR_KEY_PAGE_NUM_STR, pageNumStr); // =================== // =================== // クチコミ一覧パラメータ // =================== String kuchikomiStartDay = ""; String kuchikomiEndDay = ""; // パラメータの年から開始日と終了日を設定 if(StringUtils.isNotEmpty(paramKuchikomiYear)) { int kkYear = toI(paramKuchikomiYear); if( kkYear != 0) { kuchikomiStartDay = PARAM_KEY_KK_START_DAY + "_" + String.valueOf(kkYear) + "0101/"; kuchikomiEndDay = PARAM_KEY_KK_END_DAY + "_" + String.valueOf(kkYear+1) + "0101/"; } } // =================== // =================== // 都道府県別jsonBean用setAttribute // =================== request.setAttribute( ATTR_KEY_PREF_ID, prefId ); // =================== // =================== // ニフティ温泉とアクトパスは施設一覧に表示しない // =================== String excludeStr = PARAM_KEY_EXCLUDE + "=onsen099999&" + PARAM_KEY_EXCLUDE + "=onsen010921"; // =================== logger.info("RewriteParameters After Convert:[" +" "+PARAM_KEY_DAREA+"=>"+dareaId +" "+PARAM_KEY_PREF+"=>"+prefId +" "+PARAM_KEY_OAREA+"=>"+oareaId +" "+PARAM_KEY_SAREA+"=>"+sareaId +" page=>"+pageNumStr +" urlPage=>"+urlPage +" ]"); // ========================================================= // 転送パス判定 // ========================================================= // ------------- // クチコミ詳細/投稿、お知らせ詳細、探訪記詳細 if(StringUtils.isNotEmpty(oareaId) && StringUtils.isEmpty(paramSareaAlpha) && StringUtils.isNotEmpty(paramOnsenId) && StringUtils.isEmpty(paramNureportId) && StringUtils.isNotEmpty(paramType) && StringUtils.isNotEmpty(paramDetailId)) { // ================== // タイプ判別 // ================== // クチコミ関連 if(TYPE_KUCHIKOMI.equals(paramType)) { // クチコミ投稿フォーム if( TYPE_KUCHIKOMI_FORM.equals(paramDetailId) ) { forwardPath = "/kuchikomi/onsen_onsen-detail/registForm/aid_" + paramOnsenId + "/1.htm"; forwardPathSmp = forwardPath; // クチコミ投稿確認 } else if( TYPE_KUCHIKOMI_CONFIRM.equals(paramDetailId) ) { forwardPath = "/kuchikomi/onsen_onsen-detail/registConfirm/aid_" + paramOnsenId + "/1.htm"; forwardPathSmp = forwardPath; // クチコミ投稿完了 } else if( TYPE_KUCHIKOMI_COMPLETE.equals(paramDetailId) ) { request.setAttribute( ATTR_KEY_KK_REGISTER_ONSEN_ID, paramOnsenId ); forwardPath = "/onsen/_htdocs/kuchikomi/kk_regist_join.jsp"; forwardPathSmp = forwardPath; // クチコミ詳細 } else { forwardPath = "/kuchikomi/onsen_onsen-detail/detail/aid_" + paramOnsenId + "/kid_" + paramDetailId + "/1.htm"; forwardPathSmp = forwardPath; } } // お知らせ詳細 else if(TYPE_NEWS.equals(paramType)) { forwardPath = "/kuchikomi/onsen_report/nlist/aid_" + paramDetailId + "/" + pageNumStr + ".htm"; forwardPathSmp = forwardPath; } // 探訪記詳細 else if(TYPE_TREPORT.equals(paramType)) { forwardPath = "/kuchikomi/onsen_report/tlist/aid_" + paramDetailId + "/" + pageNumStr + ".htm"; forwardPathSmp = forwardPath; } // その他(エラー) else { // do nothing... } // ================== } // ------------- // クーポン、ギフト、クチコミ、お知らせ一覧、探訪記一覧 else if(StringUtils.isNotEmpty(oareaId) && StringUtils.isEmpty(paramSareaAlpha) && StringUtils.isNotEmpty(paramOnsenId) && StringUtils.isEmpty(paramNureportId) && StringUtils.isNotEmpty(paramType) && StringUtils.isEmpty(paramDetailId)) { // ================== // タイプ判別 // ================== // クーポン if(TYPE_COUPON.equals(paramType)) { forwardPath = "/catalog/onsen_onsen-detail/nknc/catalog_" + paramOnsenId + "_1.htm"; forwardPathSmp = forwardPath; } // ギフト else if(TYPE_GIFTCARD.equals(paramType)) { forwardPath = "/catalog/onsen_onsen-detail/gift/catalog_" + paramOnsenId + "_1.htm"; forwardPathSmp = "/catalog/onsen_onsen-detail/smp-gift/catalog_" + paramOnsenId + "_1.htm"; } // クチコミ else if(TYPE_KUCHIKOMI.equals(paramType)) { forwardPath = "/kuchikomi/onsen_onsen-detail/list/aid_" + paramOnsenId + "/gu_1/" + pageNumStr + ".htm"; forwardPathSmp = forwardPath; } // お知らせ一覧 else if(TYPE_NEWS.equals(paramType)) { forwardPath = "/catalog/onsen_report/s1_" + paramOnsenId + "/s2_1/s3_1/" + pageNumStr + ".htm"; forwardPathSmp = forwardPath; } // 探訪記一覧 else if(TYPE_TREPORT.equals(paramType)) { forwardPath = "/catalog/onsen_report/s1_" + paramOnsenId + "/s2_1/s3_2/" + pageNumStr + ".htm"; forwardPathSmp = forwardPath; } // ノジマクーポン else if(TYPE_NOJIMA_COUPON.equals(paramType)) { forwardPath = "/catalog/onsen_onsen-detail/nojima-coupon/catalog_" + paramOnsenId + "_1.htm"; forwardPathSmp = forwardPath; } // ------------- // 温泉施設詳細 - 温泉紹介ページ else if(TYPE_ABILIVE_ONSEN.equals(paramType)) { forwardPath = "/catalog/onsen_onsen-detail/catalog_" + paramOnsenId + "_2.htm"; forwardPathSmp = forwardPath; // 右カラム表示用パラメータ request.setAttribute( ATTR_VALUE_PC_RIGHT_SOURCE_ONSEN_ID, paramOnsenId ); request.setAttribute( ATTR_KEY_PC_RIGHT_SOURCE_TYPE, ATTR_VALUE_PC_RIGHT_SOURCE_DETAIL ); request.setAttribute( ATTR_KEY_PC_RIGHT_TIMES_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_CAMPAIGN_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_REPORT_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_ONYOKU_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); } // ------------- // 温泉施設詳細 - 客室・料理ページ else if(TYPE_ABILIVE_ROOMS.equals(paramType)) { forwardPath = "/catalog/onsen_onsen-detail/catalog_" + paramOnsenId + "_3.htm"; forwardPathSmp = forwardPath; // 右カラム表示用パラメータ request.setAttribute( ATTR_VALUE_PC_RIGHT_SOURCE_ONSEN_ID, paramOnsenId ); request.setAttribute( ATTR_KEY_PC_RIGHT_SOURCE_TYPE, ATTR_VALUE_PC_RIGHT_SOURCE_DETAIL ); request.setAttribute( ATTR_KEY_PC_RIGHT_TIMES_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_CAMPAIGN_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_REPORT_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_ONYOKU_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); } // その他(エラー) else { // do nothing... } // ================== } // ------------- // 突レポ詳細 else if(StringUtils.isEmpty(paramSareaAlpha) && StringUtils.isNotEmpty(paramNureportId) && TYPE_TOTSUREPO.equals(paramType) && StringUtils.isEmpty(paramDetailId)) { String nureportOareaAlpha = ""; String nureportOnsenId = ""; if(StringUtils.isNotEmpty(oareaId) && StringUtils.isNotEmpty(paramOnsenId)) { nureportOareaAlpha = paramOareaAlpha; nureportOnsenId = paramOnsenId; } else { %><% // 突レポデータマップ Map nureportOareaMap = (Map)request.getAttribute(ATTR_KEY_NUREPORT_OAREA_MAP); Map nureportOnsenMap = (Map)request.getAttribute(ATTR_KEY_NUREPORT_ONSEN_MAP); nureportOareaAlpha = nureportOareaMap == null ? "" : nureportOareaMap.get(paramNureportId); nureportOnsenId = nureportOnsenMap == null ? "" : nureportOnsenMap.get(paramNureportId); } // 突レポ if(StringUtils.isNotEmpty(nureportOareaAlpha) && StringUtils.isNotEmpty(nureportOnsenId)) { redirectUrl = "/" + nureportOareaAlpha + "-onsen/" + nureportOnsenId + "/#report"; } } // ------------- // 温泉施設詳細 else if(StringUtils.isNotEmpty(oareaId) && StringUtils.isEmpty(paramSareaAlpha) && StringUtils.isNotEmpty(paramOnsenId) && StringUtils.isEmpty(paramNureportId) && StringUtils.isEmpty(paramType) && StringUtils.isEmpty(paramDetailId)) { forwardPath = "/catalog/onsen_onsen-detail/catalog_" + paramOnsenId + "_1.htm"; forwardPathSmp = forwardPath; // 右カラム表示用パラメータ request.setAttribute( ATTR_VALUE_PC_RIGHT_SOURCE_ONSEN_ID, paramOnsenId ); request.setAttribute( ATTR_KEY_PC_RIGHT_SOURCE_TYPE, ATTR_VALUE_PC_RIGHT_SOURCE_DETAIL ); request.setAttribute( ATTR_KEY_PC_RIGHT_TIMES_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_CAMPAIGN_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_REPORT_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_ONYOKU_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); } // ------------- // ------------- // 大エリア別クチコミ else if( StringUtils.isNotEmpty(dareaId) && TYPE_KUCHIKOMI.equals(paramType) ) { forwardPath = "/kuchikomi/onsen_onsen-detail/allList/gu_1/" + kuchikomiStartDay + kuchikomiEndDay + pageNumStr + ".htm?" + PARAM_KEY_DAREA + "=" + dareaId; forwardPathSmp = forwardPath; // PC旧右カラムの広告タグ表示 request.setAttribute(ATTR_KEY_PC_BODY_COMMON_DFP_RECT, "1"); } // 都道府県別クチコミ else if( StringUtils.isNotEmpty(prefId) && TYPE_KUCHIKOMI.equals(paramType) ) { forwardPath = "/kuchikomi/onsen_onsen-detail/allList/gu_1/" + kuchikomiStartDay + kuchikomiEndDay + pageNumStr + ".htm?" + PARAM_KEY_PREF + "=" + prefId; forwardPathSmp = forwardPath; // PC旧右カラムの広告タグ表示 request.setAttribute(ATTR_KEY_PC_BODY_COMMON_DFP_RECT, "1"); } // ------------- // クチコミトップ else if( StringUtils.isEmpty(dareaId) && StringUtils.isEmpty(prefId) && StringUtils.isEmpty(paramOnsenId) && TYPE_KUCHIKOMI.equals(paramType) ) { // 施設IDもしくはテキストの絞込みパラメータがあれば口コミ一覧にフォワード if( StringUtils.isNotEmpty(paramKuchikomiText) || StringUtils.isNotEmpty(paramKuchikomiOnsenId) ) { forwardPath = "/kuchikomi/onsen_onsen-detail/allList/gu_1/" + kuchikomiStartDay + kuchikomiEndDay + pageNumStr + ".htm"; forwardPathSmp = forwardPath; // 絞込みパラメータがなければ口コミトップにフォワード } else { forwardPath = "/onsen/_htdocs/kuchikomi/index.jsp"; forwardPathSmp = "/onsen/_htdocs/kuchikomi/index_smp.jsp"; } // PC旧右カラムの広告タグ表示 request.setAttribute(ATTR_KEY_PC_BODY_COMMON_DFP_RECT, "1"); } // ------------- // ランキング else if( TYPE_RANK.equals(paramType) ) { // ランキングタイプの指定があれば各ランキングのページ if( StringUtils.isNotEmpty(paramRankType) ) { // ランキングIDマップ読み込み String rankIdMapPath = "/onsen/_htdocs/cs/ranking-master/parts-ranking-id-map/1.jsp"; %><% Map rankIdMap = (Map)request.getAttribute(ATTR_KEY_RANK_ID_MAP); String rankServiceId = StringUtils.defaultString( rankIdMap == null ? "" : rankIdMap.get(paramRankType) ); // グルメグランプリ対応 if("gourmet".equals(paramRankType)){ forwardPath = "/onsen/_htdocs/ranking/gourmet/index.html"; forwardPathSmp = "/onsen/_htdocs/ranking/gourmet/index.html"; } // サービスIDがあればフォワードの処理を行う else if( StringUtils.isNotEmpty(rankServiceId) ) { // 年月マップ読み込み String ymMapPath = "/onsen/_htdocs/cs/" + rankServiceId + "/parts-ym-map/1.jsp"; %><% Map ymMap = (Map)request.getAttribute(ATTR_KEY_RANK_YM_MAP); String rankCatalogId = ""; String rankYmUrl = ""; // 年月指定ありの場合は指定されている年月に紐づいたカタログID if( StringUtils.isNotEmpty(paramRankYm) ) { rankCatalogId = ymMap == null ? "" : ymMap.get(paramRankYm); rankYmUrl = EscapeUtil.escapeHtml(paramRankYm) + "/"; // 年月指定なしの場合は最新のカタログID } else { rankCatalogId = ymMap == null ? "" : ymMap.get(PARAM_KEY_RANK_YM_MAP_LATEST); } logger.info("rankServiceId:["+rankServiceId+"]"); if( StringUtils.isNotEmpty(rankCatalogId) ) { forwardPath = "/onsen/_htdocs/cs/" + rankServiceId + "/ranking/" + rankCatalogId + "/1.jsp"; forwardPathSmp = "/onsen/_htdocs/cs/" + rankServiceId + "/ranking-smp/" + rankCatalogId + "/1.jsp"; } } // ランキングタイプの指定がなければランキングトップ } else { forwardPath = "/onsen/_htdocs/ranking/index.jsp"; forwardPathSmp = "/onsen/_htdocs/ranking/index_smp.jsp"; // TreasureDataパラメータ request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_DISP, "1"); request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_SCREEN, "ランキングトップ"); request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_SCREEN_ALPHA, "RankingTop"); } // PC旧右カラムの広告タグ表示 request.setAttribute(ATTR_KEY_PC_BODY_COMMON_DFP_RECT, "1"); } // ------------- // terme記事詳細 else if( StringUtils.isNotEmpty(paramDetailId) && TYPE_TERME.equals(paramType) ) { // termeドメインにリダイレクト redirectUrl = TERME_DOMAIN + TERME_PATH + paramDetailId + "/"; } // ------------- // termeトップ else if( StringUtils.isEmpty(paramDetailId) && TYPE_TERME.equals(paramType) ) { // termeドメインにリダイレクト redirectUrl = TERME_DOMAIN + TERME_PATH; } // ------------- // テーマ別ページ else if(StringUtils.isNotEmpty(paramFeatureAlpha)) { // =================== // テーマ絞り込み用パラメータ文字列 // =================== %><%@ include file="/onsen/_htdocs/jsp/bean/master/ThemeMasterBean.jsp" %><% ThemeMasterBean themeListJsonBean = new ThemeMasterBean(request); //ThemeJsonBean targetThemeJsonBean = themeListJsonBean.findBeanByAlpha(paramFeatureAlpha); Map targetThemeJsonBean = themeListJsonBean.getBeanByValue("alpha", paramFeatureAlpha); //String themaParams = StringUtils.defaultString(targetThemeJsonBean.paramStr); String themaParams = StringUtils.defaultString(targetThemeJsonBean.get("paramStr")); logger.info("themaParams:"+themaParams); // =================== // 検索結果画面メタ情報用設定 request.setAttribute(ATTR_KEY_THEME_ID, targetThemeJsonBean.get("id")); request.setAttribute(ATTR_KEY_THEME_ALPHA, targetThemeJsonBean.get("alpha")); request.setAttribute(ATTR_KEY_THEME_NAME, targetThemeJsonBean.get("name")); request.setAttribute(ATTR_KEY_THEME_TEXT_IN_LIST, targetThemeJsonBean.get("textInList")); request.setAttribute(ATTR_KEY_THEME_QUERY_STR, themaParams); request.setAttribute(ATTR_KEY_THEME_TEXT_PC, targetThemeJsonBean.get("themeTextPc")); request.setAttribute(ATTR_KEY_THEME_TEXT_SMP, targetThemeJsonBean.get("themeTextSmp")); // 同じテーマがすでに指定されていた場合は、フォワード時にパラメータを付与しない String[] themaParamSplit = themaParams.split("="); if(themaParamSplit.length == 2){ String[] themaValues = request.getParameterValues(themaParamSplit[0]); if(themaValues != null){ for(String themaValue : themaValues){ if(themaParamSplit[1].equals(themaValue)){ themaParams = ""; } } } } // デフォルトの並び順を変更(2016/06/29~使用していない状態) String srtStr = ""; // ------------- // LPフラグが立っていないテーマはエラー扱いにする if (!"1".equals(targetThemeJsonBean.get("LpFlg"))) { // do nothing... // ------------- // テーマ別温泉地検索結果 }else if(StringUtils.isNotEmpty(sareaId)) { forwardPath = "/catalog/onsen_onsen-detail/lst/" + srtStr + pageNumStr + ".htm?" + PARAM_KEY_SAREA + "=" + sareaId + (StringUtils.isNotEmpty(themaParams) ? "&" + themaParams : "") + "&" + excludeStr; forwardPathSmp = forwardPath; // 日帰りテーマのときは、リダイレクトURLを設定(2015/09/09add) if( "day".equals(paramFeatureAlpha) ) { redirectUrl = "/" + EscapeUtil.escapeHtml(paramOnsenAreaAlpha) + "-onsen/" + urlPage + "?c3=1024"; } } // ------------- // テーマ別温泉エリア検索結果 else if(StringUtils.isNotEmpty(oareaId)) { // 合算用温泉エリアも同時に検索する String appendCombinedOareaParam = ""; if(StringUtils.isNotEmpty(combinedOareaId) && !gatheredOareaId.equals(combinedOareaId)) { appendCombinedOareaParam = "&" + PARAM_KEY_OAREA + "=" + combinedOareaId; } // NOTICE:結果画面でgetParameterされるため、必ず1つ目のoareaが寄せた結果の温泉エリアIDであること! forwardPath = "/catalog/onsen_onsen-detail/lst/" + srtStr + pageNumStr + ".htm?" + PARAM_KEY_OAREA + "=" + gatheredOareaId + appendCombinedOareaParam + (StringUtils.isNotEmpty(themaParams) ? "&" + themaParams : "") + "&" + excludeStr; forwardPathSmp = forwardPath; // 日帰りテーマのときは、リダイレクトURLを設定(2015/09/09add) if( "day".equals(paramFeatureAlpha) ) { redirectUrl = "/" + EscapeUtil.escapeHtml(paramOnsenAreaAlpha) + "-onsen/" + urlPage + "?c3=1024"; } } // ------------- // テーマ別都道府県検索結果 else if(StringUtils.isNotEmpty(prefId) && TYPE_SEARCH.equals(paramType)) { forwardPath = "/catalog/onsen_onsen-detail/lst/" + srtStr + pageNumStr + ".htm?" + PARAM_KEY_PREF + "=" + prefId + (StringUtils.isNotEmpty(themaParams) ? "&" + themaParams : "") + "&" + excludeStr; forwardPathSmp = forwardPath; // 日帰りテーマのときは、リダイレクトURLを設定(2015/09/09add) if( "day".equals(paramFeatureAlpha) ) { redirectUrl = "/" + EscapeUtil.escapeHtml(paramAreaAlpha) + "/search/" + urlPage + "?c3=1024"; } } // ------------- // テーマ別大エリア検索結果 else if(StringUtils.isNotEmpty(dareaId) && TYPE_SEARCH.equals(paramType)) { forwardPath = "/catalog/onsen_onsen-detail/lst/" + srtStr + pageNumStr + ".htm?" + PARAM_KEY_DAREA + "=" + dareaId + (StringUtils.isNotEmpty(themaParams) ? "&" + themaParams : "") + "&" + excludeStr; forwardPathSmp = forwardPath; // 日帰りテーマのときは、リダイレクトURLを設定(2015/09/09add) if( "day".equals(paramFeatureAlpha) ) { redirectUrl = "/" + EscapeUtil.escapeHtml(paramAreaAlpha) + "/search/" + urlPage + "?c3=1024"; } } // ------------- // テーマ別エリアなし検索結果 else if(TYPE_SEARCH.equals(paramType) && StringUtils.isEmpty(dareaId) && StringUtils.isEmpty(prefId) && StringUtils.isEmpty(oareaId) && StringUtils.isEmpty(sareaId)) { forwardPath = "/catalog/onsen_onsen-detail/lst/" + srtStr + pageNumStr + ".htm" + (StringUtils.isNotEmpty(themaParams) ? "?" + themaParams + "&" : "?") + excludeStr; forwardPathSmp = forwardPath; // 日帰りテーマのときは、リダイレクトURLを設定(2015/09/09add) if( "day".equals(paramFeatureAlpha) ) { redirectUrl = "/cs/catalog/onsen_onsen-detail/lst/" + pageNumStr + ".htm?c3=1024"; } } // ------------- // テーマ別トップ else if(StringUtils.isEmpty(dareaId) && StringUtils.isEmpty(prefId) && StringUtils.isEmpty(oareaId) && StringUtils.isEmpty(sareaId)) { forwardPath = "/catalog/onsen_theme-master/catalog_" + EscapeUtil.escapeHtml(paramFeatureAlpha) + "_1.htm"; forwardPathSmp = forwardPath; // 日帰りテーマのときは、リダイレクトURLを設定(2015/09/09add) if( "day".equals(paramFeatureAlpha) ) { redirectUrl = "/"; } } // ------------- // その他(エラー扱い) else { // do nothing... } } // ------------- // IP別トップ else if(StringUtils.isNotEmpty(paramIpAlpha)) { forwardPath = "/catalog/onsen_ip-master/catalog_" + EscapeUtil.escapeHtml(paramIpAlpha) + "_1.htm"; forwardPathSmp = forwardPath; } // ------------- // 特集ページ else if(StringUtils.isNotEmpty(paramSpecialId) && TYPE_SPECIAL.equals(paramType)) { forwardPath = "/onsen/_htdocs/cs/special-element/area/" + paramSpecialId + "/" + pageNumStr + ".jsp"; forwardPathSmp = "/onsen/_htdocs/cs/special-element/area-smp/" + paramSpecialId + "/" + pageNumStr + ".jsp"; } // ------------- // 沿線一覧 else if(StringUtils.isNotEmpty(prefId) && TYPE_ROSEN.equals(paramType)) { if(DISP_PREF_ID_LIST.contains(prefId)){ forwardPath = "/catalog/onsen_line-company/1.htm?" + PARAM_KEY_PREF + "=" + prefId; forwardPathSmp = forwardPath; // 沿線を表示しない都道府県はエラー扱いにする }else{ // do nothing... } } else if(StringUtils.isNotEmpty(prefId) && (StringUtils.isNotEmpty(paramLineAlpha) || StringUtils.isNotEmpty(paramStationAlpha))) { %><%@ include file="/onsen/_htdocs/jsp/bean/master/StationMasterBean.jsp" %><% String paramPrefId = (String)request.getAttribute(ATTR_KEY_PREF_ID); StationMasterBean stationJsonBeanList = new StationMasterBean(request, StationMasterBean.TYPE_PREF, paramPrefId); // ------------- // 沿線ページ if(StringUtils.isNotEmpty(paramLineAlpha) && DISP_PREF_ID_LIST.contains(prefId)) { %><%@ include file="/onsen/_htdocs/jsp/bean/master/LineMasterBean.jsp" %><% LineMasterBean lineJsonBeanList = new LineMasterBean(request); Map lineBean = lineJsonBeanList.getLineBeanByAlpha(prefId, paramLineAlpha); String targetLineId = StringUtils.defaultString(lineBean.get("id")); String targetStLineId = StringUtils.defaultString(lineBean.get("lineId")); String stationListStr = ""; List> stationList = stationJsonBeanList.getBeanListByValue("lineId", targetStLineId); for(Map stationBean : stationList) { if(toI(stationBean.get("count")) > 0) { stationListStr = stationListStr + "&" + PARAM_KEY_STATION + "=" + stationBean.get("id"); } List> sameNameStationList = null; if(StringUtils.isNotEmpty(stationBean.get("sameNameId"))) { sameNameStationList = stationJsonBeanList.getBeanListByValue("sameNameId", stationBean.get("sameNameId")); } else { sameNameStationList = stationJsonBeanList.getBeanListByValue("alpha", stationBean.get("alpha")); } for(Map sameNameStationBean : sameNameStationList) { if(toI(sameNameStationBean.get("count")) > 0) { //stationListStr = stationListStr + "&" + PARAM_KEY_STATION + "=" + sameNameStationBean.id; stationListStr = stationListStr + "&" + PARAM_KEY_STATION + "=" + sameNameStationBean.get("id"); } } } if(StringUtils.isNotEmpty(targetLineId)) { forwardPath = "/catalog/onsen_onsen-detail/station/" + pageNumStr + ".htm?" + PARAM_KEY_LINE + "=" + targetLineId + stationListStr; forwardPathSmp = forwardPath; } } // ------------- // 駅ページ else if(StringUtils.isNotEmpty(paramStationAlpha) && DISP_PREF_ID_LIST.contains(prefId)) { String stationListStr = ""; String stationListAndStr = ""; List> targetStationList = stationJsonBeanList.getBeanListByValue("alpha", paramStationAlpha); if(targetStationList != null && targetStationList.size() != 0) { for(Map stationBean : targetStationList) { if(toI(stationBean.get("count")) > 0) { stationListStr = stationListStr + stationListAndStr + PARAM_KEY_STATION + "=" + stationBean.get("id"); stationListAndStr = "&"; } } String targetSameNameId = StringUtils.defaultString(targetStationList.get(0).get("sameNameId")); if(StringUtils.isNotEmpty(targetSameNameId)) { List> sameNameStationList = stationJsonBeanList.getBeanListByValue("sameNameId", targetSameNameId); for(Map sameNameStationBean : sameNameStationList) { if(toI(sameNameStationBean.get("count")) > 0 && !paramStationAlpha.equals(sameNameStationBean.get("alpha"))) { stationListStr = stationListStr + stationListAndStr + PARAM_KEY_STATION + "=" + sameNameStationBean.get("id"); stationListAndStr = "&"; } } } if(StringUtils.isNotEmpty(stationListStr)) { forwardPath = "/catalog/onsen_onsen-detail/station/" + pageNumStr + ".htm?" + stationListStr; forwardPathSmp = forwardPath; } } } } // ------------- // 温泉詳細エリア検索結果 else if(StringUtils.isEmpty(oareaId) && StringUtils.isNotEmpty(sareaId) && StringUtils.isEmpty(paramOnsenId) && StringUtils.isEmpty(paramNureportId) && StringUtils.isEmpty(paramType) && StringUtils.isEmpty(paramDetailId)) { forwardPath = "/catalog/onsen_onsen-detail/lst/" + pageNumStr + ".htm?" + PARAM_KEY_SAREA + "=" + sareaId + "&" + excludeStr; forwardPathSmp = forwardPath; } // ------------- // 温泉エリア検索結果 else if(StringUtils.isNotEmpty(oareaId) && StringUtils.isEmpty(paramSareaAlpha) && StringUtils.isEmpty(paramOnsenId) && StringUtils.isEmpty(paramNureportId) && StringUtils.isEmpty(paramType) && StringUtils.isEmpty(paramDetailId) && StringUtils.isNotEmpty(gatheredOareaId)) { // 合算用温泉エリアも同時に検索する String appendCombinedOareaParam = ""; if(StringUtils.isNotEmpty(combinedOareaId) && !gatheredOareaId.equals(combinedOareaId)) { appendCombinedOareaParam = "&" + PARAM_KEY_OAREA + "=" + combinedOareaId; } // NOTICE:結果画面でgetParameterされるため、必ず1つ目のoareaが寄せた結果の温泉エリアIDであること! forwardPath = "/catalog/onsen_onsen-detail/lst/" + pageNumStr + ".htm?" + PARAM_KEY_OAREA + "=" + gatheredOareaId + appendCombinedOareaParam + "&" + excludeStr; forwardPathSmp = forwardPath; } // ------------- // 都道府県(検索結果) else if(StringUtils.isEmpty(dareaId) && StringUtils.isNotEmpty(prefId) && TYPE_SEARCH.equals(paramType)) { forwardPath = "/catalog/onsen_onsen-detail/lst/" + pageNumStr + ".htm?" + PARAM_KEY_PREF + "=" + prefId + "&" + excludeStr; forwardPathSmp = forwardPath; } // ------------- // 大エリア(検索結果) else if(StringUtils.isNotEmpty(dareaId) && StringUtils.isEmpty(prefId) && TYPE_SEARCH.equals(paramType)) { forwardPath = "/catalog/onsen_onsen-detail/lst/" + pageNumStr + ".htm?" + PARAM_KEY_DAREA + "=" + dareaId + "&" + excludeStr; forwardPathSmp = forwardPath; } // ------------- // 温泉地(LP) else if(StringUtils.isEmpty(oareaId) && StringUtils.isNotEmpty(sareaId) && TYPE_DETAIL.equals(paramType)) { // ONSEN#201対応でPCはリストページへリダイレクトする forwardPath = "/catalog/onsen_onsen-detail/lst/" + pageNumStr + ".htm?" + PARAM_KEY_SAREA + "=" + sareaId + "&" + excludeStr; forwardPathSmp = "/catalog/onsen_sarea/catalog_" + sareaId + "_1.htm"; // TreasureDataパラメータ request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_DISP, "1"); request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_SCREEN, "温泉地詳細"); request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_SCREEN_ALPHA, "SareaDetail"); } // ------------- // 都道府県(LP) else if(StringUtils.isEmpty(dareaId) && StringUtils.isNotEmpty(prefId) && !TYPE_SEARCH.equals(paramType)) { forwardPath = "/catalog/onsen_pref/catalog_" + prefId + "_1.htm"; forwardPathSmp = forwardPath; // パーツ表示制御用のパラメータセット request.setAttribute(ATTR_KEY_SMP_PARTS_SOURCE_TYPE, "areaTop"); // PC右カラム表示用パラメータ request.setAttribute( ATTR_KEY_PC_RIGHT_SOURCE_TYPE, ATTR_VALUE_PC_RIGHT_SOURCE_AREA_TOP ); request.setAttribute( ATTR_KEY_PC_RIGHT_TIMES_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_CAMPAIGN_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_REPORT_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_ONYOKU_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_HOTEL_SEARCH_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); // TreasureDataパラメータ request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_DISP, "1"); request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_SCREEN, "都道府県トップ"); request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_SCREEN_ALPHA, "PrefTop"); } // ------------- // 大エリア(LP) else if(StringUtils.isNotEmpty(dareaId) && StringUtils.isEmpty(prefId) && !TYPE_SEARCH.equals(paramType)) { forwardPath = "/catalog/onsen_darea/catalog_" + dareaId + "_1.htm"; forwardPathSmp = forwardPath; // PC右カラム表示用パラメータ request.setAttribute( ATTR_KEY_PC_RIGHT_SOURCE_TYPE, ATTR_VALUE_PC_RIGHT_SOURCE_AREA_TOP ); request.setAttribute( ATTR_KEY_PC_RIGHT_TIMES_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_CAMPAIGN_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_REPORT_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_ONYOKU_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); request.setAttribute( ATTR_KEY_PC_RIGHT_HOTEL_SEARCH_DISP_FLG, ATTR_VALUE_PC_RIGHT_DISP_FLG ); // パーツ表示制御用のパラメータセット request.setAttribute(ATTR_KEY_SMP_PARTS_SOURCE_TYPE, "areaTop"); // TreasureDataパラメータ request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_DISP, "1"); request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_SCREEN, "大エリアトップ"); request.setAttribute(ATTR_KEY_SMP_FOOTER_JS_COMMON_TD_SCREEN_ALPHA, "DareaTop"); } // ------------- // 温泉エリアがnullの場合のクーポンページへのアクセス(2015/12/11 Add アプリ障害修正までの暫定対応) else if( TYPE_COUPON.equals(paramType) && "(null)".equals(paramOareaAlpha) && StringUtils.isNotEmpty(paramOnsenId)) { forwardPath = "/catalog/onsen_onsen-detail/nknc/catalog_" + paramOnsenId + "_1.htm"; forwardPathSmp = forwardPath; } // ------------- // 突レポ一覧 else if(TYPE_TOTSUREPO.equals(paramType)) { forwardPath = "/onsen/_htdocs/cs/totsurepo-article/totsurepo-list/" + pageNumStr + ".jsp"; forwardPathSmp = "/onsen/_htdocs/cs/totsurepo-article/totsurepo-list-smp/1.jsp"; // SMP版はページングなしのため1ページ目固定 } // ------------- // 探訪記詳細(20160301~iOSアプリでの温泉エリアがnullで送信された場合の対応) else if("(null)".equals(paramOareaAlpha) && TYPE_TREPORT.equals(paramType)) { forwardPath = "/kuchikomi/onsen_report/tlist/aid_" + paramDetailId + "/" + pageNumStr + ".htm"; forwardPathSmp = forwardPath; } // ------------- // その他(エラー扱い) else { // do nothing... } // ========================================================= // 転送済フラグをセット request.setAttribute(ATTR_KEY_SEO_FORWARD_FLG, ATTR_VALUE_SEO_FORWARD_FLG); // PC/スマホの遷移先切り替え String targetPath = forwardPath; if(isSmp && StringUtils.isNotEmpty(forwardPathSmp)) { targetPath = forwardPathSmp; } logger.info("forwardPath:["+forwardPath+"]"); logger.info("forwardPathSmp:["+forwardPathSmp+"]"); logger.info("targetPath:["+targetPath+"]"); logger.info("redirectUrl:["+redirectUrl+"]"); // ------------------------------- // 301リダイレクト if( StringUtils.isNotEmpty(redirectUrl) ){ int redirectStatusCode = HttpServletResponse.SC_MOVED_PERMANENTLY; // 301 out.clear(); // Varyヘッダーを付与し、ステータスコードは301とする // response.sendRedirectは必ず302になるため、Locationヘッダーを指定する response.setHeader("Vary", "User-Agent,Cookie"); response.setStatus(redirectStatusCode); response.setHeader("Location",response.encodeRedirectURL(redirectUrl)); return; } // ------------------------------- // フォワード RequestDispatcher dispatch = request.getRequestDispatcher(targetPath); dispatch.forward(request, response); return; // ------------------------------- // 下記閉じタグ以降は改行を一切いれないこと // 「Unreachable code」のコンパイルエラーが発生し、中間JSPそのものが動作しなくなってしまうため %>