7.20 zr实习日记

学习内容

JDBC

JDBC(java Database Connectivity),Java数据库连接,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据的方法。
JDBC的实现过程

  1. 加载驱动—mysql数据库
Class.forName("com.mysql.jdbc.Driver");
  1. 创建连接
Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/whut","root","123456");
  1. 写SQL语句——以查询为例
String sql="select * from user where number=?";
  1. 得到statement对象
PreparedStatement statement = connection.prepareStatement(sql);
  1. 执行SQL语句,得到结果集
ResultSet resultSet = statement.executeQuery();
  1. 处理结果集
while(resultSet.next()){
            //得到密码,返回密码
            password=resultSet.getString(3);
        }
  1. 关闭资源——在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层:工具层
    具体使用见作业部分

作业—实现登录注册

  1. 创建实体类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 + '\'' +
                '}';
    }
}

  1. 在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;//将改密码和输入框的做对比
    }
  1. 在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("未注册或者密码错误,登陆失败!");
        }
    }
}
  1. 在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();
        }
    }
  1. 编写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>
  1. 在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>

  1. 运行结果
    在这里插入图片描述
    在这里插入图片描述

总结

今天的主要任务是回顾一下JDBC,初步学习一下ssm框架的使用。做作业的时候也遇到了一些问题,做了登录和注册两个界面,在这里只写了登陆界面。因为之前学过一点前端的知识,上个星期刚结束的实训课程也是Java项目,所以今天学的东西还是很简单的,也可以跟上老师的节奏。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值