登陆案例
文章目录
登陆案例1. 需求2. 实现步骤2.1 创建数据库和表2.2 登陆页面(login.html)2.3 数据库连接池配置文件(druid.properties)2.4 Java 代码部分2.4.1 导入Jar包(web/WEB-INFO/lib)2.4.2 User 实体类(src/com.login.domain)2.4.3 编写 JdbcTemplate 的工具类(src/com.login.utils)2.4.4 UserDao 类(src/com.login.dao)2.4.4 编写服务类 (src/com.login.web.servlet)2.4.4.1 登陆服务函数(LoginServlet)2.4.4.2 登陆成功服务函数(SuccessServlet)2.4.4.3 登陆失败服务函数(FailServlet)
1. 需求
编写 login.html 登陆页面使用 Druid 数据库连接池技术,操作 MySQL 中建立的 user 表使用 JDBCTemplate 技术封装 JDBC登陆成功跳转到 SuccessServlet 展示:登陆成功,欢迎您!登陆失败跳转到 FailServlet 展示:登陆失败,用户名或密码错误!
2. 实现步骤
注意一下开发环境,我这里的开发环境是:IDEA_2019.2.3 、MySQL_8.0.17 和 Tomcat_9.0.26 关于这个demo,我已经上传到资源下载,可以直接下载看。
2.1 创建数据库和表
CREATE DATABASE IF NOT EXISTS example
CHARACTER SET utf8
;
USE example
;
CREATE TABLE USER(
id
INT PRIMARY KEY AUTO_INCREMENT,
username
VARCHAR(32) UNIQUE NOT NULL,
password
VARCHAR(32) NOT NULL
);
INSERT INTO USER VALUES(1,"admin","123");
2.2 登陆页面(login.html)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title
</title>
</head>
<body>
<form action="/loginTest/login" method="post">
用户名:
<input type="text" name="username"><br>
密码:
<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
注意:
action属性值为:/虚拟路径/资源路径
2.3 数据库连接池配置文件(druid.properties)
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/example?serverTimezone=UTC
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
2.4 Java 代码部分
2.4.1 导入Jar包(web/WEB-INFO/lib)
Jar包 需要放在 WEB-INFO/lib 路径下,包括以下:
spring-tx-5.0.0.RELEASE.jarspring-jdbc-5.0.0.RELEASE.jarspring-core-5.0.0.RELEASE.jarspring-beans-5.0.0.RELEASE.jarmysql-connector-java-8.0.17.jarmchange-commons-java-0.2.12.jardruid-1.0.9.jarcommons-logging-1.2.jarcommons-beanutils-1.8.0.jar
2.4.2 User 实体类(src/com.login.domain)
package com
.login
.domain
;
public class User {
private Integer id
;
private String username
;
private String password
;
public Integer
getId() {
return id
;
}
public void setId(Integer 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
+ '\'' +
'}';
}
}
2.4.3 编写 JdbcTemplate 的工具类(src/com.login.utils)
package com
.login
.utils
;
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
;
public class JDBCUtils {
private static DataSource ds
;
static {
try {
Properties pro
= new Properties();
InputStream is
= JDBCUtils
.class.getClassLoader().getResourceAsStream("druid.properties");
pro
.load(is
);
ds
= DruidDataSourceFactory
.createDataSource(pro
);
} catch (IOException e
) {
e
.printStackTrace();
} catch (Exception e
) {
e
.printStackTrace();
}
}
public static DataSource
getDataSource() {
return ds
;
}
public static Connection
getConnection() throws SQLException
{
return ds
.getConnection();
}
}
2.4.4 UserDao 类(src/com.login.dao)
package com
.login
.dao
;
import com
.login
.domain
.User
;
import com
.login
.utils
.JDBCUtils
;
import org
.springframework
.dao
.DataAccessException
;
import org
.springframework
.jdbc
.core
.BeanPropertyRowMapper
;
import org
.springframework
.jdbc
.core
.JdbcTemplate
;
public class UserDao {
private JdbcTemplate template
= new JdbcTemplate(JDBCUtils
.getDataSource());
public User
login(User loginUser
){
try {
String sql
= "select * from user where username = ? and password = ?";
User user
= template
.queryForObject(sql
,
new BeanPropertyRowMapper<User>(User
.class),
loginUser
.getUsername(),
loginUser
.getPassword());
return user
;
}catch (DataAccessException e
) {
e
.printStackTrace();
return null
;
}
}
}
2.4.4 编写服务类 (src/com.login.web.servlet)
2.4.4.1 登陆服务函数(LoginServlet)
package com
.login
.web
.servlet
;
import com
.login
.dao
.UserDao
;
import com
.login
.domain
.User
;
import org
.apache
.commons
.beanutils
.BeanUtils
;
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
;
import java
.lang
.reflect
.InvocationTargetException
;
import java
.util
.Map
;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
req
.setCharacterEncoding("utf-8");
Map
<String
,String
[]> map
= req
.getParameterMap();
User loginUser
= new User();
try{
BeanUtils
.populate(loginUser
,map
);
} catch (IllegalAccessException e
) {
e
.printStackTrace();
} catch (InvocationTargetException e
) {
e
.printStackTrace();
}
UserDao dao
= new UserDao();
User user
= dao
.login(loginUser
);
if (user
== null
){
req
.getRequestDispatcher("/failServlet").forward(req
,resp
);
}else {
req
.setAttribute("user",user
);
req
.getRequestDispatcher("/successServlet").forward(req
,resp
);
}
}
@Override
protected void doPost(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
this.doGet(req
,resp
);
}
}
2.4.4.2 登陆成功服务函数(SuccessServlet)
package com
.login
.web
.servlet
;
import com
.login
.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("/successServlet")
public class SuccessServlet extends HttpServlet {
protected void doPost(HttpServletRequest request
, HttpServletResponse response
) throws ServletException
, IOException
{
User user
= (User
) request
.getAttribute("user");
if (user
!= null
) {
response
.setContentType("text/html;charset=utf-8");
response
.getWriter().write("登陆成功! " + user
.getUsername() + "欢迎您!");
}
}
protected void doGet(HttpServletRequest request
, HttpServletResponse response
) throws ServletException
, IOException
{
this.doPost(request
, response
);
}
}
2.4.4.3 登陆失败服务函数(FailServlet)
package com
.login
.web
.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
;
@WebServlet("/failServlet")
public class FailServlet extends HttpServlet {
protected void doPost(HttpServletRequest request
, HttpServletResponse response
) throws ServletException
, IOException
{
response
.setContentType("text/html;charset=utf-8");
response
.getWriter().write("登陆失败,用户名或密码错误!");
}
protected void doGet(HttpServletRequest request
, HttpServletResponse response
) throws ServletException
, IOException
{
this.doPost(request
,response
);
}
}
时间:2019年11月2日00:01:08