java - When I try to run my WEB Application I get this error -
this question has answer here:
- what nullpointerexception, , how fix it? 12 answers
05-jan-2016 23:44:35.610 severe [http-apr-8080-exec-2] org.springframework.security.web.authentication.usernamepasswordauthenticationfilter.dofilter internal error occurred while trying authenticate user.
org.springframework.security.authentication.internalauthenticationserviceexception caused by: java.lang.nullpointerexception @ dao.userdaoimpl.getuser(userdaoimpl.java:36) @ service.userdetailsserviceimpl.loaduserbyusername(userdetailsserviceimpl.java:38) @ org.springframework.security.authentication.dao.daoauthenticationprovider.retrieveuser(daoauthenticationprovider.java:102)
my web.xml
<display-name>spring mvc application</display-name> <context-param> <param-name>contextconfiglocation</param-name> <param-value> /web-inf/mvc-dispatcher-security.xml /web-inf/mvc-dispatcher-servlet.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <filter> <filter-name>springsecurityfilterchain</filter-name> <filter-class>org.springframework.web.filter.delegatingfilterproxy</filter-class> </filter> <filter-mapping> <filter-name>springsecurityfilterchain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> security.xml
<security:http auto-config="true" > <security:intercept-url pattern="/admin-panel" access="role_admin"/> <security:intercept-url pattern="/user_panel" access= "role_user"/> <security:form-login login-page="/welcome" default-target-url="/default" username-parameter="username" password-parameter="password"/> </security:http> <bean class="service.userdetailsserviceimpl" id="userdetailsservice" autowire="bytype"> </bean> <security:authentication-manager > <security:authentication-provider user-service-ref="userdetailsservice"> </security:authentication-provider> </security:authentication-manager> servlet.xml
<context:component-scan base-package="springapp.mvc,service,dao,domain"/> <context:annotation-config/> <mvc:annotation-driven/> <mvc:default-servlet-handler /> <mvc:resources mapping="/resources/**" location="resources/"> </mvc:resources> <bean class="org.springframework.web.servlet.view.internalresourceviewresolver"> <property name="prefix" value="/web-inf/pages/"/> <property name="suffix" value=".jsp"/> </bean> <bean id="template" class="org.springframework.jdbc.core.jdbctemplate"> <property name="datasource" ref="datasource"> </property> </bean> <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <property name="driverclassname" value="com.mysql.jdbc.driver"/> <property name="url" value="jdbc:mysql://localhost:3306/votingsystem"/> <property name="username" value="root"/> <property name="password" value="anl14anl14"/> </bean> user.java
package domain; public class user { private string username; private string password; private string role; public user(string username, string password,string role ) { this.username = username; this.password = password; this.role=role; } public user() { } public boolean enter(string username, string password) { this.username = username; this.password = password; return true; } public string getusername() { return username; } public void setusername(string username) { this.username = username; } public string getpassword() { return password; } public void setpassword(string password) { this.password = password; } public string getrole() { return role; } public void setrole(string role) { this.role = role; } } userdao.java
package dao; import domain.user; import org.springframework.security.core.userdetails.userdetailsservice; import java.util.list; public interface userdao { public user getuser(string username); } userdaoimpl.java
package dao; import domain.user; import domain.usermapper; import org.springframework.beans.factory.annotation.autowired; import org.springframework.jdbc.core.jdbctemplate; import org.springframework.security.core.userdetails.userdetails; import org.springframework.security.core.userdetails.userdetailsservice; import org.springframework.security.core.userdetails.usernamenotfoundexception; import org.springframework.stereotype.repository; @repository public class userdaoimpl implements userdao { private jdbctemplate template; private static final string find = "select role users username = ? "; public userdaoimpl() { } @override public user getuser(string username) { return template.queryforobject(find, new object[]{username}, user.class); } } userdetailsserviceimpl.java
package service; import dao.userdao; import domain.user; import org.springframework.beans.factory.annotation.autowired; import org.springframework.security.core.grantedauthority; import org.springframework.security.core.userdetails.userdetails; import org.springframework.security.core.userdetails.userdetailsservice; import org.springframework.security.core.userdetails.usernamenotfoundexception; import org.springframework.security.core.authority.simplegrantedauthority; import org.springframework.stereotype.service; import java.util.arraylist; import java.util.collection; import java.util.hashset; import java.util.set; @service public class userdetailsserviceimpl implements userdetailsservice { @autowired userdao userdao; @override public userdetails loaduserbyusername(string username) throws usernamenotfoundexception { user user = userdao.getuser(username); set<grantedauthority> roles = new hashset(); if (user.getrole().equals("admin")) roles.add(new simplegrantedauthority("role_admin")); else if (user.getrole().equals("user")) roles.add(new simplegrantedauthority("role_user")); userdetails userdetails =new org.springframework.security.core.userdetails.user(user.getusername(),user.getpassword(),roles); return userdetails; } } controller.java
package springapp.mvc; import dao.userdao; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.controller; import org.springframework.ui.model; import org.springframework.ui.modelmap; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestmethod; import org.springframework.web.bind.annotation.requestparam; import org.springframework.web.servlet.modelandview; import javax.servlet.http.httpservletrequest; @controller public class hellocontroller { @requestmapping (value = "/welcome") public string ( model model ) { return "welcome"; } @requestmapping (value = "/default") public string adminpage ( httpservletrequest request) { if (request.isuserinrole("role_admin")) { return "redirect:/admin-panel"; } else if (request.isuserinrole("role_user")) { return "redirect:/user_panel"; } return "redirect:/welcome"; } @requestmapping (value = "/user_panel") public modelandview regpage () { modelandview modelandview = new modelandview(); modelandview.setviewname("user_panel"); return modelandview; } @requestmapping (value = "/admin-panel") public modelandview adminpage () { modelandview modelandview = new modelandview(); modelandview.setviewname("admin-panel"); return modelandview; } } welcome.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title> hello </title> <meta charset="utf-8"> <c:url value="/resources/theme/css/main1.css" var="main"/> <link href="${main}" rel="stylesheet"/> </head> <body> <div id="wrapper" > <div id="header"> <h1> access elections </h1> </div> <div id="form_user"> <div id="registration "> </div> <div class="form"> <form method="post"> <div class="youinfo"> <div class="info youname"> <label for="name">name<input type="text" id="name" required /><span></span></label> <label for="login">login<input type="email" id="login" required /><span></span></label> <label for="password1">password<input type="password" id="password1" required /><span></span></label> <button type="submit">register</button> </div> </div> </form> </div> <p id="part"> </p> <div id="enter"> </div> <div class="form"> <form action="/j_spring_security_check" method="post" > <div class="enter"> <div class="enterin"> <label for="username">login<input type="text" name="username" id="username"/><span></span></label> <label for="password">password <input type="password" name="password" id="password" /><span></span></label> <button type="submit">sign in</button> </div> </div> </form> </div> </div> <div id ="footer"> </div> </div> </body> </html>
you might missing @autowired on private jdbctemplate template; in userdaoimpl.java.
@repository public class userdaoimpl implements userdao { @autowired private jdbctemplate template; ... }
Comments
Post a Comment