在我们的应用程序中,我们通过邮件触发所有通知。
所有模板都有非sso链接>/Userlogin?param1=param2value¶m2=param2value">Link来访问应用程序。
我需要修改所有模板中的这个链接
/Userloginsso?param1=param2value¶m2=param2value">Link访问应用程序
由于有许多模板,需要大量的手工工作,我们是否可以将Userlogin的请求重定向到Userloginsso。我们可以在web.xml中进行的任何配置吗?
发布于 2018-04-26 09:32:40
考虑到您在web.xml中有一个用户登录的映射,如下所示:
<web-app>
<servlet>
<servlet-name>Userlogin</servlet-name>
<servlet-path>com.something.Userlogin</servlet-path>
</servlet>
<servlet-mapping>
<servlet-name>Userlogin</servlet-name>
<url-pattern>/Userlogin</url-pattern>
</servlet-mapping>
</web-app>将现有映射修改为:
<web-app>
<servlet>
<servlet-name>Userloginsso</servlet-name>
<servlet-path>com.something.Userloginsso</servlet-path>
</servlet>
<servlet-mapping>
<servlet-name>Userloginsso</servlet-name>
<url-pattern>/Userlogin</url-pattern>
</servlet-mapping>
</web-app>现在,所有对Userlogin的调用都将重定向到Userloginsso servlet。
发布于 2018-04-26 09:31:53
您可以使用以下方法在UserLogin servlet中进行简单的重定向:
public void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException {
String param1 = request.getParameter ("param1");
String param2 = request.getParameter ("param2");
// other parameters
// Build the new url: if too much parameters, prefer using a StringBuilder over String concatenation for better performances
String baseUrl = request.getContextPath () + "/Userloginsso?param1=" + param1 + "¶m2=" + param2;
String encodedUrl = response.encodeRedirectURL (baseUrl);
response.sendRedirect (encodedUrl);
}发布于 2018-04-26 09:44:36
如果我正确地理解了你的问题,你可以使用过滤器这里的例子,获取网址,并在你的应用程序中找到其他地方。或者和url重写库,比如我们这一个
如果仍然需要servlet,可以使用ProxyServlet。已经有许多很好的实现。
示例:
简单代理servlet,功能有限
https://stackoverflow.com/questions/50039196
复制相似问题