添加用户(数据库+servlet)

本文介绍了一个简单的用户添加流程,包括从前端页面收集用户信息,通过Servlet处理请求,利用DAO模式进行数据库操作,最终将数据持久化到数据库的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**目的:**在页面中输入用户名,密码,昵称,创建新的用户,并把数据保存到数据库中(tbl_user),并分配id;

过程分析:
添加用户

1.页面

  • Id
  • Loginname
  • Passworf
  • Nickname

2.UserAddServlet

  • 2.1).接受参数

  • -2.2)保存数据(保存到数据库中)

          针对接口编程(解耦)
    

3.JDBC---->提供了一个方法

  • Public boolean add(User u);

  • User封装参数
    - Id Lodinname Password Nickname

4.DAO

  1. ).User 封装参数
  2. ).UserDAO 接口,用来向上层提供方法
  3. )UserDAOImpl 接口的实现
  4. ).UserDAOFactory 生成接口实现类

从下向上写

代码实现:
1.创建util包

package com.lq.user.util;

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

public class DBUtil {
 ////加载sql驱动
	static {
     
    	 try {
			Class.forName("oracle.jdbc.OracleDriver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
 }
 //获得数据库连接
   public static Connection openConn() throws SQLException {
	   return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","123456");
	   
   }
    //关闭资源

   public static void close(Connection conn) {
	   close(conn,null,null);
   }
   public static void close(Connection conn,PreparedStatement pst) {
	   close(conn,pst,null);
   }
   public static void close(Connection conn,PreparedStatement pst,ResultSet rs)  {
	if(conn!=null)  //关闭conn
	{
		try {
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	if(pst!=null)  //关闭pst
	{
		try {
			pst.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	if(rs!=null)  //关闭rs
	{
		try {
			rs.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
   }
}



##``2.创建domain包

package com.lq.user.domain;

public class User {


private int id;
private String loginname; //登录名
private String password; //密码
private String nickname; //昵称

public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getLoginname() {
	return loginname;
}
public void setLoginname(String loginname) {
	this.loginname = loginname;
}
public String getPassword() {
	return password;
}
public void setPassword(String password) {
	this.password = password;
}
public String getNickname() {
	return nickname;
}
public void setNickname(String nickname) {
	this.nickname = nickname;
}

}

创建UserDAO接口

package com.lq.user.dao.dao;

import com.lq.user.domain.User;

public interface UserDAO {
    public boolean add(User u);  //需要实现的功能
}

实现UserDAO接口```

package com.lq.user.dao.impl;

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

import com.lq.user.dao.dao.UserDAO;
import com.lq.user.domain.User;
import com.lq.user.util.DBUtil;

public class UserDAOImpl implements UserDAO{

	private Connection conn;
	private PreparedStatement pst;
	@Override
	public boolean add(User u) {  //实现接口中的功能
	//插入索引   创建索引  -->create sequence seq_user;
		String sql = "insert into tbl_user values(seq_user.nextval,?,?,?)";  //要执行的SQL语句
		try {
			conn = DBUtil.openConn();  //获得数据库连接
			pst = conn.prepareStatement(sql); //操作sql语句
			//插入数据
			pst.setString(1, u.getLoginname());
			pst.setString(2, u.getPassword());
			pst.setString(3, u.getNickname());
			pst.executeUpdate();  //执行SQL语句
			return true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			DBUtil.close(conn, pst); //关闭打开的资源
		}
		return false;
	}

}

生成接口实现类

package com.lq.user.dao.factory;

import com.lq.user.dao.dao.UserDAO;
import com.lq.user.dao.impl.UserDAOImpl;## 标题
public class UserDAOFactory {

	public static UserDAO getUserDao() {
		return new UserDAOImpl();   //生成新的接口实现类
	}
}

接受保存数据

package com.lq.user.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import com.lq.user.dao.dao.UserDAO;
import com.lq.user.dao.factory.UserDAOFactory;
import com.lq.user.domain.User;

public class UserAddServlet implements Servlet {

	@Override
	public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
		//响应的编码格式
		resp.setContentType("text/html;charset=utf-8");
		PrintWriter out = resp.getWriter(); //输出
		//请求的编码格式
		req.setCharacterEncoding("utf-8");
		//请求得到的数据
		String loginname = req.getParameter("loginname");
		String password = req.getParameter("password");
		String nickname = req.getParameter("nickname");
		//封装数据
		User u = new User();
		u.setLoginname(loginname);
		u.setPassword(password);
		u.setNickname(nickname);
		
		UserDAO udao = UserDAOFactory.getUserDao();
		//添加
		boolean b=udao.add(u);
		if(b == true)
		{
			out.println("用户信息添加成功!!!");
		}else
		{
			out.println("用户信息添加失败!!!");
		}
				
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}

	
}

页面显示

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Add" method="get">
 loginname:<input type="text" name="loginname"/><br>
 password:<input type="password" name="password"/><br>
  nickname:<input type="text" name="nickname"/><br>
 <input type="submit" value="添加" />
</form>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值