2017-06-03 150 views
-1

嘿,我的朋友我有我的代碼,他沒有工作的一些問題我認爲這個問題在我的類UserService,不能確定,請幫助我,當我運行我的程序我的控制檯網站公告:Struts2和Java:我有問題與我的功能Java他沒有與數據庫(MySQL)

蹤跡

java.lang.NullPointerException 
    com.web.actions.UtlisateurAction.listUsers(UtlisateurAction.java:67) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:498) 
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450) 
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252) 
    org.apache.struts2.interceptor.DeprecationInterceptor.intercept(DeprecationInterceptor.java:41) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) 
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:254) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:254) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:139) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) 
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562) 
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317) 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:100) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
    org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214) 
    org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) 
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) 
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506) 
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) 
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 

You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set: 

    struts.devMode=false 
in your WEB-INF/classes/struts.properties file. 

UtlisateurAction.java

package com.web.actions; 

import java.util.List; 

import com.app.business.bo.security.Role; 
import com.app.business.bo.security.Utlisateur; 
import com.app.business.services.UtlisateurService; 
import com.app.exceptions.DuplicateLoginException; 
import com.web.BaseAction; 

public class UtlisateurAction extends BaseAction { 



    private UtlisateurService userService; 

    private List<Utlisateur> listUsers; 

    private Utlisateur utilisateur; 

    private List<Role> listRoles; 

    private Long selectedRole; 


    public String passage(){ 
     System.out.println("Passage"); 
    return SUCCESS; 
    } 
    public String showMenu(){ 
     System.out.println("User Access"); 
     return SUCCESS; 
    } 

    public String initFormAddUser() { 
     listRoles = userService.getAllRoles(); 

     return SUCCESS; 
    } 

    public String addUser() { 

     try { 
      utilisateur.setRole(userService.getRoleById(selectedRole)); 
      userService.addUtilisateur(utilisateur); 

     } catch (DuplicateLoginException ex) { 
      addActionError("Operation non effectuee a cause d'une erreur"); 

      ex.printStackTrace(); 
      return "error"; 

     } catch (Exception ex) { 
      addActionError("Operation non effectuee à cause d'une erreur"); 

      ex.printStackTrace(); 
      return "error"; 

     } 
     // on affiche une page d'erreur 
     addActionMessage("Utilisateur ajoutée avec succées"); 
     return SUCCESS; 
    } 

    public String listUsers() { 
     System.out.println("On train de detecter"); 
     listUsers = userService.getAllUsers(); 
     System.out.println("GET ALL USERS"); 
     return SUCCESS; 
    } 

    public List<Utlisateur> getListUsers() { 
     return listUsers; 
    } 

    public void setListUsers(List<Utlisateur> listUsers) { 
     this.listUsers = listUsers; 
    } 

    public UtlisateurService getUserService() { 
     return userService; 
    } 

    public void setUserService(UtlisateurService userService) { 
     this.userService = userService; 
    } 

    public Utlisateur getUtilisateur() { 
     return utilisateur; 
    } 

    public void setUtilisateur(Utlisateur utilisateur) { 
     this.utilisateur = utilisateur; 
    } 

    public List<Role> getListRoles() { 
     return listRoles; 
    } 

    public void setListRoles(List<Role> listRoles) { 
     this.listRoles = listRoles; 
    } 

    public Long getSelectedRole() { 
     return selectedRole; 
    } 

    public void setSelectedRole(Long selectedRole) { 
     this.selectedRole = selectedRole; 
    } 

} 

UtlisateurServiceImpl.java

package com.services.impl; 

import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.Collection; 
import java.util.List; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import org.springframework.dao.DataIntegrityViolationException; 
import org.springframework.orm.ObjectRetrievalFailureException; 
import org.springframework.security.authentication.encoding.ShaPasswordEncoder; 
import org.springframework.security.core.GrantedAuthority; 
import org.springframework.security.core.authority.SimpleGrantedAuthority; 
import org.springframework.security.core.userdetails.User; 
import org.springframework.security.core.userdetails.UserDetails; 
import org.springframework.security.core.userdetails.UserDetailsService; 
import org.springframework.security.core.userdetails.UsernameNotFoundException; 

import com.bo.security.Role; 
import com.bo.security.Utilisateur; 
import com.boudaa.dao.exceptions.EntityNotFoundException; 
import com.dao.RoleDao; 
import com.dao.UtilisateurDao; 
import com.exceptions.DuplicateLoginException; 
import com.services.UtilisateurService; 

public class UtilisateurServiceImpl implements UtilisateurService, UserDetailsService { 

    private UtilisateurDao userDao; 
    private RoleDao roleDao; 

    protected final Log log = LogFactory.getLog(getClass()); 

