如何在jspInit()方法中获取模式(http / https)?

时间:2017-09-22 12:54:26

标签: jsp servlets

我在我的应用程序中使用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中获取架构?

2 个答案:

答案 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>