获取HTTPS的JSP页面的服务器名称和端口号

时间:2012-06-20 07:54:19

标签: jsp java-ee servlets spring-mvc jstl

我需要为表单操作创建URL,但表单应该在https下提交,目前在HTTPS的9002端口上运行的底层系统。我不能在我的JSP页面中使用以下选项

<form:form action="${request.contextPath}/springSecurity/login"
method="post" commandName="loginForm" target="guestFrame"> 

因为在HTTP中,上下文路径以HTTP形式出现,系统将抛出异常,因为表单应该由HTTPS提交。 我无法将操作URL硬编码为当前正在开发中,因为主机名为localhost,即使HTTPS端口是可配置的,因此其偶数也不能进行硬编码。

有没有办法可以使用JSTL或其他任何方式在我的JSP中创建URL,以便我可以在HTTPS下提交表单

1 个答案:

答案 0 :(得分:1)

HttpServletRequest.getServerName()将提供服务器名称。但是,没有办法获得https端口。如果您想在方法中修复它,则应该使用默认的443

但好的解决方案是使用Security Transport Guarantee作为登录网址,以便服务器自动将springSecurity/login页面重定向到https

将此条目添加到web.xml,这会自动将springSecurity/login重定向到https

<security-constraint>
    <web-resource-collection>
        <web-resource-name>secure</web-resource-name>
        <url-pattern>/springSecurity/login</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>