    public UserDetails loadUserByUsername(String pLogin) throws UsernameNotFoundException { 
     Utilisateur lUser = null; 
     Collection<GrantedAuthority> arrayAuths = new ArrayList<GrantedAuthority>(); 

     // On récupère un objet de domaine de type User ayant comme login pLogin 
     try { 
      lUser = userDao.getUserByLogin(pLogin); 

     } catch (ObjectRetrievalFailureException ex) { 
      ex.printStackTrace(); 

      // nous relançons une UsernameNotFoundException si aucun utilisateur 
      // ne correspond à cet login 
      log.debug("Erreur d'authentification avec le login : " + pLogin); 
      throw new UsernameNotFoundException("User " + pLogin + " not exists", ex); 

     } 


     // Si un utilisateur correspond à cet identifiant, nous en profitons 
     // pour mettre à jour sa date de dernière connexion 
     lUser.setLastAccessDate(Calendar.getInstance().getTime()); 
     userDao.update(lUser); 
     // Il faut ensuite récupérer les rôles de l’utilisateur et les 
     // mettre 
     // sous la forme de SimpleGrantedAuthority, une interface propre à 
     // Spring 
     // Security* 

     Role role = lUser.getRole(); 
     arrayAuths.add(new SimpleGrantedAuthority(role.getRoleName())); 
     // /un User (classe Spring Security) est créé 
     System.out.println("oui"); 
     return new User(pLogin, lUser.getPassword(), lUser.isEnabled(), lUser.isAccountNotExpired(), true, 
       lUser.isAccountNotLocked(), arrayAuths); 
    } 


    public Utilisateur getUserByLogin(String pLogin) throws EntityNotFoundException { 

     List<Utilisateur> users; 
     try { 
      users = userDao.getEntityByColumn("Utilisateur", "login", pLogin); 

     } catch (ObjectRetrievalFailureException ex) { 

      throw new EntityNotFoundException("Aucun utilisateur avec le login : " + pLogin); 
     } 

     if (users.size() != 1) { 
      // TODO : Ecrire le code pour ajouter des log fatal 
      // TODO : ecrire le code envoyant un mail d'erreur fatal à 
      // l'administrateur 

      throw new RuntimeException("Erreur inconnue dans le systeme"); 
     } 

     return users.get(0); 
    } 
    public void addUtilisateur(Utilisateur user) throws DuplicateLoginException { 

     // pour hacher avec SHA1 
     ShaPasswordEncoder encoder = new ShaPasswordEncoder(); 


     // Hachage du mot de passe avec un gain de sel variable = login 
     String cryptedPassword = encoder.encodePassword(user.getPassword(), 
       user.getLogin()); 

     // affecter le mot de passe haché 
     user.setPassword(cryptedPassword); 

     // stockage de l'utilisateur dans la base de données 
     try { 
      userDao.create(user); 

     } catch (DataIntegrityViolationException ex) { 
      log.error("erreur d'ajout d'un utilisateur à cause de l'exception " + ex 
        + " . un utilisateur avec le login " + user.getLogin() + " existe déjà dans la base de données"); 
      throw new DuplicateLoginException("Erreur d'inscription, login existe déjà ", ex); 
     } 

    } 

    public Role getRoleByName(String roleName) { 
     return roleDao.getRoleByName(roleName); 
    } 

    public Role getRoleById(Long pRoleId) throws EntityNotFoundException { 
     return roleDao.findById(pRoleId); 
    } 

    public List<Utilisateur> getAllUsers() { 
     return userDao.getAll(); 
    } 

    public List<Role> getAllRoles() { 
     return roleDao.getAll(); 
    } 

    public void deleteUser(Utilisateur u) throws EntityNotFoundException { 

     userDao.delete(u.getIdUtilisateur()); 

    } 

    public UtilisateurDao getUserDao() { 
     return userDao; 
    } 

    public void setUserDao(UtilisateurDao userDao) { 
     this.userDao = userDao; 
    } 

    public RoleDao getRoleDao() { 
     return roleDao; 
    } 

    public void setRoleDao(RoleDao roleDao) { 
     this.roleDao = roleDao; 
    } 


} 
+0

您是否曾將「userService」設置爲任何內容?在我看來,當你嘗試在'listUsers'中使用它時,它可能仍然是'null'。 –

+0

在'UtlisateurAction'類中,可以用下面的代碼片段替換'listUsers()'方法並嘗試嗎? 'public String listUsers(){ System.out.println(「On train de detecter」); listUsers = new UtlisateurService()。getAllUsers(); System.out.println(「GET ALL USERS」); return SUCCESS; }' – harshavmb

+0

謝謝,但我在春天工作,他管理實例 – malkimou

回答

0

它看起來像是bean id在applicationContext.xml中可用,那麼它將被注入到動作bean中。否則,在豆保持未初始化時,預期值爲null

對於帶彈簧的集成式支柱,您需要struts-spring-plugin

Spring是一個輕量級的容器,提供您的應用程序對象的集中式,自動化的 配置和佈線,使用 技術稱爲「依賴注入」

春季插件的工作原理是覆蓋了Struts ObjectFactory到 增強核心框架對象的創建。當創建一個對象爲 時,它將使用Struts配置中的類屬性 對應於Spring配置中的id屬性。如果找不到 ,則班級將嘗試按照慣例創建,然後由 自動佈線彈簧。在動作的情況下,Spring 2的bean作用域功能可以是 ,用於將Action實例作用於會話,應用程序或 自定義作用域,從而提供高於默認的 每個請求範圍的高級自定義。

Spring動作是可選的!

相關問題