学习内容
JDBC
JDBC(java Database Connectivity),Java数据库连接,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据的方法。
JDBC的实现过程
- 加载驱动—mysql数据库
Class.forName("com.mysql.jdbc.Driver");
- 创建连接
Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/whut","root","123456");
- 写SQL语句——以查询为例
String sql="select * from user where number=?";
- 得到statement对象
PreparedStatement statement = connection.prepareStatement(sql);
- 执行SQL语句,得到结果集
ResultSet resultSet = statement.executeQuery();
- 处理结果集
while(resultSet.next()){
//得到密码,返回密码
password=resultSet.getString(3);
}
- 关闭资源——在DBUtil类中编写close函数
DBUtil.close(resultSet,statement,connection);
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();
}
}
ssm框架
ssm——>spring、springmvc、mybatis
- spring:控制反转,控制权的转移,用容器来统一的创建对象
- springmvc:实现页面跳转,和servlet类似
- mybatis:持久层框架
包的结构:
- bean包:放实体类,实体类和数据库相对应,将数据库中的数据封装成对象。实体类中包括:属性、构造函数(默认是无参的构造函数)、get set方法、重写toString()方法。
- dao持久层:进行数据库的增删改查
- service层:业务层
- servlet层(controller层/web层):实现页面跳转
- util层:工具层
具体使用见作业部分
作业—实现登录注册
- 创建实体类User,将数据库数据封装为对象
我的数据库是whut,表格是user,表的三个字段分别是:number name password,number是用户的手机号(主键),name是昵称,password是用户登陆的密码。
public class User {
String number;
String name;
String password;
public void setNumber(String number) {
this.number = number;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public String getNumber() {
return number;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
@Override
public String toString() {
return "User{" +
"number='" + number + '\'' +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
- 在dao层创建类UserDao,实现数据库的增删改查
根据用户输入的number,在数据库中进行查询 ,如果能查到,则返回密码,判断和用户输入的密码是否一样 。若查不到数据,则返回为空。
public String selectUser(String number) throws SQLException, ClassNotFoundException {
String password="";
Connection connection = DBUtil.getConnection();
System.out.println("数据库连接成功!");
String sql="select * from user where number=?";
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();
while(resultSet.next()){
//得到密码,返回密码
password=resultSet.getString(3);
}
DBUtil.close(resultSet,statement,connection);
return password;//将改密码和输入框的做对比
}
- 在servlet层创建类LoginServlet,实现页面的跳转
类LoginServlet继承于HttpServlet,在类中重写doGet()或者doPost()
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
String Password="";
String number=req.getParameter("number");
String password=req.getParameter("password");
UserDao userDao=new UserDao();
try {
Password=userDao.selectUser(number);
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
if(Password.equalsIgnoreCase(password)){
resp.getWriter().write("登陆成功!welcome!");
}
else{
resp.getWriter().write("未注册或者密码错误,登陆失败!");
}
}
}
- 在util层创建DBUtil,主要编写数据库连接函数和关闭资源函数
//连接数据库
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/whut","root","123456");
return connection;
}
//关闭连接
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();
}
}
- 编写index.jsp文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录界面</title>
</head>
<body>
<div>
<form action="/login",method="GET">
手机号: <input type="text",name="number"><br/><br/>
密码 : <input type="text",name="password"><br/><br/>
<input type="submit",value="注册">
<input type="reset",value="重置">
</form>
</div>
</body>
</html>
- 在web.xml文件添加映射
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.zr.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
- 运行结果
总结
今天的主要任务是回顾一下JDBC,初步学习一下ssm框架的使用。做作业的时候也遇到了一些问题,做了登录和注册两个界面,在这里只写了登陆界面。因为之前学过一点前端的知识,上个星期刚结束的实训课程也是Java项目,所以今天学的东西还是很简单的,也可以跟上老师的节奏。