java - Struts 2 Hibernate null pointer exception while submitting the form -
i trying create registration page integrating struts 2 & hibernate. when running below code , getting null pointer exception when click register button.
hibernate configuration file:
<hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.mysqldialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost/db_socialnetwork</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <mapping resource="hibernate.hbm.xml"/> </session-factory> </hibernate-configuration> hibernate mapping file:
<hibernate-mapping> <class name="models.user" table="tbl_user"> //dao class <meta attribute="class-description"> class contains sample. </meta> <id column="user_id" name="id" type="int"> <generator class="increment"/> </id> <property column="user_name" name="name" type="string"/> <property column="user_pwd" name="pwd" type="string"/> <property column="user_email" name="email" type="string"/> <property column="user_address" name="address" type="string"/> <property column="user_phno" name="phno" type="int"/> </class> </hibernate-mapping> struts.xml:
<struts> <!-- configuration default package. --> <constant name="struts.devmode" value="true" /> <package name="default" extends="struts-default" namespace="/"> <action name="register" class="models.registeraction" method="execute"> <result name="success">/home.jsp</result> </action> </package> </struts> web.xml:
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> hibernateutil:
public class hibernateutil { private static final sessionfactory sessionfactory; static { try { //new schemaexport(config).create(true,true); sessionfactory = new configuration().configure().buildsessionfactory(); } catch (throwable ex) { // log exception. system.err.println("initial sessionfactory creation failed." + ex); throw new exceptionininitializererror(ex); } } public static sessionfactory getsessionfactory() { return sessionfactory; } } registration form:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp page</title> </head> <body> <s:form action="register"> <s:textfield name="name" label="name"/> <s:textfield name="pwd" label="password"/> <s:textfield name="email" label="email"/> <s:textarea name="address" label="address"/> <s:textfield name="phno" label="mobile"/> <s:submit value="register"/> </s:form> </body> </html> registeraction:
public class registeraction extends actionsupport implements modeldriven<user>{ user u = new user(); userdao udao = new userdao(); public registeraction() { } public string execute() throws exception { udao.adduser(u); return "success"; } @override public user getmodel() { throw new unsupportedoperationexception("not supported yet."); } public user getu() { return u; } public void setu(user u) { this.u = u; } } user class:
public class user { int id, phno; string name, pwd, email, address; public string getaddress() { return address; } public void setaddress(string address) { this.address = address; } public string getemail() { return email; } public void setemail(string email) { this.email = email; } public int getid() { return id; } public void setid(int id) { this.id = id; } public string getname() { return name; } public void setname(string name) { this.name = name; } public int getphno() { return phno; } public void setphno(int phno) { this.phno = phno; } public string getpwd() { return pwd; } public void setpwd(string pwd) { this.pwd = pwd; } } userdao:
class userdao { public userdao() { } public static void adduser(user u) { session session = hibernateutil.getsessionfactory().opensession(); transaction t = session.begintransaction(); int = (integer)session.save(u); t.commit(); session.close(); } } the database consists of following fields:
- id - autogenerated , int , primary key
- name,
- pwd,
- email,
- address - string,
- phno - int
error being displayed is:
info: hibernate 3.2.5 info: hibernate.properties not found info: bytecode provider name : cglib info: using jdk 1.4 java.sql.timestamp handling info: configuring resource: /hibernate.cfg.xml info: configuration resource: /hibernate.cfg.xml info: reading mappings resource : hibernate.hbm.xml severe: error parsing xml: xml inputstream(17) content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)". severe: initial sessionfactory creation failed.org.hibernate.invalidmappingexception: not parse mapping document resource hibernate.hbm.xml warning: standardwrappervalve[default]: pwc1406: servlet.service() servlet default threw exception org.xml.sax.saxparseexception: content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)". @ com.sun.org.apache.xerces.internal.util.errorhandlerwrapper.createsaxparseexception(errorhandlerwrapper.java:198) @ com.sun.org.apache.xerces.internal.util.errorhandlerwrapper.error(errorhandlerwrapper.java:134) @ com.sun.org.apache.xerces.internal.impl.xmlerrorreporter.reporterror(xmlerrorreporter.java:387) @ com.sun.org.apache.xerces.internal.impl.xmlerrorreporter.reporterror(xmlerrorreporter.java:321) @ com.sun.org.apache.xerces.internal.impl.dtd.xmldtdvalidator.handleendelement(xmldtdvalidator.java:2020) @ com.sun.org.apache.xerces.internal.impl.dtd.xmldtdvalidator.endelement(xmldtdvalidator.java:904) @ com.sun.org.apache.xerces.internal.impl.xmldocumentfragmentscannerimpl.scanendelement(xmldocumentfragmentscannerimpl.java:1750) @ com.sun.org.apache.xerces.internal.impl.xmldocumentfragmentscannerimpl$fragmentcontentdriver.next(xmldocumentfragmentscannerimpl.java:2906) @ com.sun.org.apache.xerces.internal.impl.xmldocumentscannerimpl.next(xmldocumentscannerimpl.java:624) @ com.sun.org.apache.xerces.internal.impl.xmlnsdocumentscannerimpl.next(xmlnsdocumentscannerimpl.java:116) @ com.sun.org.apache.xerces.internal.impl.xmldocumentfragmentscannerimpl.scandocument(xmldocumentfragmentscannerimpl.java:486) @ com.sun.org.apache.xerces.internal.parsers.xml11configuration.parse(xml11configuration.java:810) @ com.sun.org.apache.xerces.internal.parsers.xml11configuration.parse(xml11configuration.java:740) @ com.sun.org.apache.xerces.internal.parsers.xmlparser.parse(xmlparser.java:110) @ com.sun.org.apache.xerces.internal.parsers.abstractsaxparser.parse(abstractsaxparser.java:1208) @ com.sun.org.apache.xerces.internal.jaxp.saxparserimpl$jaxpsaxparser.parse(saxparserimpl.java:525) @ org.dom4j.io.saxreader.read(saxreader.java:465) @ org.hibernate.cfg.configuration.addinputstream(configuration.java:499) @ org.hibernate.cfg.configuration.addresource(configuration.java:566) @ org.hibernate.cfg.configuration.parsemappingelement(configuration.java:1587) @ org.hibernate.cfg.configuration.parsesessionfactory(configuration.java:1555) @ org.hibernate.cfg.configuration.doconfigure(configuration.java:1534) @ org.hibernate.cfg.configuration.doconfigure(configuration.java:1508) @ org.hibernate.cfg.configuration.configure(configuration.java:1428) @ org.hibernate.cfg.configuration.configure(configuration.java:1414) @ models.hibernateutil.<clinit>(hibernateutil.java:24) @ models.registeraction.<init>(registeraction.java:10) @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) @ java.lang.reflect.constructor.newinstance(constructor.java:539) @ java.lang.class.newinstance0(class.java:372) @ java.lang.class.newinstance(class.java:325) @ com.opensymphony.xwork2.objectfactory.buildbean(objectfactory.java:119) @ com.opensymphony.xwork2.objectfactory.buildbean(objectfactory.java:150) @ com.opensymphony.xwork2.objectfactory.buildbean(objectfactory.java:139) @ com.opensymphony.xwork2.objectfactory.buildaction(objectfactory.java:109) @ com.opensymphony.xwork2.defaultactioninvocation.createaction(defaultactioninvocation.java:288) @ com.opensymphony.xwork2.defaultactioninvocation.init(defaultactioninvocation.java:388) @ com.opensymphony.xwork2.defaultactionproxy.prepare(defaultactionproxy.java:187) @ org.apache.struts2.impl.strutsactionproxy.prepare(strutsactionproxy.java:61) @ org.apache.struts2.impl.strutsactionproxyfactory.createactionproxy(strutsactionproxyfactory.java:39) @ com.opensymphony.xwork2.defaultactionproxyfactory.createactionproxy(defaultactionproxyfactory.java:47) @ org.apache.struts2.dispatcher.dispatcher.serviceaction(dispatcher.java:478) @ org.apache.struts2.dispatcher.ng.executeoperations.executeaction(executeoperations.java:77) @ org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter.dofilter(strutsprepareandexecutefilter.java:91) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:256) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:217) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:279) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:175) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:655) @ org.apache.catalina.core.standardpipeline.invoke(standardpipeline.java:595) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:161) @ org.apache.catalina.connector.coyoteadapter.doservice(coyoteadapter.java:331) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:231) @ com.sun.enterprise.v3.services.impl.containermapper$adaptercallable.call(containermapper.java:317) @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:195) @ com.sun.grizzly.http.processortask.invokeadapter(processortask.java:860) @ com.sun.grizzly.http.processortask.doprocess(processortask.java:757) @ com.sun.grizzly.http.processortask.process(processortask.java:1056) @ com.sun.grizzly.http.defaultprotocolfilter.execute(defaultprotocolfilter.java:229) @ com.sun.grizzly.defaultprotocolchain.executeprotocolfilter(defaultprotocolchain.java:137) @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:104) @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:90) @ com.sun.grizzly.http.httpprotocolchain.execute(httpprotocolchain.java:79) @ com.sun.grizzly.protocolchaincontexttask.docall(protocolchaincontexttask.java:54) @ com.sun.grizzly.selectionkeycontexttask.call(selectionkeycontexttask.java:59) @ com.sun.grizzly.contexttask.run(contexttask.java:71) @ com.sun.grizzly.util.abstractthreadpool$worker.dowork(abstractthreadpool.java:532) @ com.sun.grizzly.util.abstractthreadpool$worker.run(abstractthreadpool.java:513) @ java.lang.thread.run(thread.java:717)
you misunderstand dao/dto pattern. dao/dtos should not static. , sessionfactory better build once per application, because it's time consuming procedure.
better implement session per thread pattern. write class hibernateutil build sessionfactory , session.
then dao like
public class userdao { public session getsession() { return hibernateutil.getsession(); } public void closesession() { hibernateutil.closesession(); } public void adduser(user u) { session session = getsession(); transaction t = session.begintransaction(); int = (integer)session.save(u); t.commit(); closesession(); } } in action write
private userdao userdao = new userdao(); public string execute() throws exception { user u = new user(); u.setaddress(address); u.setemail(email); u.setname(name); u.setphno(phno); u.setpwd(pwd); userdao.adduser(u); return "success"; }
Comments
Post a Comment