jsp的DAO模式简单列子

数据库设计:数据库
java类:
DaoUtil.java:工具类

package com.c1810.liule.dao.common;

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


public class DaoUtil {
	 private final String DBDRIVER ="com.mysql.jdbc.Driver";  
	    //定义数据库连接URL  
	    private final String DBURL = "jdbc:mysql://localhost:3306/login" ;  
	    //定义数据库连接用户名  
	    private final String DBUSER = "root" ;  
	    //定义数据库连接密码  
	    private final String DBPASSWORD = "123" ;  
	    //定义数据库连接对象  
	    private Connection conn = null ;  
	    //构造方法,加载驱动  
	    public DaoUtil(){  
	    	
	        try{  
	        	
	            Class.forName(DBDRIVER) ;  
	          
	            conn =(Connection) DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;    
	            
	        }  
	        catch (Exception e){  
	            System.out.println("加载驱动失败");  
	        }  
	    }  
	    // 取得数据库连接  
	    public Connection getConnection(){  
	        return conn ;  
	    }  
	 // 关闭资源
    public static void closeAll(ResultSet rs, PreparedStatement st, Connection conne) {
        try {
            if (null != rs) {
                rs.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            if (st!= null ) {
                st.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            if (conne != null) {
                conne.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
	}
	 

StudentImol.java:接口实现类

package com.c1810.liule.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.c1810.liule.dao.common.DaoUtil;
import com.c1810.liule.dao.inter.StudentDao;
import com.c1810.liule.pojo.Student;


public class StudentImol implements StudentDao {

	Connection conne = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    DaoUtil dbc = null ; 
	@Override
	public boolean add(Student student) throws Exception {
		// TODO Auto-generated method stub
		 String sql = "INSERT INTO student(id,name,pwd,age,sex) VALUES(?,?,?,?,?)" ; 
	        // 下面是针对数据库的具体操作  
	        try{  
	            // 连接数据库  
	            dbc = new DaoUtil() ;  
	           
	            pstmt = dbc.getConnection().prepareStatement(sql) ; 
	            pstmt.setString(1, student.getId());  
	            pstmt.setString(2, student.getName());  
	            pstmt.setString(3, student.getPwd());
	            pstmt.setString(4, student.getAge()); 
	            pstmt.setString(5, student.getSex()); 
	            // 进行数据库更新操作  
	            pstmt.executeUpdate();
	            // 关闭数据库连接  
	        	if(dbc!=null) {
	        		dbc.closeAll(rs, pstmt, conne);
	        		return true;
	        	}     
	        }catch (Exception e){  
	            throw new Exception("操作出现异常") ;  
	        }  
		return false;
	}

	@Override
	public boolean delete(Student student) throws Exception {
		// TODO Auto-generated method stub
		  String sql = "DELETE FROM student WHERE id=?" ;  
	        // 下面是针对数据库的具体操作  
	        try{  
	            // 连接数据库  
	            dbc = new DaoUtil() ;  
	            pstmt = (PreparedStatement) dbc.getConnection().prepareStatement(sql) ;           
	            pstmt.setString(1,student.getId()) ;  
	            // 进行数据库更新操作  
	            pstmt.executeUpdate() ;  
	            if(dbc!=null) {
	            	dbc.closeAll(rs, pstmt, conne);
	            	return true;
	            }
	        }catch (Exception e){  
	            throw new Exception("操作出现异常") ;  
	        }  
		return false;
	}

	@Override
	public boolean update(Student student) throws Exception {
		// TODO Auto-generated method stub
		   String sql = "UPDATE student SET name=?,pwd=?,age=?,sex=? WHERE id=?" ;  
	       
	        // 下面是针对数据库的具体操作  
	        try{  
	            // 连接数据库  
	            dbc = new DaoUtil() ;  
	            pstmt = (PreparedStatement) dbc.getConnection().prepareStatement(sql) ;           
	            pstmt.setString(1, student.getName());  
	            pstmt.setString(2, student.getPwd());  
	            pstmt.setString(3,student.getAge());  
	            pstmt.setString(4, student.getSex()); 
	            pstmt.setString(5, student.getId()); 
	            // 进行数据库更新操作  
	            pstmt.executeUpdate() ;  
	            if(dbc!=null) {
	            	dbc.closeAll(rs, pstmt, conne);
	            	return true;
	            } 
	        }  
	        catch (Exception e){  
	            throw new Exception("操作出现异常") ;  
	        }  
		return false;
	}

	@Override
	public String select(Student student) {
		// TODO Auto-generated method stub
		 String sql = "SELECT * FROM student WHERE id=?" ;  
	    
	        // 下面是针对数据库的具体操作  
	            // 连接数据库  
	            dbc = new DaoUtil() ;  
	            try {
					pstmt = dbc.getConnection().prepareStatement(sql) ;
					   pstmt.setString(1, student.getId());  
			            // 进行数据库查询操作  
			            ResultSet rs = pstmt.executeQuery() ; 
			            if(rs.next())  
			            {  
			                // 查询出内容,之后将查询出的内容赋值给student对象  
			                student = new Student() ;  
			                student.setId(rs.getString(1));
			                return rs.getString(1);
			            }  
			           
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}           
	         
	            return null;
	

}
}

StudentDao.java:接口类

package com.c1810.liule.dao.inter;

import com.c1810.liule.pojo.Student;

public interface StudentDao {

	public boolean add(Student student) throws Exception ;
	public boolean delete(Student student) throws Exception;
	public boolean update(Student student) throws Exception;
	public String select(Student student);
}

Student.java:实体类

package com.c1810.liule.pojo;

public class Student {
	private String id;

	private String name;
	private String age;
	private String sex;
	private int classid;
	private String pwd;
	private String emaill;
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getEmaill() {
		return emaill;
	}
	public void setEmaill(String emaill) {
		this.emaill = emaill;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getClassid() {
		return classid;
	}
	public void setClassid(int classid) {
		this.classid = classid;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
}

下面是JSP代码:
login.jsp:登录界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%
String names="";
String pwds="";
Cookie cks[]=request.getCookies();
if(cks!=null){
	for(Cookie ck:cks){
		if(ck.getName().equals("names")){
			names=ck.getValue();
		}else if(ck.getName().equals("pwds")){
			pwds=ck.getValue();
		}
}
}
%>
</head>
<body>
<form action="dection.jsp" method="post">
id:<input type="text" name="id"><br>
姓名:<input type="text" name="name"><br>
密码:<input type="password" name="pwd"><br>
年龄:<input type="number" name="age"><br>
性别:<input type="text" name="sex"><br>
<input type="submit" value="注册" name="login">
<input type="submit" value="删除" name="login">
<input type="submit" value="修改" name="login">
</form>
</body>
</html>

登录过后进入判断界面:
dection.jsp:判断代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     //导入java包
    <%@ page import="com.c1810.liule.dao.impl.StudentImol" %>
<%@ page import="com.c1810.liule.pojo.Student" %>
<%@ page import="com.c1810.liule.dao.inter.StudentDao" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%
request.setCharacterEncoding("utf-8");//转换字符编码格式
//取值
String id=request.getParameter("id");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
String age=request.getParameter("age");
String sex=request.getParameter("sex");
String submit=request.getParameter("login");
%>
<%
//调用java类
StudentDao sdd=new StudentImol();
//将登录界面各控件的值赋给student实体类的属性
Student st=new Student();
st.setId(id);
st.setName(name);
st.setPwd(pwd);
st.setSex(sex);
st.setAge(age);
//添加前进行查询判断
//得到查询方法返回的ID
String ids=sdd.select(st);
//得到login界面submit的value值 并且满足当前ID在数据库中不存在
if(submit.equals("注册")&&!ids.equals(id)){
//添加方法
	sdd.add(st);
	RequestDispatcher rd= request.getRequestDispatcher("welcom.jsp");
	session.setAttribute("liu", id);
	rd.forward(request, response);
}else if(submit.equals("删除")){
//删除方法
	sdd.delete(st);
	RequestDispatcher rd= request.getRequestDispatcher("welcom.jsp");
	session.setAttribute("liu", id);
	rd.forward(request, response);
}
else if(submit.equals("修改")){
//修改方法
	sdd.update(st);
	RequestDispatcher rd= request.getRequestDispatcher("welcom.jsp");
	session.setAttribute("liu", id);
	rd.forward(request, response);
}else{
//添加失败返回login登录页面
	out.print("你好");
	response.sendRedirect("login.jsp");
};
%>
</head>
<body>

</body>
</html>

根据判断界面的逻辑决定返回那个界面
welcom.jsp:读数据库操作成功返回的页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%
String submit=request.getParameter("login");
String liu=(String)session.getAttribute("liu");
//如果没有经过login页面直接进入当前页面强制返回login登录页面
if(liu==null){
	//response.sendRedirect("NewFile1.jsp");
	RequestDispatcher rd= request.getRequestDispatcher("login.jsp");
	rd.forward(request, response);
}
%>
</head>
<body>
<%
if(submit.equals("注册")){
	out.println(liu+"注册成功");
}
if(submit.equals("删除")){
	out.println(liu+"删除成功");
}
if(submit.equals("修改")){
	out.println(liu+"修改成功");
}
%>

</body>
</html>

因当前连接的是mysql数据库 所以需要导入mysql插件
mysql-connector-java-5.1.47.jar;

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值