自己写的一个简单JAVA网络通讯录

来源:互联网 发布:程序员写博客的网站 编辑:程序博客网 时间:2024/04/29 09:08
 
定义一个简单的JAVABEAN;
我是用exlipse编写的,这里没有导包的功能,只能把内容列这里了,用到的技术有:servlete,hibernate
mysql,用HTML编写的映射文档;
package model;public class User {private int id;private String username;private String password;private String realName;private String sex;private String school;private String address;private String email;private String phone;public User(String username, String password) {this.username = username;this.password = password;}public User() {}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 getRealName() {return realName;}public void setRealName(String realName) {this.realName = realName;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getSchool() {return school;}public void setSchool(String school) {this.school = school;}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 String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public int getId() {return id;}public void setId(int id) {this.id = id;}}
//建立User类到数据库的映射
<?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 package="model"><class name="User" table="user"><id name="id"><generator class="identity" /></id><property name="username" length="10" not-null="true" unique="true"/><property name="password" length="10" not-null="true" /><property name="realName" not-null="true" /><property name="sex" not-null="true" /><property name="school" /><property name="address" /><property name="email" /><property name="phone" /></class></hibernate-mapping>
 
 
//用监听器实现hibernate的配置
package control;import java.io.File;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class SessionFactoryListener implements ServletContextListener {public static final String SESSION_FACTORY_KEY = "hibernate_session_factory";public static final String CONFIG_FILE_KEY = "configuration-file";@Overridepublic void contextInitialized(ServletContextEvent event) {ServletContext sc = event.getServletContext();String filename = sc.getInitParameter(CONFIG_FILE_KEY);SessionFactory sf = null;if (filename == null) {Configuration config = new Configuration().configure();sf = config.buildSessionFactory();} else {Configuration config = new Configuration().configure(new File(sc.getRealPath(filename)));sf = config.buildSessionFactory();}if (sf != null) {sc.setAttribute(SESSION_FACTORY_KEY, sf);}}@Overridepublic void contextDestroyed(ServletContextEvent event) {ServletContext sc = event.getServletContext();SessionFactory sf = (SessionFactory) sc.getAttribute(SESSION_FACTORY_KEY);if (sf != null)sf.close();}}
 
//如下代码实现了接收请求以及做出的部分回应,写得有点乱,功能没有独立开,不过不想改了;
 
package control;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import view.SuccessView;import model.User;public class LoginServlet extends HttpServlet {private static final long serialVersionUID = -154176561953216931L;private static final String USERNAME_PARAMETER = "username";private static final String PASSWORD_PARAMETER = "password";private static final String SEX_PARAMETER="sex";private static final String REALNAME_PARAMETER="realName";private static final String SCHOOL_PARAMETER="school";private static final String ADDRESS_PARAMETER="address";private static final String EMAIL_PARAMETER="email";@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {SessionFactory sf = (SessionFactory) this.getServletContext().getAttribute(SessionFactoryListener.SESSION_FACTORY_KEY);Session session = null;try {session  = sf.openSession();User user=new User();String username=new String(req.getParameter(USERNAME_PARAMETER).getBytes("ISO-8859-1"),"UTF-8");user.setUsername(username);user.setPassword(req.getParameter(PASSWORD_PARAMETER));String sex=new String(req.getParameter(SEX_PARAMETER).getBytes("ISO-8859-1"),"UTF-8");user.setSex(sex);String realName=new String(req.getParameter(REALNAME_PARAMETER).getBytes("ISO-8859-1"),"UTF-8");user.setRealName(realName);String school=new String(req.getParameter(SCHOOL_PARAMETER).getBytes("ISO-8859-1"),"UTF-8");user.setSchool(school);String address=new String(req.getParameter(ADDRESS_PARAMETER).getBytes("ISO-8859-1"),"UTF-8");user.setAddress(address);user.setEmail(req.getParameter(EMAIL_PARAMETER));session.beginTransaction();session.save(user);session.getTransaction().commit();if (user.getUsername().trim().length()!=0)new LoginServlet().outputSucceed(resp, user);elsenew LoginServlet().outputFailed(resp);} catch (Exception e) {e.printStackTrace();outputError(resp);} finally {session.close();}}private void outputSucceed(HttpServletResponse resp, User user) throws Exception {resp.setContentType("text/html; charset=UTF-8");PrintWriter pw = resp.getWriter();pw.println("<html>");pw.println("<body>");pw.println("<fieldset>");pw.println("<legend>用户信息</legend>");pw.println("<label>您好:</label>" + user.getUsername() + "<br/>");pw.println("恭喜您注册成功!");pw.println("</fieldset>");pw.println("</body>");pw.println("</html>");new SuccessView().loginSucceed(resp);}public  void outputFailed(HttpServletResponse resp) throws IOException {resp.setContentType("text/html; charset=UTF-8");PrintWriter pw = resp.getWriter();pw.println("<html>");pw.println("<body>");pw.println("无效的用户名或密码!");pw.println("<hr/>");pw.println("<a href=/"index.html/">返回首页</a>");pw.println("</body>");pw.println("</html>");}private void outputError(HttpServletResponse resp) throws IOException {resp.setContentType("text/html; charset=UTF-8");PrintWriter pw = resp.getWriter();pw.println("<html>");pw.println("<body>");pw.println("用户名重复,请重新输入!");pw.println("<hr/>");pw.println("<a href=/"index.html/">返回首页</a>");pw.println("</body>");pw.println("</html>");}}
 
//查询代码,我写得有点复杂,肯定有简单的方式,大家多想想;
package control;import java.io.IOException;import java.io.PrintWriter;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import model.User;import org.hibernate.* ;import org.hibernate.Session;import org.hibernate.SessionFactory;import view.SuccessView;public class Select extends HttpServlet {private static final String USERNAME_PARAMETER="username";User user;ArrayList<String> list1=null;ArrayList<String> list2=null;ArrayList<String> list3=null;ArrayList<String> list4=null;ArrayList<String> list5=null;ArrayList<String> list6=null;ArrayList<String> list7=null;/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {SessionFactory sf = (SessionFactory) this.getServletContext().getAttribute(SessionFactoryListener.SESSION_FACTORY_KEY);Session session = null;try{session=sf.openSession();user=new User();Query query1=session.createQuery("select username from User   where username=?");query1.setParameter(0, req.getParameter(USERNAME_PARAMETER )); list1=(ArrayList<String>)query1.list();user.setUsername(list1.get(0));Query query2=session.createQuery("select realName from User   where username=?");query2.setParameter(0, req.getParameter(USERNAME_PARAMETER ));list2=(ArrayList<String>)query2.list();user.setRealName(list2.get(0));Query query3=session.createQuery("select sex from User   where username=?");query3.setParameter(0, req.getParameter(USERNAME_PARAMETER ));list3=(ArrayList<String>)query3.list();user.setSex(list3.get(0));Query query4=session.createQuery("select school from User   where username=?");query4.setParameter(0, req.getParameter(USERNAME_PARAMETER ));list4=(ArrayList<String>)query4.list();user.setSchool(list4.get(0));Query query5=session.createQuery("select address from User   where username=?");query5.setParameter(0, req.getParameter(USERNAME_PARAMETER ));list5=(ArrayList<String>)query5.list();user.setAddress(list5.get(0));Query query6=session.createQuery("select email from User   where username=?");query6.setParameter(0, req.getParameter(USERNAME_PARAMETER ));list6=(ArrayList<String>)query6.list();user.setEmail(list6.get(0));Query query7=session.createQuery("select phone from User   where username=?");query7.setParameter(0, req.getParameter(USERNAME_PARAMETER ));list7=(ArrayList<String>)query7.list();user.setPhone(list7.get(0));resp.setContentType("text/html; charset=UTF-8");PrintWriter pw=resp.getWriter();pw.println("<html>");pw.println("<body>");pw.println("您所查询的"+user.getRealName()+"个人信息:"+"<br/>");pw.println("用户名:"+user.getUsername()+"<br/>");pw.println("真实姓名:"+user.getRealName()+"<br/>");pw.println("性别:"+user.getSex()+"<br/>");pw.println("学校:"+user.getSchool()+"<br/>");pw.println("家庭住址:"+user.getAddress()+"<br/>");pw.println("邮箱:"+user.getEmail()+"<br/>");pw.println("联系电话:"+user.getPhone()+"<br/>");pw.println("</body>");pw.println("<html>");}catch(Exception e){new Select().faild(resp);}}private void faild(HttpServletResponse resp) throws IOException{resp.setContentType("text/html; charset=UTF-8");PrintWriter pw=resp.getWriter();pw.println("<html>");pw.println("<body>");pw.println("您查询的信息不存在!");pw.println("<a href=/"suceess.do/">返回</a>");pw.println("</body>");pw.println("</html>");}}
 
 
//只是个登录界面,比较简单,本来我想做个MVC结构的,可是那要好好的组织代码,花得时间太长,只好放弃
package view;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import model.User;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import control.LoginServlet;import control.SessionFactoryListener;public class SuccessView extends HttpServlet {private static final String USERNAME_PARAMETER="username";private static final String PASSWORD_PARAMETER="password";public static final String USER_ENTITY="user";@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {SessionFactory sf = (SessionFactory) this.getServletContext().getAttribute(SessionFactoryListener.SESSION_FACTORY_KEY);Session session = null;String username=(String)req.getParameter(USERNAME_PARAMETER);String password=(String)req.getParameter(PASSWORD_PARAMETER);try{if(username.trim().length()!=0){session=sf.openSession();Query query = session.createQuery("from User where username= ? and password = ?");query.setParameter(0, username);query.setParameter(1, password);//req.setAttribute("username",USERNAME_PARAMETER );User user=(User)query.uniqueResult();HttpSession hs=req.getSession();hs.getAttribute(USER_ENTITY);if(query.uniqueResult() != null){loginSucceed(resp);}else{new LoginServlet().outputFailed(resp);}}else{new LoginServlet().outputFailed(resp);}}catch(Exception e){new LoginServlet().outputFailed(resp);}finally{}}public  void loginSucceed(HttpServletResponse resp)throws IOException{resp.setContentType("text/html; charset=UTF-8");PrintWriter pw = resp.getWriter();pw.println("<html>");pw.println("<body>");pw.println("<label>您好:</label>"  +"欢迎来到网络通讯录!"+ "<br/>");pw.println("<hr/>");pw.println("<a href=/"index.html/">返回首页</a>");pw.println("<form method=/"post/" action=/"select/"");pw.println("<table>");pw.println("<tr>");pw.println("<td>");pw.println("<input type=/"submit/" name=/"select/" value=/"查询/">");pw.println("</td>");pw.println("<td>");pw.println("<input name=/"username/" type=/"text/" maxlength=/"10/">");pw.println("</td>");pw.println("</tr>");pw.println("</form>");pw.println("</body>");pw.println("</html>");}}
还有HTML做的界面,在下面的文章里将给大家列出来.