简易聊天室的制作

要求使用三层架构模式实现简易在线聊天室的功能:

 

 

 

 二、聊天页面

 

三、

 

 

1、  Models---为实体类库

实体类库是作为三成架构的辅助类库存在,数据在传递时都是传递一个封装好的实体;

数据库中一个表对应一个实体

2、  DAL----DATA ACCESS LAYER:数据访问层

数据库中一个表对应一个类文件,其中定义对这个表的增删改查等具体的数据库操作;

SQLhelper是最基本的数据库访问类,也放在该类库中

3、  BLL----Business Logic Layer:业务逻辑层

业务逻辑层中的类对具体的业务进行定义,需要调用DAL层去执行命令

4Web(UI)---User Interface Layer:用户界面层

用户界面层是直接给用户打交道的,UI层要调用BLL层的类来实现具体的操作

 

聊天室的实体类有User和Message

User.cs

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Models
{
    public class User
    {
        #region 声明数据库T_user表中的字段
        private int userId;
        private string userName;
        private string userPsd;
        #endregion


        #region 属性
        //用户id
        public int UserId
        {
            //写入
            set { userId=value; }
            //读取
            get { return userId; }
        }
        //用户名
        public string UserName
        {
            set { userName=value; }
            get { return userName; }
        }
        //用户密码
        public string UserPsd
        {
            set { userPsd=value; }
            get { return userPsd; }
        }
        #endregion
    }
}

Message.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Models
{
  public class Message
    {

        #region 声明数据库T_message表中的字段
        private int messageId;
        private string  userName;
        private string messageContent;
        private string emotion;
        private string color;
        private string messageTime;
        private string face;
        #endregion

        #region 属性
        //信息id
        public int MessageId
        {
            set { messageId=value; }
            get { return messageId; }
        }
        //用户名
        public string  UserName
        {
            set { userName = value; }
            get { return userName; }
        }

        //聊天的内容
        public string MessageContent
        {
            set { messageContent=value; }
            get { return messageContent; }
        }
        //表情
        public string Emotion
        {
            set { emotion = value; }
            get { return emotion; }
        }
        //颜色
        public string Color
        {
            set { color = value; }
            get { return color; }
        }
        //发布留言的日期
        public string MessageTime
        {
            set { messageTime = value; }
            get { return messageTime; }
        }
        //图片
        public string Face
        {
            set { face = value; }
            get { return face; }
        }
       
        #endregion
    }
}

DAL层有UserDAL.cs和MessageDAL.cs

UserDAL.cs

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Models;
using Utility;
using System.Data;
using System.Data.SqlClient;
namespace DAL
{
    public class UserDAL
    {
        /// <summary>
        /// 添加用户
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public static bool AddUser(User user)
        {
            User users = new User();
            string str = "insert into T_user(userName,userPsd) values(@userName,@userPsd)";
            SqlParameter[] para = {
                                      new SqlParameter("@userName",SqlDbType.NVarChar),
                                      new SqlParameter("@userPsd",SqlDbType.NVarChar)
                                  };
            para[0].Value = user.UserName.ToString();
            para[1].Value = user.UserPsd.ToString();
            SqlHelper helper = new SqlHelper();
            int result = -1;
            result = helper.ExecuteReturnInt(str, para, CommandType.Text);
            if (result > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        /// <summary>
        /// 根据用户名查询用户信息
        /// </summary>
        /// <param name="userName"></param>
        /// <returns></returns>
        public static bool GetUser(string userName)
        {
            string str = "select * from T_user where userName=@userName";
            SqlParameter[] para = { new SqlParameter("@userName", SqlDbType.NVarChar) };
            para[0].Value = userName;
            SqlHelper helper = new SqlHelper();
            DataTable dt = helper.ExecuteReturnDataTable(str, para, CommandType.Text);
            if (dt.Rows.Count > 0)
            {
                //找到该用户信息后,说明用户不能注册
                return false;

            }
            else
            {
                //没有找到用户,说明当前用户可以注册
                return true;
            }


        }
  

         /// <summary>
        /// 根据用户名查询用户信息
        /// </summary>
        /// <param name="userName"></param>
        /// <returns></returns>
        public static User GetUserLogin(string userName)
        {
            string str = "select * from T_user where userName=@userName";
            SqlParameter[] para = { new SqlParameter("@userName", SqlDbType.NVarChar) };
            para[0].Value = userName;
            SqlHelper helper = new SqlHelper();
            DataTable dt = helper.ExecuteReturnDataTable(str, para, CommandType.Text);
            if (dt.Rows.Count > 0)
            {
                //找到该用户信息后,说明用户不能注册
                return null;

            }
            else
            {
                //没有找到用户,说明当前用户可以注册
                User user = new User();
                user.UserId = (int)(dt.Rows[0]["userId"]);
                user.UserName = (string)(dt.Rows[0]["userName"].ToString());
                user.UserPsd = (string)(dt.Rows[0]["userPsd"].ToString());
                return user;
            }


        }
    }


 }


