javaEE之JSP+JavaBean+Servlet实现登陆加留言功能(外挂数据库)

本文介绍了一个使用JavaEE技术栈,基于Model2模式实现的登录和留言功能项目。通过JSP、JavaBean和Servlet进行分工,提高了代码的可维护性和可读性。主要包括LoginBean、UserBean、UserDataBean、JDBCConnection等类的设计,以及Login、validateServlet、registerServlet、lyServlet等Servlet的实现,以及多个JSP页面用于不同操作的交互展示。
摘要由CSDN通过智能技术生成

之前使用jsp+javaBean做了一个项目可以实现登录加留言功能,这个架构设计模式属于Model1:
在这里插入图片描述
但是这种模式jsp既要实现页面的显示又要控制整个流程,非常不方便,于是出现了新的Model2模式,即jsp+javaBean+Servlet
在这里插入图片描述

实现效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码部分

(注意更换包名)
#LoginBean.java

package nmx;

public class LoginBean {
	private String username;
	private String password;
	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;
	}
}

#UserBean.java

package nmx;

public class UserBean {
	private String username;
	private String truename;
	private String email;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	
	public String getTruename() {
		return truename;
	}
	public void setTruename(String truename) {
		this.truename = truename;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

#UserDataBean.java

package nmx;

public class UserDataBean {
	private String username;
	private String password;
	private String truename;
	private String 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 getTruename() {
		return truename;
	}
	public void setTruename(String truename) {
		this.truename = truename;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public UserDataBean(String u,String p,String t,String e){
		username=u;
		password=p;
		truename=t;
		email=e;
	}
	public UserDataBean(){}
}

#JDBCConnection.java
之前就说可以把连接数据库单独分出来写一个函数,减少代码重复性,这次终于搞了一搞。。。

package nmx;
import java.io.PrintWriter;
import java.sql.*;
import java.io.*;

public class JDBCConnection {
	public static Connection conn;     //Connection对象(链接)
	//连接数据库
	public static Connection getConn(){
		try{
			//加载注册SQLSever的JDBC驱动
			Class.forName("com.mysql.jdbc.Driver");
			//编写链接字符串,创建并且获取链接
			conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8","root","");
			//System.out.println(222);
			return conn;
		}catch(Exception e){
			e.printStackTrace();
			//System.out.println(111);
			return null;
		}
	}
	public static void CloseConn(){
		try{
			conn.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	}

}

#Login.java
包括三个函数,分别是登录验证函数,增加用户函数,添加留言函数,其实应该分开写,比较直观好用一点,,但是,,太懒了orz~

package nmx;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.http.HttpSession;

public class Login {

	Connection conn=JDBCConnection.getConn();
	
	public UserBean checkLogin(String Username,String Password){
		 try{
			   String sql="select * from user where username='"+Username+"' and password='"+Password+"'";
			    Statement stmt=conn.createStatement();
			    ResultSet rs=stmt.executeQuery(sql);
			    if(rs.next()){
			    UserBean userBean=new UserBean();
			    userBean.setUsername(rs.getString("username"));
			    userBean.setTruename(rs.getString("truename"));
			    userBean.setEmail(rs.getString("email"));
			    return userBean;
			    }
			    return null;
			    
			}catch(Exception e){
				e.printStackTrace();
				return null;
			}
	}
	public boolean addUser(UserDataBean a){
		int id=0;
		try{
	        String sql1="insert into user values(?,?,?,?,?)";
	        String sql2="select id from user";
	        PreparedStatement ps1=conn.prepareStatement(sql1);
	        PreparedStatement ps2=conn.prepareStatement(sql2);
	        ResultSet rs=ps2.executeQuery();
	        while(rs.next()){
	        id=rs.getInt(1);
	        }
	        id+=1;
	        ps1.setInt(1,id);
	       ps1.setString(2,a.getUsername());
	       ps1.setString(3,a.getPassword());
	       ps1.setString(4,a.getTruename());
	       ps1.setString(5,a.getEmail());
	       int rtn=ps1.executeUpdate();
	       ps1.close();
	       ps2.close();
	       conn.close();
	       if(rtn==1){
	    	   return true;
	    	   }else{
	    	   return false;
	    	   } 
	        }catch(Exception e){
				e.printStackTrace();
				return false;
	        }
	}
	public boolean addMessage(String username,String message){
		int id=0;
		try{ 
		        String sql1="insert into message values(?,?,?)";
		        String sql2="select id from message";
		        PreparedStatement ps1=conn.prepareStatement(sql1);
		        PreparedStatement ps2=conn.prepareStatement(sql2);
		        ResultSet rs=ps2.executeQuery();
		        while(rs.next()){
		        id=rs.getInt(1);
		        }
		        id+=1;
		        ps1.setInt(1,id);
		       ps1.setString(2,username);
		       ps1.setString(3,message);
		       int rtn=ps1.executeUpdate();
		       ps1.close();
		       ps2.close();
		       conn.close();
		    
		 if(rtn==1){
		    return true;
		}else
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值