如何在 Spring Boot 的所有 JSP 页面中显示相同的城市名称?
Posted
技术标签:
【中文标题】如何在 Spring Boot 的所有 JSP 页面中显示相同的城市名称?【英文标题】:How to display same city name in all JSP pages in Spring Boot? 【发布时间】:2021-09-20 07:53:12 【问题描述】:我正在使用 Spring Boot 开发电子商务 Web 应用程序。我有需要在所有 JSP 页面中显示的城市名称。例如,如果我选择城市名称为孟买,那么无论有多少 JSP 页面(不包括结帐页面)都应该显示相同的城市名称(即孟买应该显示在结帐页面之外的所有页面中)。所以,我试图通过使用查询参数来完成这件事。但无法在其他页面显示相同的城市名称(如果我点击其他链接重定向到另一个页面)。
从下面的脚本中,我从 index.jsp 的查询参数中获取城市名称并将其显示在 webheader.jsp 中。
function getcities()
var city = document.getElementById('cityname').value;
var url = "api/getcities";
$.post(url,
city : city,
, function(data, status)
if (data.status == "OK")
if (data.statusCode == 1)
var citylist = data.response;
var citylistlen = citylist.length;
var city = "";
if(citylistlen > 0)
for(var i = 0; i < citylistlen; i++)
var pincode = citylist[i].pincode;
var cityname = citylist[i].delivercityid.city;
if(null != pincode && null != cityname)
city = city + "<div style='border: 1px solid; padding: 5px; display: block; z-index: 100; position: inherit; font-style: oblique; color: blueviolet;' onclick=\"getcitydata('"+citylist[i].delivercityid.delivercityid+"','"+cityname+"')\">"
+"<div><div style='padding: 5px;'><a href=\"..<%=WebUrl.index%>?city="+cityname+"\"><strong style=\"color: indigo;\">"+cityname+"</strong> ("+pincode+")</a></div></div></div>";
document.getElementById('showcity').innerhtml = city;
else
var error = data.responseMessage;
swal(error, "", "error");
else
var error = data.responseMessage;
swal(error, "", "error");
);
webheader.jsp 内部:
<div class="city-popup">
<div id="user-selected-city-input">
<h6>Delivery In</h6>
<%
String cityname = request.getParameter("city");
if(cityname == null)
out.print("<h6 style=\"color: #330000;\">Choose City</h6>");
else
out.print("<h5 style=\"color: #330000;\">"+cityname+"</h5>");
%>
</div>
</div>
应该怎么做?我需要使用 cookie 或其他方式吗?
【问题讨论】:
【参考方案1】:你可以使用session.setAttribute("city",cname)
然后你可以通过session.getAttribute()访问
【讨论】:
这个方法我也试过了,但是没用。 你设置在 在设置会话之前你能检查值是否为空。 我试过 String city = request.getParameter("city"); session.setAttribute("cityname", city);在 webheader.jsp 和 product.jsp 中的 getAttribute 作为 String city = (String)session.getAttribute("cityname"); System.out.println("之前 JSP 中的城市名称:"+city.toString());所以它打印了城市名称。但无法在该 div 中显示该名称。 基本上,webheader 页面对于所有其他 JSP 页面都是通用的。我曾经包含使用也许您正在寻找拦截器。拦截器可以拦截任何请求,您可以轻松地在请求中注入一些内容或修改请求以满足您的需要。
在您的情况下,您可以过滤拦截器中的请求,并且仅当请求 URL 不包含结帐页面链接时,通过 HandlerInterceptor
的 postHandle
方法将城市作为 JSP 对象传递。
查看此page 了解有关HandlerInerceptor
的更多信息。
【讨论】:
我不确定 HandlerInterceptor 的事。首先,需要了解这个东西才能够实现。谢谢。以上是关于如何在 Spring Boot 的所有 JSP 页面中显示相同的城市名称?的主要内容,如果未能解决你的问题,请参考以下文章
spring boot学习02如何在spring boot项目中访问jsp
Spring Boot Web 应用程序:JSP 页面抛出 404 错误
如何在 Spring Boot 中与 Spring MVC 一起提供遗留的 jsp 页面?
如何使用 Thymeleaf 或 JSP 在 Spring Boot 中启用目录列表