第十二周作业

1.实现 删除 回复邮件
2.实现阅读邮件功能:在main.jsp中点击任意邮件的标题,进入到detail.jsp显示邮件详情,包括发件人,主题,内容,时间。同时需要把邮件状态修改为已读。

com.gd.dao

复制代码
 1 package com.gd.dao;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 
 9 public class BaseDao {
10     //获取连接
11     protected Connection getConnection(){
12         Connection conn=null;
13             try {
14                 Class.forName("com.mysql.jdbc.Driver");
15                 // 2.建立连接
16                 conn = DriverManager.getConnection(
17                         "jdbc:mysql://localhost:3306/test", "root", "123456");
18             } catch (Exception e) {
19                 e.printStackTrace();
20             } 
21             return conn;
22     }    
23     //关闭连接
24     protected void closeAll(Connection con,PreparedStatement ps,ResultSet rs){        
25     try {
26         if(rs != null)
27             rs.close();
28         if(ps != null)
29             ps.close();
30         if(con != null)
31             con.close();
32         
33         } catch (SQLException e) {
34             e.printStackTrace();
35         }
36     }
37 
38 }
复制代码
复制代码
  1 package com.gd.dao;
  2 
  3 import java.sql.Connection;
  4 import java.sql.PreparedStatement;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.util.ArrayList;
  8 import java.util.Date;
  9 import java.util.List;
 10 
 11 import com.gd.entity.Msg;
 12 
 13 public class MsgDao extends BaseDao {
 14     //根据收件人查看全部邮件
 15     public List<Msg> getMailByReceiver(String name){
 16         List<Msg> list=new ArrayList<Msg>();
 17         Connection con=getConnection();
 18         String sql="select * from msg where sendto=?";
 19         PreparedStatement ps=null;
 20         ResultSet rs=null;
 21         try {
 22             ps = con.prepareStatement(sql);
 23             ps.setString(1, name);
 24              rs=ps.executeQuery();
 25             while(rs.next()){
 26                 //每读取一行,创建一个msg对象,对象放到集合中
 27                 Msg m=new Msg();
 28                 m.setMsgid(rs.getInt(1));
 29                 m.setUsername(rs.getString(2));
 30                 m.setTitle(rs.getString(3));
 31                 m.setMsgcontent(rs.getString(4));
 32                 m.setState(rs.getInt(5));
 33                 m.setSendto(rs.getString(6));
 34                 m.setMsg_create_date(rs.getDate(7));
 35                 list.add(m);                
 36             }            
 37             
 38         } catch (SQLException e) {
 39             // TODO Auto-generated catch block
 40             e.printStackTrace();
 41         }finally{
 42             closeAll(con, ps, rs);
 43         }        
 44         return list;
 45     }
 46     //关于邮件的增删改查    
 47         //添加邮件(写邮件,回复邮件都调用,邮件状态为1(未读),时间为系统当前时间)
 48         public void addMsg(Msg m){
 49             Connection conn=getConnection();
 50             String sql="insert into msg(username,title,msgcontent,state,sendto,msg_create_date) values(?,?,?,1,?,?)";
 51             PreparedStatement ps=null;
 52             try {
 53                  ps=conn.prepareStatement(sql);
 54                  ps.setString(1, m.getUsername());
 55                  ps.setString(2, m.getTitle());
 56                  ps.setString(3, m.getMsgcontent());
 57                  ps.setString(4, m.getSendto());
 58                  ps.setDate(5, new java.sql.Date(new Date().getTime()));
 59                  ps.executeUpdate();
 60             } catch (SQLException e) {
 61                 // TODO Auto-generated catch block
 62                 e.printStackTrace();
 63             }finally{
 64                 closeAll(conn, ps, null);
 65             }        
 66         }
 67     
 68         //根据id删除邮件
 69         public void delMsg(int id){
 70             Connection con=getConnection();
 71             String sql="delete from msg where msgid="+id;
 72             PreparedStatement ps=null;
 73             try {
 74                 ps=con.prepareStatement(sql);
 75                 ps.executeUpdate();
 76             } catch (SQLException e) {
 77                 // TODO Auto-generated catch block
 78                 e.printStackTrace();
 79             }finally{
 80                 closeAll(con, ps, null);
 81             }
 82         }
 83         public void updateMsg(int id) {
 84             Connection con = getConnection();
 85             String sql = "update  msg set state='1' where msgid=?";
 86             PreparedStatement pred = null;
 87             try {
 88                 pred = con.prepareStatement(sql);
 89                 pred.setInt(1, id);
 90                 pred.executeUpdate();
 91             } catch (SQLException e1) {
 92                 e1.printStackTrace();
 93             } finally {
 94                 closeAll(con, pred, null);
 95             }
 96         }
 97 
 98          public Msg read(int id) {
 99                 Connection con = getConnection();
100                 String sql = "select msgid,username,sendto,title,msgcontent,msg_create_date from msg where msgid=?";
101                 PreparedStatement ps = null;
102                 ResultSet rs = null;
103                 try {
104                     ps = con.prepareStatement(sql);
105                     ps.setInt(1, id);
106                     rs = ps.executeQuery();
107                     while (rs.next()) {
108                         Msg m = new Msg();
109                         m.setMsgid(rs.getInt("msgid"));
110                         m.setUsername(rs.getString("username"));
111                         m.setTitle(rs.getString("title"));
112                         m.setMsgcontent(rs.getString("msgcontent"));
113                         m.setSendto(rs.getString("sendto"));
114                         m.setMsg_create_date(rs.getDate("msg_create_date"));
115                         return m;
116                     }
117 
118                 } catch (SQLException e) {
119                     e.printStackTrace();
120                 } finally {
121                     closeAll(con, ps, rs);
122                 }
123                 return null;
124         }
125 }
复制代码
复制代码
 1 package com.gd.dao;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 
 8 public class UsersDao extends BaseDao {
 9     // 登陆
10     public boolean login(String uname, String upwd) {
11         boolean f = false;
12         Connection conn = getConnection();
13         String sql = "select * from users where uname=? and upwd=?";
14         PreparedStatement ps = null;
15         ResultSet rs = null;
16         try {
17             ps = conn.prepareStatement(sql);
18             ps.setString(1, uname);// 第一个?赋值为name
19             ps.setString(2, upwd);
20             rs = ps.executeQuery();
21             if (rs.next())// 查到结果了
22                 f = true;
23         } catch (SQLException e) {
24             // TODO Auto-generated catch block
25             e.printStackTrace();
26         } finally {
27             closeAll(conn, ps, rs);
28         }
29         return f;
30     }
31     // 注册
32     public int reg(String uname,String upwd){
33         int i=-1;
34         PreparedStatement pred=null;
35         Connection con=getConnection();
36         String sql="insert into users(uname,upwd)values(?,?)";
37         try {
38             pred= con.prepareStatement(sql);
39             pred.setString(1, uname);
40             pred.setString(2, upwd);
41             i=pred.executeUpdate();
42         } catch (SQLException e) {
43             e.printStackTrace();
44         }finally{
45             closeAll(con, pred, null);
46         }
47         return i;
48     }
49 }
复制代码

