目录
模拟登录
1.导入数据库和数据库连接池包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
2.编写登录页面
<form action="/hello" method="post">
账号:<input type="text" name="username"><br>
密码:<input type="text" name="password"><br>
<input type="submit" value="登录">
</form>
3.创建配置文件和相关类
dp.url=jdbc:mysql://localhost:3306/newdb3
dp.driver=com.mysql.jdbc.Driver
dp.password=root
dp.userName=root
dp.initnum=3
dp.maxNum=5
4.代码展示
HelloServlet类
public class HelloServlet extends HttpServlet
{
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
System.out.println("请求收到了");
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
// resp.getWriter().println("<h1>请求收到了</h1>");
String name=req.getParameter("username");
String password=req.getParameter("password");
UserService service=new UserService();
User user=service.getOneBynameAndpassword(name,password);
if(user!=null)
{
resp.getWriter().println("<h1>登陆成功</h1>");
}
resp.getWriter().print("<h1>用户名或者密码错误</h1>");
}
}
DBUtil类
/*
提供数据库链接的
*/
public class DBUtil {
private static String userName;
private static String password;
private static String driver;
private static String url;
private static int initNum;
private static int maxNum;
private static BasicDataSource bs;
static{
bs=new BasicDataSource();
//读取配置文件
Properties p=new Properties();
InputStream is= DBUtil.class.getClassLoader().getResourceAsStream("dp.properties");
try {
p.load(is);
} catch (IOException e) {
e.printStackTrace();
}
url=p.getProperty("dp.url");
driver=p.getProperty("dp.driver");
userName=p.getProperty("dp.userName");
password=p.getProperty("dp.password");
initNum=Integer.parseInt(p.getProperty("dp.initnum"));
maxNum=Integer.parseInt(p.getProperty("dp.maxNum"));
bs.setDriverClassName(driver);
bs.setUrl(url);
bs.setUsername(userName);
bs.setPassword(password);
//设置初始连接数量
bs.setInitialSize(3);
//设置最大连接数量
bs.setMaxActive(5);
}
public static Connection getConnection(){
Connection conn=null;
try {
//通过数据库连接池来进行链接获取链接对象
conn=bs.getConnection();
// Class.forName(driver);
// conn= DriverManager.
// getConnection(url,userName,password);
} catch (Exception e) {
e.printStackTrace();
}
// 2.获取链接
return conn;
}
public static void close(Connection conn){
try {
if(conn!=null) {
conn.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
Service类
public class UserService {
UserDao dao=new UserDao();
public User getOneBynameAndpassword(String name, String password) {
return dao.getOneBynameAndpassword(name,password);
}
}
UserDao类
public class UserDao {
public User getOneBynameAndpassword(String name, String password) {
Connection connection= DBUtil.getConnection();
String sql="select *from t1 where username=? and password=?";
User user1=null;
try {
PreparedStatement preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1,name);
preparedStatement.setString(2,password);
ResultSet rs=preparedStatement.executeQuery();
while(rs.next())
{
user1=new User();
String username=rs.getString("username");
System.out.println(rs.getString("username"));
String pass=rs.getString("password");
System.out.println(rs.getString("password"));
user1.setUsername(username);
user1.setPassword(pass);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return user1;
}
}
User类
public class User {
private int id;
private String username;
private String password;
public User() {
}
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
问题与解决
运行结果如图
就是说我的jar包没有加载进来,明明依赖没有爆红奇怪
然后手动导入到web下面
然后又出现l错误,发现连接池那个类初始化错误,配置文件名字写错了
来了,最坑爹的来了,
setString(第几个问号,要传入的值)
executeQuery()提交
getString("数据库属性")