我在我的应用程序中使用jsp文件,其中包含jspInit()方法以初始化某些资源。 我试图在jsp文件的init方法中获取协议(http / https / ftp)以启用具有http / https连接的应用程序URL。
<%!public void jspInit() {
String realPath = getServletContext().getRealPath("/");
ServletContext servletContext = getServletConfig().getServletContext();
// how to get ServletRequest like servletcontext, So that we can get protocol from servletRequest.
}
%>
我看过ServletRequest接口有'getScheme()'方法,但我不知道如何在jspInit()中获取ServletRequest。
有没有人能告诉我如何在jsp中获取架构?
答案 0 :(得分:0)
简短的回答是:无法在jsp的初始化时间(即jspInit方法)中获取uri模式。
您无法在jspInit方法中获取请求的架构,因为没有请求。
方法ServletRequest.getSchema()
实际上从客户端使用的url中提取方案部分,以向jsp页面/ servlet发出请求。
初始化jsp时,容器会调用jspInit方法,这会在servlet生命周期中发生一次。
因此,当调用jspInit方法时,没有实际请求从中获取方案。
如果您需要&#34;使用http / https连接启用应用程序网址&#34; jspInit不是正确的地方。例如,如果您使用的是apache tomcat, 您可以阅读本教程(configure-tomcat-to-support-ssl-or-https)或this ssl-howto了解您需要采取的步骤。
答案 1 :(得分:0)
从jspInit()访问请求没有意义。因为只在JSP编译时调用它。
您应该从请求中阅读该方案。这是用于从JSP中的请求获取Scheme的EL。
<c:if test="${pageContext.request.scheme eq 'https'}">
//this section will be exectured only if it is Https request.
</c:if>