求解ssh添加数据,报空指针

Mickey030 2016-07-03 09:25:24
Person.java

package com.forum.domain;

import java.io.File;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import com.forum.domain.Board;


public class Person implements Serializable
{
private String account;
private String password;
private String repwd;
private String sex;
private String name;
private String birthday;
private File photo;
private String role;
public String getAccount() {
return account;}
public void setAccount(String account) {
this.account = account;}
public String getPassword() {
return password;}
public void setPassword(String password) {
this.password = password;}
public String getRepwd() {
return repwd;}
public void setRepwd(String repwd) {
this.repwd = repwd;}
public File getPhoto() {
return photo;}
public void setPhoto(File photo) {
this.photo = photo;}
public String getSex() {
return sex;}
public void setSex(String sex) {
this.sex = sex;}

public String getName() {
return name;}
public void setName(String name) {
this.name = name;}
public String getBirthday() {
return birthday;}
public void setBirthday(String birthday) {
this.birthday = birthday;}
public String getRole() {
return role;}
public void setRole(String role) {
this.role = role;}
}


PersonDao.java

package com.forum.dao;
import java.util.List;
import com.forum.domain.Person;
public interface PersonDao
{
public Person findPersonByAccount(String account);
public List<Person> findAllPerson();
public Person findPerson(String account, String password);
public void addPerson (Person person);
public void updatePerson(Person person);
public int getTotalCount(String hql, Object... params);
public List<Person> list(String hql, int firstResult, int maxSize,Object... params);
}



...全文
123 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
com.forum.struts.action.PersonAction.add(PersonAction.java:179) 看不到这一行
Mickey030 2016-07-03
  • 打赏
  • 举报
回复
HTTP Status 500 - type Exception report message description The server encountered an internal error that prevented it from fulfilling this request. exception java.lang.NullPointerException com.forum.struts.action.PersonAction.add(PersonAction.java:179) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452) com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) 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:248) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:314) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.40 logs.
Mickey030 2016-07-03
  • 打赏
  • 举报
回复
applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

	<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/forum" />
		<property name="username" value="root" />
		<property name="password" value="123456" />
	</bean>

	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" /> 
        <property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQL5Dialect
				</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>Person.hbm.xml</value>
				<value>Category.hbm.xml</value>
				<value>Board.hbm.xml</value>
				<value>Thread.hbm.xml</value>
				<value>Reply.hbm.xml</value>
				
			</list>
		</property>
     </bean>
     
     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
     </bean>
	<!-- dao注入 -->
	<bean id="personDao" class="com.forum.dao.impl.PersonDaoImpl">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	<!-- service注入 -->
	<bean id="personService" class="com.forum.service.impl.PersonServiceImpl">
		<property name="personDao" ref="personDao"></property>
	</bean>
	<!-- action注入 -->
	<bean id="personAction" class="com.forum.struts.action.PersonAction">
	<!-- 此处的name为PersonAction中的 -->
		<property name="personService" ref="personService"></property>
	</bean>
	</beans>
register.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>注册</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<link rel="stylesheet" type="text/css" href="../css/core.css">

  </head>
  
  <body>
    <form action="${pageContext.request.contextPath }/person.action?action=register" method="post" id="register" name="register" enctype="multipart/form-data">
    
    <table align="center">
    	<tbody>
    		<tr>
    			<td colspan="3" align="center" height="80" valign="middle" style="color:black;font-size:28px"><strong>填写注册信息</strong></td>
    		</tr>
    		<tr height="50">
    			<td align="center">账号:</td>
    			<td align="center" valign="middle"><input type="text" id="account" name="person.account" class="txt" ></td>
    			<td align="left">${requestScope.errors.account }</td>
    		</tr >
    		<tr align="center" height="40">
    			<td>密码:</td>
    			<td  height="50" valign="middle"><input type="password" name="person.password" class="txt"></td>
    			<td align="left">${requestScope.errors.pwd }</td>
    		</tr>
    		<tr align="center" height="40">
    			<td>确认密码:</td>
    			<td   valign="middle"><input type="password"  name="person.repwd" class="txt"></td>
    			<td align="left">${requestScope.errors.repwd }</td>
    		</tr>
    		<tr align="center" height="40">	
    			<td>姓名:</td>
    			<td  valign="middle"><input type="text" name="person.name" class="txt"></td>
    			<td align="left"></td>
    		</tr>
