67,513
社区成员
发帖
与我相关
我的任务
分享
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;}
}
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);
}
<?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>
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;
}
}