javaWeb simple sign-on implementation verification database

User login requirements Case:
1. Log in page write login.html
username & password two input boxes
2. Druid database connection pooling, operation mysql, day14 user database tables
3. JdbcTemplate art package the JDBC
4. Jump successful login SuccessServlet to show: a successful login! User name, you are welcome
5. Jump to FailServlet show login failure: Login failed for user name or password is incorrect

Without try () {} catch two errors occurred !!!!!!

java.lang.NoClassDefFoundError: org / springframework / jdbc / core / RowMappers error debugging get through

for servlet [servlet.LoginServlet] in context with path [/tom] threw excepti..............

The principle is to log on by entering a query the database, if it means to the user password is correct, otherwise an error, you can use when implementing try () {} catch {}

The right to return an object, an error is returned null: this error will not!

UserDaos
Package UserDao; 

Import JdbcUtils.JdbcUtility;
 Import domain.User;
 Import org.springframework.dao.DataAccessException;
 Import org.springframework.jdbc.core.BeanPropertyRowMapper;
 Import org.springframework.jdbc.core.JdbcTemplate; 

/ ** 
 * database operations 
 @date 2019/9/22 16:42 * 
 * / 
public  class UserDaos {
     Private the JdbcTemplate Templates = new new the JdbcTemplate (JdbcUtility.getDataSource ());
     public the user Login (the user logs) { // from a database lookup to obtain the user name and password package data inside loginuser.getUser () to find the corresponding database data 
        the try { //Note !!!! If the query is returned to the user otherwise return null (does not complain !!!)
             // so the data in the database so you can determine whether there is an input of 
            String sql = "select * from log where user =? And pass = "? ; 
            the User User = templates.queryForObject (SQL, new new BeanPropertyRowMapper <> (the User. class ), 
                    logs.getUser (), 
                    logs.getPass ()); 
            return User; 
        } the catch (the DataAccessException E) { 
            e.printStackTrace ( ); 
            return  null ; 
        } 
    } 
}

LoginServlet

package servlet;

import UserDao.UserDaos;
import domain.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/one")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //1.设置编码
        req.setCharacterEncoding("utf-8");
        //2.获取请求参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        //3.封装对象
        User loginuser=new User();
        loginuser.setUser(username);
        loginuser.setPass(password);
        //4.调用userDaos
        UserDaos userDaos=new UserDaos();
        User user = userDaos.login(loginuser);
        System.out.println(user);
        //5.判断user
        if (user!=null){
            req.setAttribute("user",user);//共享数据
            req.getRequestDispatcher("/su").forward(req,resp);//重定向
        }else {
            req.getRequestDispatcher("/fa").forward(req,resp);
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}
package JdbcUtils;
import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; /** * 数据库工具类 * @date 2019/9/22 16:00 */ public class JdbcUtility { static DataSource dataSource=null; static {//加载配置文件 Properties pro=new Properties(); InputStream rs JdbcUtility =. Class .getClassLoader () the getResourceAsStream ( "druid.properties." ); The try { pro.load (RS); the dataSource = DruidDataSourceFactory.createDataSource (Pro); } the catch (IOException E) { e.printStackTrace (); } the catch (Exception E) { e.printStackTrace (); } } // returns a data pool object public static the DataSource getDataSource () { return the dataSource; } // Get link Connection object public static Connection getConnection() throws SQLException { return dataSource.getConnection(); } }

user

package domain;
/**
 * s实体封装数据库表
 * @date 2019/9/22 16:40
 */
public class User {
    private int id;
    private String user;
    private String pass;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", user='" + user + '\'' +
                ", pass='" + pass + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

fail

package servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * 登录失败转发到此页面
 * @date 2019/9/22 20:47
 */
@WebServlet("/fa")
public class FailServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {
         //
         the response.setContentType ( "text / HTML; charset = UTF-. 8" );
         // output 
        response.getWriter () write ( "login failed, user name or password is wrong." ); 
    } 

    Protected  void the doGet (the HttpServletRequest Request, the HttpServletResponse Response) throws ServletException, IOException {
         the this .doPost (Request, Response); 
    } 
}

sucess

package servlet;

import domain.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 登录失败转发到此页面
 * @date 2019/9/22 20:47
 */
@WebServlet("/su")
public class SuecessServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //
        response.setContentType("text/html;charset=utf-8");//输出为中文格式
        //输出
        User user =(User) request.getAttribute("user");
        if (user!=null){
            response.getWriter().write("登录成功,欢迎你"+user.getUser());
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

 html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/one" method="post">
    用户名:<input type="text" name="username"> <br>of the typethe INPUT<
    Password:="password" name="password"><br>

    <input type="submit" value="登录">
</form>
</body>
</html>

database

DROP TABLE IF EXISTS `log`;
CREATE TABLE `log`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `pass` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of log
-- ----------------------------
INSERT INTO `log` VALUES (1, 'zou', '123');

SET FOREIGN_KEY_CHECKS = 1;

Profiles

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///login
username=root
password=123
initialSize=5
maxActive=10
maxWait=3000

  

Guess you like

Origin www.cnblogs.com/july7/p/11569959.html