com.gd.entity

复制代码
 1 package com.gd.entity;
 2 
 3 import java.util.Date;
 4 
 5 public class Msg {
 6     private Integer msgid;
 7     private String username;
 8     private String title;
 9     private String msgcontent;
10     private int state;
11     private String sendto;
12     private Date msg_create_date;
13     
14     public Msg() {
15         super();
16         // TODO Auto-generated constructor stub
17     }
18 
19     public Msg(Integer msgid, String username, String title, String msgcontent,
20             int state, String sendto, Date msg_create_date) {
21         super();
22         this.msgid = msgid;
23         this.username = username;
24         this.title = title;
25         this.msgcontent = msgcontent;
26         this.state = state;
27         this.sendto = sendto;
28         this.msg_create_date = msg_create_date;
29     }
30 
31     public Integer getMsgid() {
32         return msgid;
33     }
34 
35     public void setMsgid(Integer msgid) {
36         this.msgid = msgid;
37     }
38 
39     public String getUsername() {
40         return username;
41     }
42 
43     public void setUsername(String username) {
44         this.username = username;
45     }
46 
47     public String getTitle() {
48         return title;
49     }
50 
51     public void setTitle(String title) {
52         this.title = title;
53     }
54 
55     public String getMsgcontent() {
56         return msgcontent;
57     }
58 
59     public void setMsgcontent(String msgcontent) {
60         this.msgcontent = msgcontent;
61     }
62 
63     public int getState() {
64         return state;
65     }
66 
67     public void setState(int state) {
68         this.state = state;
69     }
70 
71     public String getSendto() {
72         return sendto;
73     }
74 
75     public void setSendto(String sendto) {
76         this.sendto = sendto;
77     }
78 
79     public Date getMsg_create_date() {
80         return msg_create_date;
81     }
82 
83     public void setMsg_create_date(Date msg_create_date) {
84         this.msg_create_date = msg_create_date;
85     }
86     
87     
88 }
复制代码
复制代码
 1 package com.gd.entity;
 2 
 3 public class Users {
 4     private Integer id;
 5     private String uname;
 6     private String upwd;
 7     
 8     public Users() {
 9         super();
10         // TODO Auto-generated constructor stub
11     }
12 
13     public Users(Integer id, String uname, String upwd) {
14         super();
15         this.id = id;
16         this.uname = uname;
17         this.upwd = upwd;
18     }
19 
20     public Integer getId() {
21         return id;
22     }
23 
24     public void setId(Integer id) {
25         this.id = id;
26     }
27 
28     public String getUname() {
29         return uname;
30     }
31 
32     public void setUname(String uname) {
33         this.uname = uname;
34     }
35 
36     public String getUpwd() {
37         return upwd;
38     }
39 
40     public void setUpwd(String upwd) {
41         this.upwd = upwd;
42     }
43     
44 }
复制代码

