为什么JavaSpring应用程序中的SavedRequest为空?
这与前面的一个问题有关: 我做了一些研究,发现有一个SavedRequest对象可以保存原始URL,因此在我的login.jsp中我有以下几行:为什么JavaSpring应用程序中的SavedRequest为空?,java,jsp,spring-mvc,servlets,Java,Jsp,Spring Mvc,Servlets,这与前面的一个问题有关: 我做了一些研究,发现有一个SavedRequest对象可以保存原始URL,因此在我的login.jsp中我有以下几行: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <%@ page language="java" contentType="text/html; charset=I
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ page import="org.springframework.security.web.savedrequest.*" %>
<%@ page import="java.io.*,java.util.*" %>
<%
System.out.println(" [ JSP = 1 ] "+new Date().getTime());
SavedRequest savedRequest=new HttpSessionRequestCache().getRequest(request,response);
System.out.println(" [ JSP = 1.1 ] savedRequest == null ? "+(savedRequest == null));
String requestUrl=savedRequest.getRedirectUrl();
System.out.println(" requestUrl = "+requestUrl);
%>
...
我在登录之前单击了一个URL[类似:],并被发送到login.jsp,因此在login.jsp中,我希望从requestUrl获得原始URL[],但savedRequest为空,为什么?我猜是因为您不应该使用新的
HttpSessionRequestCache
,你不应该在JSP中编写Java代码——现在它被认为是一种反模式。如果你不能把代码放进你的控制器,你可以考虑写一个标签。@ SoTiRiOS DelimaLoiS:在我的例子中,如何得到一个现有的?我没有得到那个通知:(不要在@username
之间加空格。实际上我对Spring安全性不太了解。我认为必须要保存它。例如,如果你发送了一个需要身份验证的请求,你会被重定向到登录页面,登录,然后重定向回原始的、保存的请求。我会看一下过滤你的请求。
INFO: Server startup in 54732 ms
[ JSP = 1 ] 1407987538402
[ JSP = 1.1 ] savedRequest == null ? true
Aug 13, 2014 11:38:58 PM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException