第一步,在数据库中创建一个user表
创建user表
create table user(
id int primary key auto_increment,-- id值,添加主键且自增长
password varchar(32) not null -- 密码,非空
username varchar(32) unique not null,-- 账号名,非空且唯一
)
添加数据
INSERT INTO USER (username,PASSWORD) VALUES ("superbaby",123);
第二步,写一个user类
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int 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 + '\'' +
'}';
}
}
第三步,写一个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;
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();
}
}
第四步,创建一个类,在类中对数据库中的元素经行查询操作(对应于登录页面)
import cn.itcast.domain.User;
import cn.itcast.util.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.class), loginUser.getUsername(), loginUser.getPassword());
return user;
}catch (DataAccessException e){
e.printStackTrace();
return null;
}
}
}
第五步,创建一个类用于对数据库中的元素经行添加(对应于注册页面)
import cn.itcast.domain.User;
import cn.itcast.util.JDBCUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
public class userZhuCe {
private JdbcTemplate template=new JdbcTemplate(JDBCUtils.getDataSource());
public int add(User user){
try{
String sql="insert into user (username,password) values(?,?)";
int result = template.update(sql, user.getUsername(), user.getPassword());
return result;
}catch (DataAccessException e){
return -1;
}
}
}
第六步,创建一个主页面(HTML页面)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>主页面</title>
<style>
div{
color: #fc4c26;
text-align: center;
font-size: 40px;
}
a{
color: #fc4c26;
}
</style>
</head>
<body>
<div>
<a href="zhuCe.html">注册</a><br>
<a href="login.html">登录</a>
</div>
</body>
</html>
第七步,创建两个HTML文件,对应于主页面中的两个超链接(一个用于注册,一个用于登录)
登录
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form action="/day14_test/loginServlet" method="post">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
注册
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form action="/day14_test/zhuCeServlet" method="post">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="password"><br>
<input type="submit" value="注册">
</form>
</body>
</html>
第八步,写登录和注册。
登录
import cn.itcast.dao.userDao;
import cn.itcast.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("/loginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置编码
req.setCharacterEncoding("utf-8");
// //获取请求参数
// String username = req.getParameter("username");
// String password = req.getParameter("password");
// //封装user对象
// User loginUser=new User();
// loginUser.setUsername(username);
// loginUser.setPassword(password);
//获取所有请求参数
Map<String, String[]> map = req.getParameterMap();
//创建USer对象
User loginUser=new User();
//使用BeanUtils工具类
try {
BeanUtils.populate(loginUser,map);//两个参数,一个对象参数,一个为map集合
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
//调用userDao中的login()方法
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);
}
}
注册
import cn.itcast.dao.userZhuCe;
import cn.itcast.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("/zhuCeServlet")
public class zhuCeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
User zhuCe=new User();
zhuCe.setUsername(username);
zhuCe.setPassword(password);
userZhuCe z=new userZhuCe();
int result = z.add(zhuCe);
if(result==-1){
req.getRequestDispatcher("/ZhuCedemo").forward(req,resp);
}else if(result>0){
req.getRequestDispatcher("/sucessZhuCe").forward(req,resp);
}else {
req.getRequestDispatcher("/failZhuCe").forward(req,resp);
}
}
}
第九步,写注册成功和失败,登录成功和失败的页面
注册成功
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("/sucessZhuCe")
public class sucessZhuCe extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//给页面写一句话
resp.setContentType("text/html;charset=utf-8");
//输出
resp.getWriter().write("注册成功");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}
注册失败
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("/failZhuCe")
public class failZhuCe extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//给页面写一句话
resp.setContentType("text/html;charset=utf-8");
//输出
resp.getWriter().write("注册失败,请重新注册");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}
登录成功
import cn.itcast.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 successlServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
User user = (User) req.getAttribute("user");
if(user!=null) {
//给页面写一句话
resp.setContentType("text/html;charset=utf-8");
//输出
resp.getWriter().write("登录成功! " + user.getUsername() + "欢迎您");
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}
登录失败
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 {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//给页面写一句话
resp.setContentType("text/html;charset=utf-8");
//输出
resp.getWriter().write("登录失败,用户名或密码错误");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}