jsp

reg.jsp

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3 <html>
 4 <head>
 5 <title>My JSP 'reg.jsp' starting page</title>
 6 </head>
 7 
 8 <body>
 9     <h1>注册</h1>
10     <script>
11         function yz() {
12             if (form.uname.value == "") {
13                 alert('用户名不能为空');
14                 return;
15             }
16             if (form.upwd.value == "") {
17                 alert('密码不能为空');
18                 return;
19             }
20             form.submit();
21         }
22     </script>
23     <form action="doreg.jsp" method="post" name="form">
24         <table>
25             <tr>
26                 <td>用户名</td>
27                 <td><input type="text" name="uname"></td>
28             </tr>
29             <tr>
30                 <td>密码</td>
31                 <td><input type="password" name="upwd" value="123456"></td>
32             </tr>
33             <tr>
34                 <td><input type="button" value="注册" onclick="yz()"></td>
35                 <td><a href="denglu.jsp">登录</a></td>
36             </tr>
37         </table>
38     </form>
39 </body>
40 </html>
复制代码

doreg.jsp

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@page import="com.gd.dao.UsersDao"%>
 3 <%
 4     request.setCharacterEncoding("utf-8");
 5     response.setCharacterEncoding("utf-8");
 6 %>
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9 <head>
10 <title>My JSP 'doreg.jsp' starting page</title>
11 </head>
12 <body>
13     <%
14         String uname = request.getParameter("uname");
15         String upwd = request.getParameter("upwd");
16         UsersDao ud = new UsersDao();
17         int i = ud.reg(uname, upwd);
18         if (i > 0) {
19             out.print("注册成功,即将跳到登录页.....");
20             response.setHeader("refresh", "2;url=denglu.jsp");
21         } else {
22             out.print("注册失败,即将跳回注册页.....");
23             response.setHeader("refresh", "2;url=reg.jsp");
24         }
25     %>
26 </body>
27 </html>
复制代码

