Eclipse创建带JDBC的JSP程序

  前面的文章《Eclipse创建带Servlet的JSP程序》中在留言簿程序中加入了Servlet,并将之前放在JSP文件中的代码逻辑转移到了Servlet和JavaBean中。程序可以正常运转,但是所有的数据都是存储在了服务器内存中,Tomcat一重启,这些数据就全丢了。
  为了持久化这些数据,一般是将它们放在本地文件或者数据库中。本文主要介绍在数据库中存取数据的操作示例。由于之前在《Eclipse中使用Data Source Explorer进行数据库连接测试》中介绍过下载MySQL和SQLServer的数据库连接文件,这里就直接拿来用了。本文中主要是测试MySQL数据库。

  首先创建两张表user和messages,用于保存用户信息及留言簿消息。在user中默认增加一条用户记录。
在这里插入图片描述
  然后是改造程序代码,首先是登录验证服务,将UserBuffer类改名为OperateJDBC,然后将ValidateUser函数修改为数据库查询方式验证,代码如下:

    public Boolean ValidateUser(User user)
	{
		Boolean result=false;
		
		try
		{
			con=getConnection();			
			stmt=con.createStatement();			
			String queryString="select 1 from user where Account='"+user.getName()+"' and password= '"+user.getPassword()+"'";
			rs=stmt.executeQuery(queryString);
			result=rs.next();
			rs.close();
			stmt.close();
			con.close();
		}
		catch(Exception e)
		{
			System.out.println(e.getMessage());
		}		
		return result;
	}

  在注册Servlet中,将判断用户名是否注册以及增加新用户函数修改如下:

	public Boolean IsUserRegisiterd(String userName)
	{
		Boolean result=false;
		
		try
		{
			con=getConnection();
			stmt=con.createStatement();
			String queryString="select 1 from user where Account='"+userName+"'";					
			rs=stmt.executeQuery(queryString);
			result=rs.next();
			rs.close();
			stmt.close();
			con.close();
		}
		catch(Exception e)
		{
			System.out.println(e.getMessage());
		}
		
		return result;
	}
	
	public void AddUser(User user)
	{
		try
		{
			con=getConnection();			
			stmt=con.createStatement();
			String insertString="INSERT INTO user VALUES ('"+user.getName()+"','"+user.getPassword()+"','"+user.getEmail()+"')";
			stmt.executeUpdate(insertString);	
			rs.close();
			stmt.close();
			con.close();
		}
		catch(Exception e)
		{
			System.out.println(e.getMessage());
		}
	}

  最后是消息Servlet,将添加消息和获取所有消息的函数都修改为与数据库交互:

	public void AddMessage(String userName,String msg)
	{
		try
		{
			con=getConnection();
			stmt=con.createStatement();
			Date date = new Date();
	        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	        String curDate = sf.format(date);

			String insertString="INSERT INTO messages (`UserAccount`,`ReleaseTime`,`Message`) VALUES ('"+userName+"','"+curDate+"','"+msg+"')";
			stmt.executeUpdate(insertString);	
			rs.close();
			stmt.close();
			con.close();
		}
		catch(Exception e)
		{
			System.out.println(e.getMessage());
		}
	}
	
	public String GetAllMessages()
	{
		StringBuilder allMsgs=new StringBuilder();
		
		try
		{
			con=getConnection();
			stmt=con.createStatement();
			String queryString="SELECT `UserAccount`,`ReleaseTime`,`Message` FROM `messageboard`.`messages` order by MsgIndex desc";
			rs=stmt.executeQuery(queryString);				
			
			rs.beforeFirst();
			while(rs.next())
			{
				allMsgs.append("["+rs.getString("ReleaseTime")+"]"+rs.getString("UserAccount")+":"+rs.getString("Message")+"<br>");
			}
			
			rs.close();
			stmt.close();
			con.close();		
		}
		catch(Exception e)
		{
			System.out.println(e.getMessage());
		}
		
		return allMsgs.toString();
	}

  其它文件变化不大,就不列出来了。JDBC这部分代码写的一般,只是能用而已。代码放在了GitHub上面,地址为:https://github.com/guochao2299/SimpleMessageBoard/tree/20200521

参考文献:
[1]Java Web设计实用教程
[2]Java Web从入门到精通
[3]JSP程序设计与案例教程
[4]Head First Servlets and JSP
[5]https://blog.csdn.net/m0_37961948/article/details/76725435
[6]https://blog.csdn.net/Hurricane_m/article/details/94408235
[7]https://blog.csdn.net/lykio_881210/article/details/78898874

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值