Ich habe eine DBUtil Klasse als @Repository kommentierteSCHWEREN: Servlet.service() für Servlet appServlet warf Ausnahme
@Repository
public class DBUtil {
private SessionFactory sessionFactory;
public DBUtil(SessionFactory sf) {
this.sessionFactory = sf;
}
@Transactional
public Object saveTable(Object obj){
Session session = this.sessionFactory.getCurrentSession();
session.save(obj);
return obj;
}
}
In meinem Servlet-Kontext habe ich den Eintrag für die Basis-Paket
gemacht jetzt versuche ich, „DBUtil“ in CommonUtil Klasse autowire, die als unten:
public class CommonUtil {
@Autowired
private DBUtil dbUtil;
public void setDBUtil(DBUtil dbUtil){
this.dbUtil = dbUtil;
}
public Member getMemberFromUserName(String userName){
String userCheckQry = "from Users where userName like :username";
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("username", userName);
List userList = this.dbUtil.executeHQLQuery(userCheckQry, parameters, false);
Users user = (Users) userList.get(0);
String memberQry = "from Member where memberId = :memId";
Map<String, Object> memParams = new HashMap<String, Object>();
memParams.put("memId", user.getId());
List memList = this.dbUtil.executeHQLQuery(memberQry, memParams, false);
return (Member) memList.get(0);
}
}
Wenn ich das tue, erhalte ich folgende Fehlermeldung:
May 02, 2016 11:54:36 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet appServlet threw exception
java.lang.NullPointerException
at com.rasoirecipes.util.CommonUtil.getMemberFromUserName(CommonUtil.java:56)
at com.rasoirecipes.impl.AuthenticationSuccessHandlerImpl.onAuthenticationSuccess(AuthenticationSuccessHandlerImpl.java:32)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.successfulAuthentication(AbstractAuthenticationProcessingFilter.java:331)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:245)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardH
Hinzufügen der Klasse AuthenticationSuccessHandlerImpl: (Sobald der Benutzer anmeldet, ich die Benutzer-ID und den ersten Namen in der Sitzung speichern möchten)
public class AuthenticationSuccessHandlerImpl implements AuthenticationSuccessHandler {
private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
//do what you want with
System.out.println("came after login "+ request.getPathInfo());
HttpSession session = request.getSession();
System.out.println(session);
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
System.out.println(auth.getName());
CommonUtil common = new CommonUtil();
Member member = common.getMemberFromUserName(auth.getName());
System.out.println(member.getName());
session.setAttribute("uid", member.getMemberId());
session.setAttribute("uname", member.getName());
// SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response);
// System.out.println(savedRequest.getRedirectUrl());
// if(savedRequest != null) {
// System.out.println(savedRequest.getRedirectUrl());
// }
String targetUrl = "/";
redirectStrategy.sendRedirect(request, response, targetUrl);
}
}
Ich gehe davon aus, dass Sie einige Frühlingsdaten verwenden, um das '@ Repository' in Gang zu bringen? Welche Linie wirft die NPE eigentlich? Kannst du den relevanten Frühlingskontext zeigen? – Taylor
Wir müssen 'AuthenticationSuccessHandlerImpl' sehen. – chrylis
@ Taylor-Liste userList = this.dbUtil.executeHQLQuery (userCheckQry, Parameter, false); Diese Zeile wirft den Fehler – Swaprks