 MessageDAL.cs  

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Models;
using Utility;
using System.Data;
using System.Data.SqlClient;
namespace DAL
{
    public class MessageDAL
    {
        /// <summary>
        /// 向信息表中添加信息
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public static bool Addmessage(Message message)
        {
            string str = "insert into T_message(messageTime,userName,emotion,messageContent,color,face) values(@messageTime,@userName,@emotion,@messageContent,@color,@face)";
            SqlParameter[] para = {
                                    new SqlParameter("@messageTime",SqlDbType.DateTime),
                                    new SqlParameter("@userName",SqlDbType.NVarChar),
                                    new SqlParameter("@emotion",SqlDbType.NVarChar),
                                    new SqlParameter("@messageContent",SqlDbType.NVarChar),
                                    new SqlParameter("@color",SqlDbType.NVarChar),
                                    new SqlParameter("@face",SqlDbType.NVarChar)
                                  };
            para[0].Value = message.MessageTime;
            para[1].Value = message.UserName;
            para[2].Value = message.Emotion;
            para[3].Value = message.MessageContent;
            para[4].Value = message.Color;
            para[5].Value = message.Face;
            SqlHelper helper = new SqlHelper();
            int result = -1;
            result = helper.ExecuteReturnInt(str, para, CommandType.Text);
            if (result > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
           
        /// <summary>
        /// 把数据行打包成Message数据实体
        /// </summary>
        /// <param name="dataRow">一条记录</param>
        /// <returns>Message实体</returns>
        public static Message GetMessageFromDataRow(DataRow dataRow)
        {
            Message message = new Message();
            message.UserName = dataRow["userName"].ToString();
            message.MessageContent = dataRow["messageContent"].ToString();
            message.Emotion = dataRow["emotion"].ToString();
            message.Color = dataRow["color"].ToString();
            message.MessageTime = dataRow["messageTime"].ToString();
            message.Face = dataRow["face"].ToString();
            return message;
        }


        /// <summary>
        /// 获得信息表中前10条用户的数据
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public static List<Message> Selectmessage()
        {
            List<Message> messagelist = new List<Models.Message>();
            string str = "select top(10) * from T_message order by messageTime desc";
            SqlHelper helper = new SqlHelper();
            DataTable dt = helper.ExecuteReturnDataTable(str, null, CommandType.Text);
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow row in dt.Rows)
                {
                    messagelist.Add(GetMessageFromDataRow(row));
                }

                return messagelist;
            }
            return null;

        }
    }
}

 

    BLL有UserBLL.cs和MessageBLL.cs

UserBLL.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Models;
using DAL;

namespace BLL
{
   public class UserBLL
    {
       /// <summary>
       /// 添加用户
       /// </summary>
       /// <param name="user"></param>
       public static bool AddUser(User user)
       {
           if (IsExist(user.UserName,user.UserPsd) == null)
           {
               return false;
           }
           else
           {
               return UserDAL.AddUser(user);
           }
       }
       /// <summary>
       /// 根据用户名得到用户信息
       /// </summary>
       /// <param name="userName"></param>
       /// <returns></returns>
       public static bool GetUser(string userName)
       {
           return UserDAL.GetUser(userName);
       }

       /// <summary>
       /// 根据用户名得到用户登陆信息
       /// </summary>
       /// <param name="userName"></param>
       /// <returns></returns>
       public static User GetUserLogin(string userName)
       {
           return UserDAL.GetUserLogin(userName);
       }
        / <summary>
        / 登陆验证
        / </summary>
        //public static bool login(string userName,string userPsd,out User validUser)
        //{
        //    User user = UserDAL.GetUser(userName);
        //    //没有该用户信息
        //    if (user == null)
        //    {
        //        validUser = null;
        //        return false;
        //    }
        //    //如果登陆的用户名与数据库中的用户名相同时,该用户为合法用户
        //    if (user.UserName == userName)
        //    {
        //        validUser = user;
        //        return true;
        //    }
        //    else
        //    {
        //        validUser = null;
        //        return false;
        //    }
        //}

       /// <summary>
       /// 判断用户是否重名
       /// </summary>
       /// <param name="user"></param>
       /// <returns></returns>
        public static User IsExist(string userName,string userPsd)
        {
            bool flag = UserDAL.GetUser(userName);
            User user = new User();
            if (flag)
            {
                //重名
                user.UserName = userName;
                user.UserPsd = userPsd;
                return user;
            }
           
            else
            {
                //不重名
                return null;
            }
        }
    }
}

 

MessageBLL.cs

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using Models;
using System.Data;

namespace BLL
{
    public class MessageBLL
    {
        /// <summary>
        /// 获得信息表中前10条用户的数据
        /// </summary>
        /// <returns></returns>
        public static List<Message> Selectmessage()
        {
            return MessageDAL.Selectmessage();
        }
       
        /// <summary>
        /// 发表留言
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public static bool Addmessage(Message message)
        {
           return MessageDAL.Addmessage(message);
        }
    }
}

    用户界面有登陆页面和留言页面组成

登陆页面前台:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>登陆页面</title>
  
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table style="width: 65%;" cellpadding="0" cellspacing="0">
            <tr>
                <td align="center" style=" height:60px">
                    <img alt="" src="image/l聊天室.jpg" height="30px" width="120px" />
                </td>
            </tr>
        </table>
        <table style="width: 100%;">
            <tr>
                <td align="right"style=" height:30px" >
                    用户名:
                </td>
                <td align="left" style=" height:30px">
                    <asp:TextBox ID="txt_username" runat="server" TextMode="SingleLine" Columns="22"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td align="right" style=" height:30px">
                    密    码:
                </td>
                <td align="left" style=" height:30px">
                    <asp:TextBox ID="txt_userpsd" runat="server" TextMode="Password" Columns="24"></asp:TextBox>
                </td>
            </tr>
        </table>
        <table style="width: 65%;">
            <tr>
                <td align="center">
                    <asp:Button ID="bt_Login" runat="server" Text="登陆" οnclick="bt_Login_Click" />
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <asp:Button ID="bt_register" runat="server" Text="注册"
                        οnclick="bt_register_Click" />
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

后台:

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Models;
using BLL;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void bt_Login_Click(object sender, EventArgs e)
    {

        string username = txt_username.Text.Trim();
        string password = txt_userpsd.Text.Trim();
        if (username == "")
        {
            Response.Write("<script>alert('请输入用户名')</script>");
        }

        //if (this.txt_username.Text.Trim().Length == 0)
        // {
        //     Response.Write("<script>alert('请输入用户名')</script>");
        // }
        if (password == "")
        {
            Response.Write("<script>alert('请输入密码')</script>");
        }
        //if (this.txt_userpsd.Text.Trim().Length == 0)
        //{
        //    Response.Write("<script>alert('请输入密码')</script>");
        //}
        //if (UserBLL.login(this.txt_username.Text, this.txt_userpsd.Text, out user))
        //{
        //    Session["user"] = user;
        //    Response.Redirect("index.aspx");
        //}
        if (UserBLL.GetUser(username) != null)
        {
            Session["username"] = username;
            Response.Redirect("index.aspx");
        }
        else
        {
            Response.Write("<script>alert('您输入的用户名或者密码错误')</script>");
        }
    }
    protected void bt_register_Click(object sender, EventArgs e)
    {
        Response.Redirect("Register.aspx");
    }
}

留言页面的前台:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
    <style type="text/css">
        .style1
        {
            width: 653px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div>
            <p align="center" style="height: 41px; font-style: normal; font-size: x-large; color: Blue;">
                *欢迎<asp:Label ID="L_name" runat="server" Text=""></asp:Label>来到MyChatRoom*<br />
                <asp:Button ID="bt_return" runat="server" Text="返回登录" OnClick="bt_return_Click" /></p>
        </div>
        <table style="width: 100%;">
            <tr>
                <td class="style1">
               <%-- <iframe src="Iframe.aspx" scrolling="yes" />--%>
                    <asp:ScriptManager ID="ScriptManager1" runat="server">
                    </asp:ScriptManager>
                    <br />
                    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                        <ContentTemplate>
                            <asp:DataList ID="dl_iframe" runat="server">
                                <ItemTemplate>
                                    <div style='color: <%#Eval("color")%>'>
                                        <%#Eval("messageTime") %>
                                        <%#"("+Eval("userName")+")" %>
                                        <%#Eval("emotion")+"说:" %>
                                        <%#Eval("messageContent") %>
                                    </div>
                                </ItemTemplate>
                            </asp:DataList>
                        </ContentTemplate>
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="Timer_MessageList" EventName="Tick" />
                        </Triggers>
                    </asp:UpdatePanel>
                    <asp:Timer ID="Timer_MessageList" runat="server" Interval="1000" OnTick="Timer_MessageList_Tick">
                    </asp:Timer>
                </td>
            </tr>
            <tr>
                <td class="style1">
                    <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/image/1.jpg" OnClick="ImageButton1_Click" />
                    <asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/image/2.jpg" OnClick="ImageButton2_Click" />
                    <asp:ImageButton ID="ImageButton3" runat="server" ImageUrl="~/image/3.jpg" OnClick="ImageButton3_Click" />
                    <asp:ImageButton ID="ImageButton4" runat="server" ImageUrl="~/image/4.jpg" OnClick="ImageButton4_Click" />
                    <asp:ImageButton ID="ImageButton5" runat="server" ImageUrl="~/image/5.jpg" OnClick="ImageButton5_Click" />
                </td>
            </tr>
            <tr>
                <td class="style1">
                    <asp:TextBox ID="txt_content" runat="server" TextMode="MultiLine" Height="48px" Width="447px"></asp:TextBox>
                </td>
            </tr>
        </table>
        <table style="width: 40%;">
            <tr>
                <td align="right">
                    <asp:DropDownList ID="ddl_color" runat="server">
                        <asp:ListItem Value="black" Selected="True">黑色</asp:ListItem>
                        <asp:ListItem Value="red">红色</asp:ListItem>
                        <asp:ListItem Value="blue">蓝色</asp:ListItem>
                        <asp:ListItem Value="purple">紫色</asp:ListItem>
                    </asp:DropDownList>
                </td>
                <td align="left">
                    <asp:DropDownList ID="ddl_emotion" runat="server">
                        <asp:ListItem Value="微笑的" Selected="True">微笑的</asp:ListItem>
                        <asp:ListItem Value="高兴的">高兴的</asp:ListItem>
                        <asp:ListItem Value="伤心的">伤心的</asp:ListItem>
                        <asp:ListItem Value="沮丧的">沮丧的</asp:ListItem>
                    </asp:DropDownList>
                </td>
                <td align="left">
                    <asp:Button ID="bt_talk" runat="server" Text="发言" OnClick="bt_talk_Click" />
                </td>
                <td align="left">
                    <asp:Button ID="bt_leave" runat="server" Text="离开" OnClick="bt_leave_Click" />
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

留言页面的后台:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Models;
using DAL;
using BLL;
using System.Text.RegularExpressions;
using System.Collections.Generic;
public partial class index : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["username"] != null)
            {
                //L_name.Text = ((User)(Session["user"])).UserName;
                L_name.Text = Session["username"].ToString();
            }
            else
            {
                Response.Write("<script>alert('请先登录');location.href('Login.aspx')</script>");
            }

        }
    }
    /// <summary>
    /// 发言
    /// </summary>
    protected void bt_talk_Click(object sender, EventArgs e)
    {
        if (Session["username"] != null)
        {
            string messageinfo = txt_content.Text.Trim();
            //使用正则表达式的Replace方法
            string result1 = Regex.Replace(messageinfo, @"{!", "<img src='image/");
            string result2 = Regex.Replace(result1, @"!}", ".jpg'/>");
            Message mess = new Message();
            DateTime date = DateTime.Now;
            mess.MessageTime = date.ToString();
            mess.UserName = Session["username"].ToString();
            mess.Emotion = ddl_emotion.SelectedValue;
            mess.MessageContent = result2;
            mess.Color = ddl_color.SelectedValue;
            mess.Face = "";
            bool result = MessageBLL.Addmessage(mess);
            if (result == true)
            {
                Response.Write("<script>alert('发言成功')</script>");
            }
            else
            {
                Response.Write("<script>alert('发言失败')</script>");
            }
        }
    }


    /// <summary>
    /// 离开
    /// </summary>
    protected void bt_leave_Click(object sender, EventArgs e)
    {
        //清除对象
        Session["username"] = null;
        //Session.Contents.Remove("user");
        Response.Redirect("Login.aspx");
    }

    /// <summary>
    /// 返回登录
    /// </summary>
    protected void bt_return_Click(object sender, EventArgs e)
    {
        Response.Redirect("Login.aspx");
    }

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        txt_content.Text += "{!1!}"; //1是图片的名称,下同
    }
    protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
    {
        txt_content.Text += "{!2!}";
    }
    protected void ImageButton3_Click(object sender, ImageClickEventArgs e)
    {
        txt_content.Text += "{!3!}";
    }
    protected void ImageButton4_Click(object sender, ImageClickEventArgs e)
    {
        txt_content.Text += "{!4!}";
    }
    protected void ImageButton5_Click(object sender, ImageClickEventArgs e)
    {
        txt_content.Text += "{!5!}";
    }
    protected void Timer_MessageList_Tick(object sender, EventArgs e)
    {
        bindmessagelist();
    }

    protected void bindmessagelist()
    {
        //messagelist就相当于一个数据表
        List<Message> messagelist = MessageBLL.Selectmessage();
        dl_iframe.DataSource = messagelist;
        dl_iframe.DataBind();

    }
}

iframe页面:


   <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Iframe.aspx.cs" Inherits="Iframe" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
    <meta http-equiv="refresh" content="5" />
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DataList ID="dl_iframe" runat="server">
            <ItemTemplate>
                <div style=' color:<%#Eval("color")%>'>
                    <%#Eval("messageTime") %>
                    <%#"("+Eval("userName")+")" %>
                    <%#Eval("emotion")+"说:" %>
                    <%#Eval("messageContent") %>
                </div>
            </ItemTemplate>
        </asp:DataList>
    </div>
    </form>
</body>
</html>

 

后台:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Models;
using BLL;
using DAL;
using System.Collections.Generic;
public partial class Iframe : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            //messagelist就相当于一个数据表
            List<Message>  messagelist = MessageBLL.Selectmessage();
            dl_iframe.DataSource = messagelist;
            dl_iframe.DataBind();
           
        }
    }

   
}

数据库访问类:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
namespace Utility
{
    public class SqlHelper
    {
        #region 数据访问字段
        private string str;
        private SqlConnection conn;
        private SqlCommand comm;
        #endregion
       
        /// <summary>
        /// 构造函数
        /// </summary>
        public SqlHelper()
        {
            string str = ConfigurationManager.ConnectionStrings["CONNECTIONSTRING"].ConnectionString;
            conn = new SqlConnection(str);
        }

        /// <summary>
        /// 返回整数(修改,删除,增加数据库后影响的数据库记录的条数)
        /// </summary>
        public int ExecuteReturnInt(string cmdText, SqlParameter[] para, CommandType Type)
        {
            try
            {
                conn.Open();
                comm = new SqlCommand(cmdText,conn);
                comm.CommandType = Type;
                if (para != null)
                {
                    for (int i = 0; i < para.Length; i++)
                    {
                        comm.Parameters.Add(para[i]);
                    }
                 }
                int result = -1;
                result = comm.ExecuteNonQuery();
                return result;
            }
            catch(SqlException se)
            {
                throw se;
            }
            finally
            {
                conn.Close();
            }
        }
        /// <summary>
        /// 返回DataTable
        /// </summary>
        /// <param name="cmdText"></param>
        /// <param name="para"></param>
        /// <param name="Type"></param>
        /// <returns></returns>
        public DataTable ExecuteReturnDataTable(string cmdText, SqlParameter[] para, CommandType Type)
        {
            try
            {
                conn.Open();
                comm = new SqlCommand(cmdText,conn);
                comm.CommandType = Type;
                if (para != null)
                {
                    for (int i = 0; i < para.Length; i++)
                    {
                        comm.Parameters.Add(para[i]);
                    }
                }
                DataTable dt = null;
                DataSet ds = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter(comm);
                da.Fill(ds);
                dt = ds.Tables[0];
                return dt;
            }
            catch (SqlException se)
            {
                throw se;
            }
            finally
            {
                conn.Close();
            }
        }
    }
}

 