denglu.jsp

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3 <html>
 4 <head>
 5 <title>My JSP 'denglu.jsp' starting page</title>
 6 </head>
 7 
 8 <body>
 9     <h1>登录</h1>
10     <script type="text/javascript">
11         function validate() {
12             if (loginForm.uname.value == "") {
13                 alert("账号不能为空!");
14                 return;
15             }
16             if (loginForm.upwd.value == "") {
17                 alert("密码不能为空!");
18                 return;
19             }
20             loginForm.submit();
21         }
22     </script>
23     <form name="loginForm" action="dologin.jsp" method="post">
24         用户名:<input type="text" name="uname"><br> 密码: <input
25             type="password" name="upwd" value="123456"><br> <input
26             type="button" value="登录" onClick="validate()"> <a
27             href="reg.jsp">立即注册</a>
28     </form>
29 </body>
30 </html>
复制代码

dologin.jsp

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@page import="com.gd.dao.UsersDao"%>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5 <head>
 6 <title>My JSP 'dologin.jsp' starting page</title>
 7 </head>
 8 <body>
 9     <%
10         request.setCharacterEncoding("utf-8");
11         String uname = request.getParameter("uname");
12         String upwd = request.getParameter("upwd");
13         UsersDao ud = new UsersDao();
14         if (ud.login(uname, upwd)) {
15             session.setAttribute("uname", uname);
16             request.getRequestDispatcher("main.jsp").forward(request,
17                     response);
18         } else {
19             out.print("登陆失败,即将跳回登陆页.....");
20             response.setHeader("refresh", "5;url=denglu.jsp");
21         }
22     %>
23 </body>
24 </html>
复制代码

main.jsp

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@page import="com.gd.entity.Msg"%>
 3 <%@page import="com.gd.dao.MsgDao"%>
 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 5 <html>
 6 <head>
 7 <title>My JSP 'main.jsp' starting page</title>
 8 </head>
 9 <body>
10     <%
11         MsgDao md = new MsgDao();
12         String uname = (String) session.getAttribute("uname");
13         List<Msg> list = md.getMailByReceiver(uname);
14     %>
15     欢迎你<%=uname%>
16     <a href="write.jsp">写邮件</a>
17     <a href="exit.jsp">退出登录</a>
18     <table border="1">
19         <tr>
20             <td>发件人</td>
21             <td>主题</td>
22             <td>状态</td>
23             <td>时间</td>
24             <td>操作</td>
25             <td>操作</td>
26         </tr>
27 
28         <%
29             for (int i = 0; i < list.size(); i++) {
30         %>
31         <tr>
32             <td><%=list.get(i).getUsername()%></td>
33             <td><a href="detail.jsp?id=<%=list.get(i).getMsgid()%>"> 
34             <%out.print(list.get(i).getTitle().toString());%>
35             </a>
36             </td>
37             <td>
38                 <%
39                     if (list.get(i).getState() == 1) {
40                 %> <img src="images/sms_unReaded.png" /> <%
41      } else {
42  %> <img src="images/sms_readed.png" /> <%
43      }
44  %>
45             </td>
46             <td><%=list.get(i).getMsg_create_date()%></td>
47             <td><a href="write.jsp?reply=<%=list.get(i).getUsername()%>">回复</a>
48             </td>
49             <td><a href="del.jsp?id=<%=list.get(i).getMsgid()%>">删除</a>
50             </td>
51         </tr>
52         <%
53             }
54         %>
55     </table>
56 
57 </body>
58 </html>
复制代码

write.jsp

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3     request.setCharacterEncoding("utf-8");
 4     response.setCharacterEncoding("utf-8");
 5 %>
 6 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 7 <html>
 8   <head>   
 9     <title>My JSP 'write.jsp' starting page</title>
10   </head>  
11   <body>
12    <form action="dowrite.jsp" method="post">        
13     收件人:<input type="text" name="sendto" value="<%=request.getParameter("reply") %>"><br> 
14     主题: <input  type="text" name="title" ><br>
15     内容:<textarea rows="6" cols="20" name="content"></textarea>
16 <br>
17 <input type="submit" value="发送"> 
18     </form>
19   </body>
20 </html>
复制代码