<!--     		<tr  align="center" height="40"> -->
<!--     			<td>性别:</td> -->
<!--     			<td valign="middle"> -->
<!--     				<input type="radio" name="sex" value="1" />男 -->
<!-- 					<input type="radio" name="sex"  value="0" />女 -->
<!-- 				</td> -->
<!--     			<td></td> -->
<!--     		</tr> -->
    		<tr align="center" height="40">	
    			<td>生日:</td>
    			<td  valign="middle"><input type="text" id="birthday" name="person.birthday" class="txt"></td>
    			<td align="left">${requestScope.errors.birthday }</td>
    		</tr>
    		<tr align="center" height="40">
    			<td>照片:</td>
    			<td  valign="middle"><input type="file" id="photo" name="person.photo" style="width:170px;"></td>
    			<td align="left">${requestScope.errors.photo }</td>
    		</tr>
    		
    		<tr align="center" height="80">
    			<td colspan="3"  valign="middle"><input type="submit" class="btn f16" value="注册"></td>
    		</tr>
    	</tbody>
    </table>
    </form>

  </body>
</html>
struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<!-- 设计编码格式 -->
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	
	
<!-- 	<include file="struts2/struts-person.xml"></include> -->
	<package name="person_manager"   extends="struts-default">
		<action name="person" class="com.forum.struts.action.PersonAction" method="add">
			
			
			<result name="fail">/web/register.jsp</result>
			<result name="login">/web/login.jsp</result>
		</action>
	</package>
</struts>    
Mickey030 2016-07-03
  • 打赏
  • 举报
回复
PersonDaoImpl.java

package com.forum.dao.impl;
import java.util.List;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.forum.dao.PersonDao;
import com.forum.domain.Person;
public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao
{
	 String hql;
	 Query query;
	public Person findPersonByAccount(String account) 
	{
		hql="select p from person as p where u.account:=account";
		query=getSession().createQuery(hql);;
		//返回这条记录,而query.uniqueResult()只有实例为null或者1个的时候才能使用
		return (Person)query.uniqueResult();
	}

	public List<Person> findAllPerson() 
	{
		return null;
	}

	public Person findPerson(String account, String password)
	{
		hql="select p from person as p where u.account:=account";
		query=getSession().createQuery(hql);;
		//返回这条记录,而query.uniqueResult()只有实例为null或者1个的时候才能使用
		return (Person)query.uniqueResult();
	}

	public void addPerson(Person person) 
	{
		getSession().save(person);
	}

	public void updatePerson(Person person) 
	{
		getSession().update(person);
	}

	public int getTotalCount(String hql, Object... params) 
	{
		return 0;
	}

	public List<Person> list(String hql, int firstResult, int maxSize,Object... params) 
	{
		return null;
	}
}
person.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	 <class catalog="person" name="com.forum.domain.Person" table="person">
	  <id name="account" type="java.lang.String">
		   <column length="30" name="account"/>
		   <!-- 赋值 -->
		   <generator class="assigned"/>
	  </id>
	  <property generated="never" lazy="false" name="password" type="java.lang.String">
	  		<column length="30" name="password"/>
	  </property>
	  <property length="5" name="sex" type="java.lang.String">
	  		<column name="sex" length="5"></column>
	  </property>
	  <property name="name" type="java.lang.String">
	  		<column name="name" length="20"></column>
	  </property>
	  <property name="sex" type="java.lang.String">
	  		<column name="sex" length="10"></column>
	  </property>
	  <property name="birthday" type="java.util.Date">
	  		<column name="sex" length="10"></column>
	  </property>
	  <property name="photo" type="java.io.File">
	  		<column name="photo"></column>
	  </property>
	 </class>
</hibernate-mapping>
PersonService.java

package com.forum.service;

import java.util.List;

import com.forum.domain.Person;

public interface PersonService 
{

	//根据账号查找用户
	public Person findPersonByAccount(String account);

	//登录,根据账号、密码查找用户
	public Person findPerson(String account, String password);
	
	public void updatePerson(Person person);
	
	//新增
	public void addPerson(Person person);
	//总记录数
	public int getTotalCount(String hql, Object... params);
	//分页
	public List<Person> list(String hql, int firstResult, int maxSize,Object... params);
}
PersonServiceImpl.java

package com.forum.service.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.forum.dao.PersonDao;
import com.forum.domain.Person;
import com.forum.service.impl.ServiceImpl;
import com.forum.service.PersonService;

public class PersonServiceImpl implements PersonService
{
	private PersonDao personDao;

	public PersonDao getPersonDao() {
		return personDao;
	}

