在我们的应用程序中,我们通过邮件触发所有通知。
所有模板都有非sso链接 > / Userlogin?param1 = param2value& param2 = param2value“>链接访问应用
我需要将所有模板中的此链接修改为
> / Userloginsso?param1 = param2value& param2 = param2value“>链接访问应用
由于有很多模板并且需要大量的手动工作,我们是否可以将Userlogin的请求重定向到Userloginsso。我们可以在web.xml中做什么配置?
答案 0 :(得分:1)
您可以使用以下内容在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);
}
答案 1 :(得分:1)
考虑到您在web.xml中有Userlogin的映射,如下所示:
<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。
答案 2 :(得分:0)
如果我正确理解了您的问题,您可以使用过滤器example here获取该网址,并在您的应用中将其放入其他地方。或者和url重写库,例如我们this one
如果您仍然需要servlet,则可以使用ProxyServlet。已经有很多很好的实现。
示例: