2017-06-03 108 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动作是可选的!