	public void setPersonDao(PersonDao personDao) {
		this.personDao = personDao;
	}

	public Person findPersonByAccount(String account)
	{
		return personDao.findPersonByAccount(account);
	}

	public Person findPerson(String account, String password) 
	{
		
		return personDao.findPerson(account, password);
	}

	public void updatePerson(Person person)
	{
		personDao.updatePerson(person);
	}

	public void addPerson(Person person)
	{
		try
		{
		person.setRole("普通");
		personDao.addPerson(person);
		}
		catch(Exception e) 
		{
			e.printStackTrace();
			System.out.println("异常"+e.getMessage());
		}
	}

	public int getTotalCount(String hql, Object... params) 
	{
		return personDao.getTotalCount(hql, params);
	}

	public List<Person> list(String hql, int firstResult, int maxSize,
			Object... params) 
	{
		return personDao.list(hql, firstResult, maxSize, params);
	}
}
PersonAction.java

package com.forum.struts.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.struts2.ServletActionContext;

import com.forum.domain.Person;
import com.forum.service.PersonService;
import com.forum.service.impl.PersonServiceImpl;
import com.forum.struts.util.Check;
import com.opensymphony.xwork2.ActionSupport;


public class PersonAction extends BaseAction
{

	private String filename;
	private String filetype;
	private String path;
	
	Check check=new Check();
	
	private PersonService personService;
	private Person person;
	public Map<String, String> errors = new HashMap<String, String>();
	String success="fail";
	
	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}
	
	public PersonService getPersonService() {
		return personService;
	}

	public void setPersonService(PersonService personService) {
		this.personService = personService;
	}

	public String getFilename() {
		return filename;
	}

	public void setFilename(String filename) {
		this.filename = filename;
	}

	public String getFiletype() {
		return filetype;
	}

	public void setFiletype(String filetype) {
		this.filetype = filetype;
	}

	public String getPath() {
		return path;
	}

	public void setPath(String path) {
		this.path = path;
	}

	//注册
	public String add()
	{
		errors.clear();
		String pwd;
		
		if(person.equals(null))
			System.out.println("person is null");
			
		if(person.getAccount().length()>=4&&person.getAccount().length()>=8)
			errors.put("account","请输入4~8位字母或数字");
		if(person.getPassword().length()>=6&&person.getPassword().length()>=20)
			errors.put("pwd", "请输入6~20位字母或数字");
		else
		{
			if(!person.getPassword().trim().equals(person.getRepwd().trim()))
				errors.put("repwd", "两次输入密码不一致");
			else
			{
				pwd=person.getPassword().trim();
			}
		}
		

		if(check.isValidDate(person.getBirthday().trim()))
		{
			errors.put("birthday", "请输入正确的日期格式,yyyy-MM-dd");
		}
		
		//图片
		filename=person.getPhoto().getName();
		filetype=filename.substring(filename.lastIndexOf(".")+1);
		if(filetype.equalsIgnoreCase("jpg")||filetype.equalsIgnoreCase("png")||filetype.equalsIgnoreCase("gif"))
		{
			//获取文件夹 /WEB-INF/classes
			 File classes=new File(getClass().getClassLoader().getResource("").getFile());
			 //获取文件夹 /upload
			 File fileUpLoadPath=new File(classes.getParentFile().getParentFile(),"/upload");
			 if(!fileUpLoadPath.exists())
			 {
				fileUpLoadPath.mkdir();
			 }
				//根据当前时间和随机数生成新的文件名
				//通过Date获取当前时间
				Date nowDate = new Date();
				//格式化时间对象返回字符串
				SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");
				filename=sdf.format(nowDate);
				filename+="."+filetype;
				//保存到 /upload
				File fileimage=new File(fileUpLoadPath,filename);
				OutputStream ous=null;  //文件输出流
				InputStream ins=null;   //上传文件输入流
				try
				{
					byte[] b=new byte[1024];  //缓存数组
					int len=0;
					
				    //上传文件输入流
					ins=new FileInputStream(person.getPhoto());
					//文件输出流
					ous=new FileOutputStream(fileimage);   
					while((len=ins.read(b))!=-1)        //循环读入上传文件
					{
						ous.write(b, 0, len);      //循环写到文件中
					}
					ins.close();
					ous.close();
				}
				catch(Exception e)
				{
					e.printStackTrace();
					errors.put("photo", "上传失败!");
				}
		}
		personService.addPerson(person);
		success="login";
		return success="fail";
	}
	public String login()
	{
		return success;
	}
}

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