dowrite.jsp

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@page import="com.gd.entity.Msg"%>
 3 <%@page import="com.gd.dao.MsgDao"%>
 4 <%@page import="com.gd.dao.UsersDao"%>
 5 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 6 <html>
 7   <head>    
 8     <title>My JSP 'dowrite.jsp' starting page</title>
 9   </head>
10   <body>
11    <%
12     request.setCharacterEncoding("utf-8");
13     
14     String uname=(String)session.getAttribute("uname");// 发件人在session中获取
15     String sendto=request.getParameter("sendto");
16     String title=request.getParameter("title");
17     String content=request.getParameter("content");
18     
19     Msg m=new Msg();
20     m.setTitle(title);
21     m.setMsgcontent(content);
22     m.setUsername(uname);
23     m.setSendto(sendto);
24     
25     MsgDao md=new MsgDao();
26     md.addMsg(m);
27     
28     out.print("发送成功,即将跳回首页.....");
29     response.setHeader("refresh", "3;url=main.jsp");
30  %>
31   </body>
32 </html>
复制代码

detail.jsp

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@page import="com.gd.dao.MsgDao"%>
 3 <%@page import="com.gd.entity.Msg"%>
 4 <%
 5     request.setCharacterEncoding("utf-8");
 6     response.setCharacterEncoding("utf-8");
 7 %>
 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 9 <html>
10 <head>
11 <title>My JSP 'detail.jsp' starting page</title>
12 </head>
13 <body>
14     <%
15         request.setCharacterEncoding("utf-8");
16         String msgid = request.getParameter("id");
17         int idd = Integer.parseInt(msgid);
18         MsgDao md = new MsgDao();
19         md.updateMsg(idd);
20         Msg m = md.read(idd);
21     %>
22     <table>
23         <tr>
24             <td>发件人:</td>
25             <td><input type="text" name="username" style="border: none"
26                 value="<%=m.getUsername()%>"></td>
27         </tr>
28         <tr>
29             <td>主题:</td>
30             <td><input type="text" name="title" style="border: none"
31                 value="<%=m.getTitle()%>"></td>
32         </tr>
33         <tr>
34             <td>时间:</td>
35             <td><input type="text" name="msg_create_date"
36                 style="border: none" value="<%=m.getMsg_create_date()%>"></td>
37         </tr>
38         <tr>
39             <td>收件人:</td>
40             <td><input type="text" name="sendto" style="border: none"
41                 value="<%=m.getSendto()%>"></td>
42         </tr>
43         <tr>
44             <td>内容:</td>
45             <td><div style="border: none;outline: none;overflow: inherit;">
46                     <%=m.getMsgcontent()%></div></td>
47         </tr>
48     </table>
49     <a href="main.jsp">返回</a>
50 </body>
51 </html>
复制代码

del.jsp

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@page import="com.gd.entity.Msg"%>
 3 <%@page import="com.gd.dao.MsgDao"%>
 4 <%@page import="com.gd.dao.UsersDao"%>
 5 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 6 <html>
 7   <head>   
 8     <title>My JSP 'del.jsp' starting page</title>
 9   </head>
10   <body>
11     <%
12     request.setCharacterEncoding("utf-8");
13     int id=Integer.parseInt(request.getParameter("id"));
14     MsgDao md=new MsgDao();
15     md.delMsg(id);
16     out.print("删除成功、、、、、、、");
17     response.sendRedirect("main.jsp");
18  %>
19   </body>
20 </html>
复制代码

exit.jsp

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5 <head>
 6 <title>My JSP 'exit.jsp' starting page</title>
 7 </head>
 8 
 9 <body>
10     <%
11         session.invalidate();
12         response.sendRedirect("reg.jsp");
13     %>
14 </body>
15 </html>
 

 

 

 

 

 

posted @ 2022-05-22 18:39  1902sjw  阅读(10)  评论(0编辑  收藏  举报