• 邮件系统


    要求 邮件系统 用分层实现 登录 注册  显示邮件列表

    Msg.java

    package bean;
    
    import java.util.Date;
    
    public class Msg {
        // `msgid` int(11) NOT NULL AUTO_INCREMENT,
        // `username` varchar(100) NOT NULL,
        // `title` varchar(20) NOT NULL,
        // `msgcontent` varchar(20) NOT NULL,
        // `state` int(11) NOT NULL,
        // `sendto` varchar(20) NOT NULL,
        // `msg_create_date` datetime NOT NULL,
        private int msgid;
        private String uname;
        private String title;
        private String msgcontent;
        private int state;
        private String sendto;
        private Date msg_create_date;
    
        public Msg(int msgid, String uname, String title, String msgcontent,
                int state, String sendto, Date msg_create_date) {
            super();
            this.msgid = msgid;
            this.uname = uname;
            this.title = title;
            this.msgcontent = msgcontent;
            this.state = state;
            this.sendto = sendto;
            this.msg_create_date = msg_create_date;
        }
    
        public Msg() {
    
        }
    
        public int getMsgid() {
            return msgid;
        }
    
        public void setMsgid(int msgid) {
            this.msgid = msgid;
        }
    
        public String getUname() {
            return uname;
        }
    
        public void setUname(String uname) {
            this.uname = uname;
        }
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public String getMsgcontent() {
            return msgcontent;
        }
    
        public void setMsgcontent(String msgcontent) {
            this.msgcontent = msgcontent;
        }
    
        public int getState() {
            return state;
        }
    
        public void setState(int state) {
            this.state = state;
        }
    
        public String getSendto() {
            return sendto;
        }
    
        public void setSendto(String sendto) {
            this.sendto = sendto;
        }
    
        public Date getMsg_create_date() {
            return msg_create_date;
        }
    
        public void setMsg_create_date(Date msg_create_date) {
            this.msg_create_date = msg_create_date;
        }
    
    }

    Users.java

    package bean;
    
    public class Users {
        // username VARCHAR(20) PRIMARY KEY,
        // PASSWORD VARCHAR(20),
        // email VARCHAR(20)
    
        private String username;
        private String password;
        private String email;
        
        
        public Users() {
            
        }    
        public Users(String username, String password, String email) {
            super();
            this.username = username;
            this.password = password;
            this.email = email;
        }
        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 getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
    
    }

    BaseDao.java

    package dao;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class BaseDao {    
        //获取连接
        protected Connection getConnection(){
            Connection conn=null;
                try {
                    Class.forName("com.mysql.jdbc.Driver");
                    // 2.建立连接
                    conn = DriverManager.getConnection(
                            "jdbc:mysql://localhost:3306/mysql", "root", "123456");
                } catch (Exception e) {
                    e.printStackTrace();
                } 
                return conn;
        }    
        
        
        //关闭连接
        protected void closeAll(Connection con,PreparedStatement ps,ResultSet rs){        
        try {
            if(rs != null)
                rs.close();
            if(ps != null)
                ps.close();
            if(con != null)
                con.close();
            
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
    }

    MsgDao.java

    package dao;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    
    import bean.Msg;
    
    public class MsgDao extends BaseDao {
        // 根据登录用户获取收件列表 收件人=uname
        public List<Msg> getReceive(String uname) {
            List<Msg> list = new ArrayList<Msg>();
            Connection conn = getConnection();
            String sql = "SELECT * from msg where sendto=?";
            PreparedStatement ps;
            try {
                ps = conn.prepareStatement(sql);
                ps.setString(1, uname);
                ResultSet rs=ps.executeQuery();
                while(rs.next()){
                    Msg m=new Msg();//读取一行,创建一个对象
                    m.setMsgid(rs.getInt(1));
                    m.setUname(rs.getString(2));
                    m.setTitle(rs.getString(3));
                    m.setMsgcontent(rs.getString(4));
                    m.setState(rs.getInt(5));
                    m.setSendto(rs.getString(6));
                    m.setMsg_create_date(rs.getDate(7));
                    
                    list.add(m);//添加到list列表中
                    
                }
                
                
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            return list;
    
        }
        
        //把邮件对象m写入到数据库
        public void writeMsg(Msg m){
            Connection conn=getConnection();
            String sql="insert into msg(username,title,msgcontent,state,sendto,msg_create_date) values(?,?,?,?,?,?)";
            PreparedStatement ps=null;
            try {
                ps = conn.prepareStatement(sql);
                ps.setString(1, m.getUname());
                ps.setString(2, m.getTitle());
                ps.setString(3, m.getMsgcontent());
                ps.setString(5, m.getSendto());
                ps.setInt(4, 1);//1shi weidu
                ps.setDate(6, new java.sql.Date(new Date().getTime()));
                ps.executeUpdate();
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                closeAll(conn, ps, null);
            }    
            
        }
        
        //根据消息ID获取消息详情
        public Msg getMsgById(int id){
            Msg m=new Msg();
            Connection conn = getConnection();
            String sql = "SELECT * from msg where msgid=?";
            PreparedStatement ps=null;
            ResultSet rs=null;
            try {
                ps = conn.prepareStatement(sql);
                ps.setInt(1, id);
                 rs=ps.executeQuery();
                while(rs.next()){
                    
                    m.setMsgid(rs.getInt(1));
                    m.setUname(rs.getString(2));
                    m.setTitle(rs.getString(3));
                    m.setMsgcontent(rs.getString(4));
                    m.setState(rs.getInt(5));
                    m.setSendto(rs.getString(6));
                    m.setMsg_create_date(rs.getDate(7));                
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                closeAll(conn, ps, rs);
            }
            
            
            return m;
            
            
            
        }
        
        
        //根据ID删除消息
        public void delMsg(int id){
            Connection con=getConnection();
            PreparedStatement ps=null;
            String sql="delete from msg where msgid=?";
            try {
                ps=con.prepareStatement(sql);
                ps.setInt(1, id);
                ps.executeUpdate();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                closeAll(con, ps, null);
            }
            
            
        }
        
        
        //修改邮件的已读状态  把1改0
        public void updateMsg(int id){
            try {
                Connection con = getConnection();
                String sql="update msg set state=0 where msgid=?";
                PreparedStatement ps = con.prepareStatement(sql);
                ps.setInt(1, id);//给sql语句的问号赋值
                ps.executeUpdate();
                closeAll(con, ps, null);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            
            
        }    
        
    
    }

    UsersDao.java

    package dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import bean.Users;
    
    public class UsersDao extends BaseDao {
        
        //登录
        public boolean login(String uname,String upwd){
            boolean f=false;
            Connection conn=getConnection();
            String sql="select * from users where username=? and password=?";
            PreparedStatement ps=null;
            ResultSet rs=null;
            try {
                 ps=conn.prepareStatement(sql);
                ps.setString(1, uname);
                ps.setString(2, upwd);
                rs=ps.executeQuery();
                if (rs.next()) {
                    f=true;
                }            
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }    finally{
                closeAll(conn, ps, rs);
            }
            return f;
        }    
        //注册,相当于添加一个用户
        public int register(Users u){
            Connection conn=getConnection();
            String sql="insert into users values(?,?,?)";
            PreparedStatement ps=null;
            int i=0;
            try {
                 ps=conn.prepareStatement(sql);
                ps.setString(1, u.getUsername());
                ps.setString(2, u.getPassword());
                ps.setString(3, u.getEmail());
                i=ps.executeUpdate();//返回受影响的行数
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }    finally{
                closeAll(conn, ps, null);
            }
            return i;
        }
        
        public static void main(String[] args) {
            Users u=new Users("haha", "123456", "haha@163.com");
            UsersDao ud=new UsersDao();
            //System.out.println(ud.register(u));
        System.out.println(ud.login("kit243ty", "777"));
            
        }//修改个人信息
    
    }

    login.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'login.jsp' starting page</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="styles.css">
        -->
    
      </head>
      
      <body>
    <form action="dologin.jsp" method="post">
    用户名:<input type="text" name="uname" value="ls" /><Br>
    密码 :<input type="password" name="upwd" value="456"/><br>
    
    <input type="submit" value="登录">
    <a href="register.jsp" >注册</a>
    
    </form>
      </body>
    </html>

    main.jsp

    <%@page import="bean.Msg"%>
    <%@page import="dao.MsgDao"%>
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                + request.getServerName() + ":" + request.getServerPort()
                + path + "/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'login.jsp' starting page</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="styles.css">
        -->
    
    </head>
    
    <body>
        <%
            MsgDao md = new MsgDao();
            String uname = (String) session.getAttribute("uname");
            List<Msg> list = md.getReceive(uname);
        %>
        欢迎你<%=uname%> <a href="write.jsp">写邮件</a>
        <table border="1">
        <tr>
        
        <td>标题    </td>
        
        <td>是否已读</td>
        <td>发件人</td>
        <td>时间</td>    
        <td>操作</td>
        <td>操作</td>
        </tr>
    <%for(int i=0;i<list.size();i++){ %>    
        <tr>
        
        <td><a href="readMsg.jsp?mid=<%=list.get(i).getMsgid()%>"><%=list.get(i).getTitle() %></a></td>
        
        <td><%int x=list.get(i).getState();
                if(x==0){%>
                <img src="images/sms_readed.png">
                <%}else{ %>
                <img src="images/sms_unReaded.png">
                <%} %>
        </td>
        <td><%=list.get(i).getUname() %></td>
        <td><%=list.get(i).getMsg_create_date() %></td>
        <td><a href="dodel.jsp?mid=<%=list.get(i).getMsgid()%>">删除</a></td>
        <td><a href="write.jsp?reply=<%=list.get(i).getUname()%>">回复</td>
        
        
        </tr>
        
    <%} %>
        
        
        </table>
    
    
    
    </body>
    </html>

    write.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'login.jsp' starting page</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="styles.css">
        -->
    
      </head>
      
      <body>
    <form action="dowrite.jsp"  method="post">
    收件人:<input type="text" name="sendto" value="<%=request.getParameter("reply") %>" ><br>
    主题:<input type="text" name="title"><br>
    内容:<textarea name="content"></textarea>
    <input type="submit" value="发送">
    
    
    </form>
    
    
      </body>
    </html>

     

     

     

     

  • 相关阅读:
    java 的三种代理模式 (二)——子函数切面
    王者荣耀为什么不使用微服务架构,服务的极简主义,为什么交易网关使用redis做持久
    tcp_syncookies 半连接
    tcp_tw_recycle tcp_tw_reuse与timewait【yetdone】
    动态代理,没有被代理对象
    一次jstack解决update停顿
    动态代理反向
    注解的继承
    51单片机状态机键盘检测
    28335scififo中断接收与发送
  • 原文地址:https://www.cnblogs.com/LILY321/p/14758091.html
Copyright © 2020-2023  润新知