【中软国际实习】JDBC+Servlet+Tomcat 实现:登入,并访问数据库数据
程序员文章站
2022-10-03 17:00:58
今天是开始中软国际实习的第一天,有点期待已久的小激动。线上实习的模式固然少了许多乐趣,但学习任务与质量并无所差,老师为我们讲解了本次实习所要完成的任务和学习模块,带领我们实现了一个简单的小程序,现将今天的收获做个小结。一、配置环境1、Idea开发工具:IntelliJ IDEA 2020.1 x64jdk-8u191-windows-x64-8.0.1910.12.exe进入cmd查看:(1)java :是否安装JDK(2)javac :环境变量是否配置(3)java -versio...
今天是开始中软国际实习的第一天,有点期待已久的小激动。线上实习的模式固然少了许多乐趣,但学习任务与质量并无所差,老师为我们讲解了本次实习所要完成的任务和学习模块,带领我们实现了一个简单的小程序,现将今天的收获做个小结。
一、配置环境
1、Idea
开发工具:IntelliJ IDEA 2020.1 x64
jdk-8u191-windows-x64-8.0.1910.12.exe
进入cmd查看:
(1)java :是否安装JDK
(2)javac :环境变量是否配置
(3)java -version :查看版本
2、MySQL
本次项目开发选用5.7版本
3、SQLYog
用于连接数据库
二、创建数据库
1、添加本地连接
2、创建数据库whlg,创建数据表tb_user并添加数据
可以在SQLYog的历史记录处看到创建流程:
三、JDBC
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。我们通常所说的JDBC是面向关系型数据库的。
步骤:
1、加载驱动
导入jar包
加载驱动
Class.forName("com.mysql.jdbc.Driver");
2、创建连接
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/whlg","root","123456");
return connection;
}
3、写sql语句
sql语句的书写使用标准的“增删查改”模式
String sql = "select * from tb_user";
String sql1 = "delete from tb_user where id = ?";
4、创建statement对象(用于执行sql语句),得到结果集
创建statement对象用于执行sql,resultSet为返回的结果集。executeQuery()保证查询操作不改变数据;executeUpdate()则在增、删、改情况下更新数据库数据。
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();
statement.setInt(1,id);
statement.executeUpdate();
5、处理结果集
while (resultSet.next()){
User user=new User();
int id=resultSet.getInt(1);
String username = resultSet.getString(2);
String password=resultSet.getString(3);
user.setId(id);
user.setUsername(username);
user.setPassword(password);
userList.add(user);
}
6、关闭资源
public static void close(ResultSet resultSet, Statement statement,Connection connection) throws SQLException {
if(resultSet!=null){
resultSet.close();
}
if(statement!=null){
statement.close();
}
if(connection!=null){
connection.close();
}
}
四、实现:使用用户名、密码登入,并查询数据库数据
· User.java 用户实体类
public class User {
public User(){
}
public User(int id,String username,String password){
this.id = id;
this.username = username;
this.password = password;
}
private int id;
private String username;
private String 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 + '\'' +
'}';
}
}
· UserDao.java 从数据库中获取用户名与密码
Connection connection = null;
PreparedStatement ps = null;
ResultSet rs = null;
public User getByName(String username){
User user = null;
try {
Connection connection = DBUtil.getConnection();
System.out.println("获得连接成功");
String sql = "select * from tb_user where username=?";
ps = connection.prepareStatement(sql);
ps.setString(1,username);
rs = ps.executeQuery();
while(rs.next()){
user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return user;
}
· UserService.java 引入Dao,进行业务处理
public class UserService {
UserDao userDao = new UserDao();
public boolean isLogain(String username,String password){
User user = userDao.getByName(username);
if(user!=null && password.equals(user.getPassword())){
return true;
}
return false;
}
}
· index.jsp 书写form表单
<%--
Created by IntelliJ IDEA.
User: Luo
Date: 2020/7/20
Time: 9:19
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/Login" method="post">
${mess }<br>
<input type="text"name="username"placeholder="请输入用户名"><br/>
<input type="password"name="password"placeholder="请输入密码"><br>
<a href="/hello"> 登入,并查询所有用户</a>
</form>
</body>
</html>
· LoginServlet.java 将接受到的信息与数据库对比,并进行页面跳转
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
UserService userService = new UserService();
boolean flag = userService.isLogain(username,password);
if(flag){
req.getRequestDispatcher("/index.jsp").forward(req,resp);
}else {
String message = "用户名或密码错误";
req.setAttribute("message",message);
req.getRequestDispatcher("/login.jsp").forward(req,resp);
}
}
· 结果展示
运行程序,在浏览器得到如下界面:
根据提示输入用户名和密码,点击“登入,并查询所有用户”即可查询数据库数据。
五、总结
人生第一次的实习,就以人生第一篇博客作结。期待已久的实习由于客观因素而不得不改为线上,有些许遗憾,但也收获不少。短暂而忙碌的一天中,我确定了战友,学习了JDBC,马马虎虎写了一个登入功能,还有这篇简陋的博客,不过也算是为接下来的实习投了一块敲门砖。虽然接下来的任务会很紧迫,但我会保持高涨的激情,学习如何成为一名Java开发师。
本文地址:https://blog.csdn.net/qq_43358581/article/details/107467210