message管理系统(hibernate)

1、类的建立(在包message.domain中)
1.1、message
package message.domain;
import java.util.Date;
public class Message {
      private int id;// 标识
      private String from1;// 发件人
      private String to1;// 收件人
      private Date ctime; // 创建时间
      private String title;// 标题
      private String content;// 内容
      private int isread;
      public Message(int isread) {
            super();
            this.isread = isread;
      }
      public int getIsread() {
            return isread;
      }
      public void setIsread(int isread) {
            this.isread = isread;
      }
      public int getId() {
            return id;
      }
      public void setId(int id) {
            this.id = id;
      }
      public String getFrom1() {
            return from1;
      }
      public void setFrom1(String from1) {
            this.from1 = from1;
      }
      public String getTo1() {
            return to1;
      }
      public void setTo1(String to1) {
            this.to1 = to1;
      }
      public Date getCtime() {
            return ctime;
      }
      public void setCtime(Date ctime) {
            this.ctime = ctime;
      }
      public String getTitle() {
            return title;
      }
      public void setTitle(String title) {
            this.title = title;
      }
      public String getContent() {
            return content;
      }
      public void setContent(String content) {
            this.content = content;
      }
      @Override
      public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + id;
            return result;
      }
      @Override
      public boolean equals(Object obj) {
            if (this == obj)
                  return true;
            if (obj == null)
                  return false;
            if (getClass() != obj.getClass())
                  return false;
            Message other = (Message) obj;
            if (id != other.id)
                  return false;
            return true;
      }
      public Message(String content, Date ctime, String from1, int id,
                  String title, String to1) {
            super();
            this.content = content;
            this.ctime = ctime;
            this.from1 = from1;
            this.id = id;
            this.title = title;
            this.to1 = to1;
      }
      public Message() {
            super();
            // TODO Auto-generated constructor stub
      }
}
1.2、user
package message.domain;
public class User {
      private int id;
      private String name;
      private String pwd;
      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 String getPwd() {
            return pwd;
      }
      public void setPwd(String pwd) {
            this.pwd = pwd;
      }
      @Override
      public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + id;
            return result;
      }
      @Override
      public boolean equals(Object obj) {
            if (this == obj)
                  return true;
            if (obj == null)
                  return false;
            if (getClass() != obj.getClass())
                  return false;
            User other = (User) obj;
            if (id != other.id)
                  return false;
            return true;
      }
      public User(int id, String name, String pwd) {
            super();
            this.id = id;
            this.name = name;
            this.pwd = pwd;
      }
      public User() {
            super();
            // TODO Auto-generated constructor stub
      }
}

2、类的配置文件
2.1、message.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping  package="message.domain">
      <class name="Message" table="t_message" lazy="true">
        <id name="id">
                  <generator class="native"/>
        </id>           
            <property name="from1" />
            <property name="to1"/>
            <property name="ctime" />
            <property name="title" />
            <property name="content" />
            <property name="isread" />           
      </class>     
</hibernate-mapping>

2.2、user.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="message.domain">
      <class name="User" table="user" lazy="true">
        <id name="id">
                  <generator class="native"/>
        </id>           
            <property name="name"/>
            <property name="pwd" />           
      </class>   
</hibernate-mapping>

3、方法(在包message.service中)
3.1 方法的总名
package message.service;
import java.util.List;
import message.domain.Message;
import message.domain.User;
public interface ImessageService {
  public boolean createMessage(Message message);
  public boolean removeMessageById(int id);
  public List<Message> findMessages();
  public List<Message> findMessagesByFrom(String from);
  public User login(String name,String pwd);
  public boolean isExistsUnreadMessage(String name);
}
3.2、方法的实现
package message.service;
import java.math.BigInteger;
import java.util.Date;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import message.util.HibernateUtils;
import message.domain.Message;
import message.domain.User;