注意的知识点:

1.session的使用,session可以保存一个对象,也可以保存一个属性,如果保存一个对象,在使用对象的某一个属性时,需要进行转换

((User)(Session["user"])).UserName  User为Models层中的一个实体即一个类,user为User的对象,UserName 为对象user的一个属性,若保存某一属性的话,直接使用Session["username"]即可,

在清空session保存的对象时使用Session.Contents.Remove("user"),

而清空某一个属性时,只需Session["username"]=null就可以

2.在一个页面中嵌套另一个页面,并且实现刷新,有两种方法,一种是使用HTML的标签iframe,用这种方法刷新是在页面的头部加上<meta http-equiv="refresh" content="5" />

另一种是使用AJAX控件实现无刷新,

<asp:ScriptManager ID="ScriptManager1" runat="server">
                    </asp:ScriptManager>
                    <br />
                    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                        <ContentTemplate>
                            <asp:DataList ID="dl_iframe" runat="server">
                                <ItemTemplate>
                                    <div style='color: <%#Eval("color")%>'>
                                        <%#Eval("messageTime") %>
                                        <%#"("+Eval("userName")+")" %>
                                        <%#Eval("emotion")+"说:" %>
                                        <%#Eval("messageContent") %>
                                    </div>
                                </ItemTemplate>
                            </asp:DataList>
                        </ContentTemplate>
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="Timer_MessageList" EventName="Tick" />
                        </Triggers>
                    </asp:UpdatePanel>
                    <asp:Timer ID="Timer_MessageList" runat="server" Interval="1000" OnTick="Timer_MessageList_Tick">
                    </asp:Timer>

 通过定时器来实现刷新, <ContentTemplate> </ContentTemplate>之间存放在另一个页面中嵌套的内容。

3.在页面中插入表情,可以使用<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/image/1.jpg" OnClick="ImageButton1_Click" />,本页面使用TextBox文本框来接收留言信息,但是TextBox只能写入文本,不能够加入图片,       string messageinfo = txt_content.Text.Trim();
            //使用正则表达式的Replace方法
            string result1 = Regex.Replace(messageinfo, @"{!", "<img src='image/");
            string result2 = Regex.Replace(result1, @"!}", ".jpg'/>");这一可以使图片以符号的形式在文本框中出现而不是图片形式,在图片输出的时候,
,"{" 和"}"起到标示图片的作用。输出时,前一个"["用"<img src='image/"代替,后一个"]"用".jpg'>"代替,即:<img src='image/1.jpg'/>。
也可以使用DataList控件将图片从数据库读出来显示在页面。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简易聊天室本次实验的目的是通过以下题目掌握JSP内置对象,包括:request,response,session,application等。 (1)制作简易聊天室,能够实现简单的页面聊天功能。 (2)制作网页计数器,要求相同的窗口内刷新页面访问次数并不增加,并且用图片来显数字。1、 熟悉request、response、session、application、out等内置对象; 2、 选择制作网页计数器程序需准备数字图片;1、进入jsp子目录,编写简易聊天室的JSP程序,聊天室的需要实现的基本功能:输入昵称、聊天。 2.根据功能编写页面代码。二、网页计算器 利用内置对象application <html> <head> <base href="<%=basePath%>"> <title>My JSP 'Counter.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> 您是第位访问者! </body> </html> 简易聊天室本次实验的目的是通过以下题目掌握JSP内置对象,包括:request,response,session,application等。 (1)制作简易聊天室,能够实现简单的页面聊天功能。 (2)制作网页计数器,要求相同的窗口内刷新页面访问次数并不增加,并且用图片来显数字。1、 熟悉request、response、session、application、out等内置对象; 2、 选择制作网页计数器程序需准备数字图片;1、进入jsp子目录,编写简易聊天室的JSP程序,聊
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值