之前使用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