public class MessageServiceImpl implements ImessageService{   
      @Override
      public boolean createMessage(Message message) {           
            Session session=HibernateUtils.currentSession();
            Transaction tx=session.beginTransaction();
            session.save(message);
            tx.commit();//提交与关闭,每一次的保存、删除、更新,都需要
            HibernateUtils.closeSession();
            if(message!=null)
                  return true;
            else  return false;
      }
      @Override
      public List<Message> findMessages() {
            Session session=HibernateUtils.currentSession();
            List<Message> message=session.createQuery("from Message").list();
            HibernateUtils.closeSession();     
            return message;
      }
      @Override
      public List<Message> findMessagesByFrom(String from) {
            Session session=HibernateUtils.currentSession();
            String s="from Message as t_message where t_message.from1='"+from+"'";
            List<Message> users=session.createQuery(s).list();     
            HibernateUtils.closeSession();           
            return users;
      }
      @Override
      public User login(String name, String pwd) {
              Session session=(Session)HibernateUtils.currentSession();
              Query q = session.createQuery("from User where name = ? and pwd = ?");
                q.setString(0,name);
                q.setString(1,pwd);
                HibernateUtils.closeSession();
                User u = (User)q.uniqueResult();   
              if(u!=null){
                return u;
              }else return null;
            }
      @Override
      public boolean removeMessageById(int id) {                 
            Session session=HibernateUtils.currentSession();
            String sql="from Message as t_message where t_message.id='"+id+"'";
            List<Message> users=session.createQuery(sql).list();                 
            Message u=(Message)session.get(Message.class,id);
            Transaction tx=session.beginTransaction();
            if(u!=null){
              session.delete(u);
            }
           
              tx.commit();//提交与关闭每一次的保存、删除、更新,都需要
            HibernateUtils.closeSession();
            if(u==null) {return false;}
            else return true;           
      }

      @Override
      public boolean isExistsUnreadMessage(String name) {
            Session session=HibernateUtils.currentSession();
            String s="select count(*) from t_message where isread="+1+" and to1='"+name+"'";
            BigInteger i=(BigInteger)session.createSQLQuery(s).uniqueResult();     
            HibernateUtils.closeSession();                 
            return i.intValue()>0;
      }
}

4、方法的测试(在包message.test中)
package message.test;
import java.util.Date;
import java.util.List;
import message.domain.Message;
import message.domain.User;
import message.service.ImessageService;
import message.service.MessageServiceImpl;
import message.util.HibernateUtils;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class TestDomain {
      public static void main(String[] args){
            //1、查询
//            Session session=HibernateUtils.currentSession();
//                Transaction tx=session.beginTransaction();
//                Message m=(Message)session.get(Message.class,1);
//                tx.commit();
//                //System.out.println(m.getFrom1());
            // HibernateUtils.closeSession();
           
              //2、跟据发件人来查询邮件信息
                ImessageService um=new MessageServiceImpl();             
//                List<Message> users=um.findMessagesByFrom("tom");
//                for(Message u:users){
//                        System.out.println(u.getFrom1()+u.getTo1()+u.getTitle()+u.getContent()+u.getCtime());
//                       
            //3、显示所有的message信息
              // List<Message> users=um.findMessages();
              // for(Message u:users){
            //        System.out.println(u.getId()+u.getFrom1()+u.getTo1()+u.getTitle()+u.getContent()+u.getCtime());
            //      }
               
                //4、新建message信息
                Message u=new Message();
                  u.setFrom1("toma1");
                  u.setTo1("jerrya1");
                  u.setContent("happy1");
                  u.setTitle("huagan1");
                  u.setCtime(new Date());
                u.setIsread(1);
              if(um.createMessage(u)){
                  System.out.println(u.getFrom1()+u.getTo1()+u.getTitle()+u.getContent()+u.getCtime());
                }
                  //5、跟据id删除message信息
              //System.out.println(um.removeMessageById(3));
               
                //6、登陆
//                User u=new User();
//                u=um.login("tomtom", "123");
//                System.out.println(u.getId()+u.getName()+u.getPwd());
//               
              //7、跟据用户名查询信息是否被阅读
              // System.out.println(um.isExistsUnreadMessage("jerry"));             
      }
}

