2021-08-15

SMBMS

在这里插入图片描述

数据库:

在这里插入图片描述

项目如何搭建?

考虑使用不使用Maven?使用Maven就要添加依赖,不使用就要导jar包。

项目搭建

  1. 搭建一个maven web项目

  2. 配置Tomcat

  3. 测试项目是否能够跑起来

  4. 导入项目中的jar包

  5. 创建项目包结构

    在这里插入图片描述

  6. 编写实体类;

    ORM映射:表-类映射

  7. 编写基础公共类

    1. 数据库配置文件
    dirver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306?useUnicode=true&characterEncoding=utf-8
    user=root
    password=123456
    
    1. 编写数据库的公共类

      package com.feng.dao;
      
      import java.io.IOException;
      import java.io.InputStream;
      import java.sql.*;
      import java.util.Properties;
      
      //操作数据库的公共类
      public class BaseDao {
          private static String dirver;
          private static String url;
          private static String user;
          private static String password;
      
          //静态代码块,类加载的时候就初始化
          static{
              //拿到配置文件
              InputStream in = BaseDao.class.getClassLoader().getResourceAsStream("db.properties");
              Properties properties = new Properties();
              try {
                  properties.load(in);
              } catch (IOException e) {
                  e.printStackTrace();
              }
              dirver = properties.getProperty("dirver");
              url = properties.getProperty("url");
              user = properties.getProperty("user");
              password = properties.getProperty("password");
              //获取连接
              try {
                  Class.forName(dirver);
              } catch (ClassNotFoundException e) {
                  e.printStackTrace();
              }
          }
      
          //获取数据库的操作对象
          public static Connection getConnection(){
              Connection connection =null;
              try {
                  connection = DriverManager.getConnection(url, user, password);
              } catch (SQLException throwables) {
                  throwables.printStackTrace();
              }
              return connection;
          }
      
          //编写查询的公共方法
          public static ResultSet queryResultSet(Connection connection,String sql,Object[] objects,PreparedStatement statement,ResultSet resultSet ) throws SQLException {
              statement = connection.prepareStatement(sql);
              for (int i = 0; i < objects.length; i++) {
                  statement.setObject(i-1,objects[i]);
              }
              resultSet = statement.executeQuery();
              return resultSet;
          }
          //编写增删改的公共方法
          public static int updateResultSet(Connection connection,String sql,Object[] objects,PreparedStatement statement ) throws SQLException {
              statement = connection.prepareStatement(sql);
              for (int i = 0; i < objects.length; i++) {
                  statement.setObject(i-1,objects[i]);
              }
              int i = statement.executeUpdate();
              return i;
          }
          //关闭资源
          public static boolean close(Connection connection,PreparedStatement statement,ResultSet resultSet){
              boolean flag = false;
              if (connection!=null){
                  try {
                      connection.close();
                  } catch (SQLException throwables) {
                      throwables.printStackTrace();
                      flag = false;
                  }
              }
              if (statement!=null){
                  try {
                      statement.close();
                  } catch (SQLException throwables) {
                      throwables.printStackTrace();
                      flag = false;
                  }
              }
              if (resultSet!=null){
                  try {
                      resultSet.close();
                  } catch (SQLException throwables) {
                      throwables.printStackTrace();
                      flag = false;
                  }
              }
              return true;
          }
      }
      
      
    2. 编写字符编码过滤器

       public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
              HttpServletResponse response = (HttpServletResponse) servletResponse;
              HttpServletRequest request = (HttpServletRequest) servletRequest;
      
              request.setCharacterEncoding("utf-8");
              response.setCharacterEncoding("utf-8");
              response.setContentType("text/html");
              //过滤之后让它们继续往下走
              filterChain.doFilter(request,response);
      
          }
      
      
  8. 导入静态资源

登录功能实现

在这里插入图片描述

  1. 编写前端页面

  2. 设置首页

    <!--设置欢迎页面-->
        <welcome-file-list>
            <welcome-file>login.jsp</welcome-file>
        </welcome-file-list>
    
  3. 编写dao接口

    public interface UserDao {
        //从数据库中拿到一个用户(包含此用户的所有的信息)
        public User getLoginUser(Connection connection ,String userCode) throws SQLException;
    }
    
  4. 编写dao接口的实现类

    package com.feng.dao.user;
    
    import com.feng.dao.BaseDao;
    import com.feng.pojo.User;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class UserDaneImp1 implements UserDao{
    
        public User getLoginUser(Connection connection, String userCode) throws SQLException {
            PreparedStatement statement = null;
            ResultSet resultSet = null;
            User user =null;
            String sql ="select * from smbms_user where userCode = ?";
            Object[] objects = {userCode};
            resultSet = BaseDao.queryResultSet(connection, sql, objects, statement, resultSet);
            //拿出集合中用户的信息
            if (resultSet!=null){
                //new一个用户
                user = new User();
                user.setId(resultSet.getInt("id"));
                user.setUserCode(resultSet.getString("userCode"));
                user.setUserName(resultSet.getString("userName"));
                user.setUserPassword(resultSet.getString("userPassword"));
                user.setGender(resultSet.getInt("gender"));
                user.setBirthday(resultSet.getDate("birthday"));
                user.setPhone(resultSet.getString("phone"));
                user.setAddress(resultSet.getString("address"));
                user.setUserRole(resultSet.getInt("userRole"));
                user.setCreateBy(resultSet.getInt("createBy"));
                user.setCreationDate(resultSet.getDate("creationDate"));
                user.setModifyBy(resultSet.getInt("modifyBy"));
                user.setModifyDate(resultSet.getDate("modifyDate"));
            }
            return user;
        }
    }
    
    
  5. 业务层接口

    public interface UserService {
        //用户登录
        public User login(String userCode,String userPassword);
    }
    
  6. 业务层实现类

    package com.feng.service.user;
    
    import com.feng.dao.BaseDao;
    import com.feng.dao.user.UserDaoImp1;
    import com.feng.dao.user.UserDao;
    import com.feng.pojo.User;
    import org.junit.Test;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    public class UserServiceImp1 implements UserService{
        //业务层肯定要去调用dao层从而来获取数据库中的数据
        //引入 UserDao类
        private UserDao userDao;
        //构造中引入这个类,下面就可以随时使用了
        public UserServiceImp1() {
            userDao = new UserDaoImp1();
        }
    
        public User login(String userCode, String userPassword) {
            Connection connection = BaseDao.getConnection();
            User user =null;
            try {
                //通过dao层的UserDaoImp1类中的getLoginUser方法,获得用户的所有信息。
               user = userDao.getLoginUser(connection, userCode);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            BaseDao.close(connection,null,null);
            return user;
        }
        //测试一下
        @Test
        public void test01(){
            UserServiceImp1 userServiceImp1 = new UserServiceImp1();
            User user = userServiceImp1.login("admin", "1654a");
            System.out.println(user.getUserPassword());
        }
    }
    
    
  7. 编写Servlet

     @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //获取用户名和密码
            String userCode = req.getParameter("userCode");
            String userPassword = req.getParameter("userPassword");
            //查人
            UserServiceImp1 serviceImp1 = new UserServiceImp1();
            User user = serviceImp1.login(userCode, userPassword);\
            //判断
            if(user!=null){
                //将用户的信息放到Session中,这地方可以用一个常量
                req.getSession().setAttribute(Constants.USER_SESSION,user);//将用户的所有的信息 都放进去
                //跳转到主页
                resp.sendRedirect("jsp/frame.jsp");
            }else {//查无此人
                //转发回登录页面,并且提示它,用户名或密码错误
                req.setAttribute("error","用户名或密码不正确");
                req.getRequestDispatcher("login.jsp").forward(req,resp);
            }
    
        }
    
  8. 注册Servlet

    <!--Servlet-->
        <servlet>
            <servlet-name>LoginServlet</servlet-name>
            <servlet-class>com.feng.servlet.user.LoginServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>LoginServlet</servlet-name>
            <url-pattern>/login.do</url-pattern>
        </servlet-mapping>
    
  9. 测试访问,确保以上功能都能使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值