5、hibernate的配置文件(在包message.util中)
package message.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {
        //session工厂
        private static  SessionFactory factory = null;
        //为'多线程'程序运行安全
        private static final ThreadLocal<Session> sessions = new ThreadLocal<Session>();
       
        static{
              //静态块:目的初始化静态属性
              factory = new Configuration().configure()
                .buildSessionFactory();
        }
       
        public static Session currentSession(){
              Session s = (Session)sessions.get();
              if(s == null){
                    s = factory.openSession();
                    sessions.set(s);
              }
              return s;
        }
       
        public static void closeSession(){
              Session s = (Session)sessions.get();
              if(s != null){
                    s.close();
              }
              sessions.set(null);
             
}

6、servlet的程序(在包message.web包里)
package message.web;
//引入包以及包里的方法
import java.io.IOException;                  //java型的包     
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;      //javax型的包     
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

      //bbs型的包
import message.domain.Message;
import message.domain.User;
import message.service.MessageServiceImpl;
import message.service.ImessageService;


public class messageServlet extends HttpServlet {
      private static final long serialVersionUID = 1L;
     
           
 
      public messageServlet() {  //声明messageServlet()构造
              super();
      }

      protected void doGet(HttpServletRequest request, HttpServletResponse response)
                    throws ServletException, IOException {
            process(request, response);
           
      }

      protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            process(request, response);
      }
     
      public  void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
             
            request.setCharacterEncoding("gbk");  //消除乱码
            String action = request.getParameter("action");//获取action
            if("messagelogin".equals(action)){                //如果action与login相等,则进行login的操作;
                  messagelogin(request,response);
            }else if("mfind".equals(action)){      //否则如果action与ppage相等,则进行ppage的操作;
                  mfind(request,response);
            }else if("remove".equals(action)){      //否则如果action与del相等,则进行del的操作;
                  remove(request,response);
            }else if("createm".equals(action)){
                  createm(request,response);
            }else if("findmessage".equals(action)){                 
                  findmessage(request,response);
            }
      }
           
      public  void messagelogin(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
              String name = request.getParameter("name");  //获取用户姓名;
              String pwd = request.getParameter("pwd");  //获取用户密码;
              ImessageService is = new MessageServiceImpl();      //创建IBbsService型变量is;
              User u = is.login(name, pwd);      //创建User型变量u,u为adminLogin(name, pwd)的返回值;
              if(u != null){                                                 
                    request.getSession().setAttribute("message", u);
                    //getSession为返回当前用户的会话对象
                    //setAttribute(class, value)中class是指改变class这个属性,带引号。
                    response.sendRedirect("message/main.jsp");
                    //如果u不等于null,则自动跳转到admin/main.jsp;
                    //此时即为登陆成功
              }else{
                  //否则跳到messagelogin.jsp,继续输入登陆信息
                    response.sendRedirect("messagelogin.jsp");
              }
       
      public  void mfind(HttpServletRequest request, HttpServletResponse response)
                          throws ServletException, IOException {
       
            //查询数据库所有版块分页
              ImessageService is = new MessageServiceImpl();
              String from=request.getParameter("from");       
              List<Message> message = is.findMessagesByFrom(from);
              request.setAttribute("list", message);
              //跳转不一样-》转发
              request.getRequestDispatcher("message/list.jsp").forward(request, response);             
  //forward方法只能重定向到同一个Web应用程序中的一个资源,而sendRedirect方法可以让你重定向到任何URL
             
      public  void createm(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {       
              ImessageService is = new MessageServiceImpl();
              Message u=new Message();
                  u.setFrom1("toma");
                  u.setTo1("jerrya");
                  u.setContent("happy");
                  u.setTitle("huagan");
                  u.setCtime(new Date());//新插入message           
                if(is.createMessage(u)){
                      request.setAttribute("creatm",u);
                      request.getRequestDispatcher("message/creatm.jsp").forward(request, response);
                         
                 
      }
      public  void remove(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {       
            //查询数据库所有版块分页
              ImessageService is = new MessageServiceImpl();
              String sid = request.getParameter("id");//获取id
              int id = Integer.parseInt(sid);
              is.removeMessageById(id);//跟据id进行删除message         
         
      public  void findmessage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {       
              ImessageService is = new MessageServiceImpl();       
              is.findMessages();//查询所有message信息
         
}
7、hibernate的配置文件
<!DOCTYPE hibernate-configuration PUBLIC
      "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<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://127.0.0.1/bbs</property>
              <property name="hibernate.connection.username">root</property>
              <property name="hibernate.connection.password">root</property>
              <property name="hibernate.show_sql">true</property>           
              <mapping resource="message/domain/Message.hbm.xml"/>
              <mapping resource="message/domain/User.hbm.xml"/>             
      </session-factory>
</hibernate-configuration>

8、jsp页面
8.1、list。jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
      pageEncoding="GB18030"%>
<%@page import="message.service.*"%>
<%@page import="message.util.*,message.domain.*" %>
<%@page import="java.sql.Statement" %>
<%@page import="java.util.List" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<table>
<tr>
<td>id</td>
<td>from</td>
<td>to</td>
<td>操作</td>
</tr>
<%
    List<Message> list = (List)request.getAttribute("list");
    for(Message p : list){
%>
  <tr>
<td><%=p.getId() %></td>
<td><%=p.getFrom1() %></td>
<td><%=p.getTo1() %></td>
<td><a href="messageServlet?action=mfind&from1=<%=p.getFrom1()%>">查找</a>
      <a href="messageServlet?action=creatm>">新建短信</a>
      <a href="messageServlet?action=remove&id=<%=p.getId()%>">删除</a>
      <a href="messageServlet?action=findmessage">显示</a>
</td>
</tr> 
<%         
    }
%>
</table>
</body>
</html>
8.2、main.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
      pageEncoding="GB18030"%>
<%@page import="message.service.*"%>
<%@page import="message.util.*,message.domain.*" %>
<%@page import="java.sql.Statement" %>
<%@page import="java.util.List" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
短息信息系统欢迎你
<ul>
  <li><a href="../messageServlet?action=mfind">邮件管理</a></li>
  <li><a href="#">用户管理</a></li>
  <li><a href="#">退出</a></li>
</ul>
</body>
</html>
8.3、message.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
      pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<div id="message"></div>
<script type="text/javascript" src="script/jquery.js">
</script>
<script type="text/javascript" >

    //发送请求Servlet当中
    //判断是否有新的短消息
    function check(){
        var url = "Servlet?action=existsMessage&t="+Math.random();
        $.get(url,function(data){
                if(data == 1){
                      $("#message").css("color","red").html("有未读短消息");
                }else{
                      $("#message").html("没有短消息");
                }
        });     
    }
    //check();
    //function a(){
    // alert("ok");
        //  }
    window.setInterval("check()",3000);
</script>
</body>
</html>
8.4、message.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
      pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="../messageServlet" method="post"> 
      用户名<input type="text" value=""  name="name"/><br/>
      密&nbsp;码<input type="password" value=""  name="pwd"/><br/>
      <input type="hidden" value="messagelogin" name="action" />
      <input type="submit" value="登录" /><br/>
</form>
</body>
</html>

9、注意引包:jquery、hibernate的相关文件(10中写有)、mysql.connection文件

10、hibernate
目录结构
doc 手册,学习指南
eg  例子
lib 依赖类库
src 源代码
etc 配置文件
test 测试代码

hibernate3.jar

1:创建java web
  2:copy mysql驱动程序
  3:hibernate3.jar
  4:hibernate/lib 依赖类库copy
5:WEB-INF/lib/....
6:copy 配置文件 hibernate.cfg.xml
  hibernate/etc/hibernate.cfg.xml
7:创建User
8:创建一个张表
  create table user
9:配置文件/映射文件
  hibernate 二种xml文件
  hibernate.cfg.xml  hibernate配置文件
  User.hbm.xml            User类映射文件
9.1 hibernate配置文件
  配置这个项目.数据库.信息、特性!
      9.1.1 方言Oracle Mysql MsServlet
      9.1.2 驱动程序类 com.mysql.jdbc.Driver
      9.1.3 url              jdbc:mysql://127.0.0.1/bbs
      9.1.4 用户名        root
      9.1.5 密码            root
      9.1.6 hibernate  查看sql
  9.2 User类映射文件
  hibernate开发项每一个domain class 对应映射文件
  User.java      User.hbm.xml
  Manager.java Manager.hbm.xml
  这个'类属性'和数据表列对应关系!
  id                id
  name            name
  User            t_user
 
  hibernate-3.2\eg\org\hibernate\auction
  copy User.hbm.xml
  修改
  <generator class="native"/>
  id 自动增长
10:写程序
    10.1 创建配置对象[加载所有配置和映射文件到内存,验证]
    10.2 创建SessionFactory
    10.3 创建对象  User
    10.4 创建Session,创建事件
    10.5 保存
    10.6 提交事件
    10.7 关闭

11、创建面向对象数据库;
User u = new User();
session.save(u);

Hibernate O/R Mapping

java
hibernate
session.save(u);
session.upload(u);
session.delete(u);

www.javaeye.com    hibernate 高手

java web           
SSH  struct  spring hibernate
高手 != SSH
前台  html;css;javascript;jquery    30-35%
优化;设计表;  kongzimengsheng@163.com
数据库  mysql;                                        15-25%
代码逻辑 java                                          20-25%
框架 [SSH]                                                10%-15%

12、实现作业的总体思路(上面的message)
作业 6 7
    使用hibernate,servlet;jquery
    完成站内短消息功能
    1:用户登陆操作时可以 '即时' 接收短消息
    1.1 查看短消息详细信息
    1.2 回复短消息
    2:用户可以创建短消息
    3:管理短消息[删除]
   
    t_message
    id        标识
    from    发件人
    to        收件人
    ctime  创建时间
    title  标题
    content内容

1: java 高 深刻面向对'设计'基础 Domain
2: 表格
3: 创建web 项目 message
    3.1 创建文件夹  db ->创建文件 db.sql
    3.2 创建相应软件包
            message.domain    领域模型 hbm.xml
          message.service  接口->实现类
          message.util        HibernateUtil
          message.web          Servlet
          message.test        测试
      3.3 copy所有类库
            3.3.1 mysql 驱动
            3.3.2 hibernate3.jar
            3.3.3 hibernate 所有依赖库
      3.4 copy hibernate 配置文件
      3.5 copy hibernate 映射文件
      3.6 设Domain Message
                Domain User
      3.7 测试
      -----
      3.8 IMessageService
                MessageServiceImpl
      3.9 测试
      3.10 页面 html;css;jquery






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值