我把整个过程大体分成了这几个部分完成,实现过程不算复杂:
1.创建数据库 java04,数据表user:
CREATE DATABASE java04 CHARSET=utf8;
USE java04;
CREATE TABLE USER(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(32) NOT NULL,
age INT NOT NULL,
gender BOOL DEFAULT TRUE NOT NULL,
username VARCHAR(32) UNIQUE NOT NULL,
PASSWORD VARCHAR(32) NOT NULL,
tel VARCHAR(15) UNIQUE NOT NULL
)
ALTER TABLE USER ADD loginDay TIMESTAMP;
SELECT * FROM USER;
2.根据数据库字段信息创建对应的实体类:
(数据库里的TIMESTAMP 映射到java里面用什么类型来接收?---->
https://www.cnblogs.com/heganlin/p/6074485.html)
3.编写工具类,来完成对数据库的操作:
4.编写Userdao,Userdao中的login来对传入的User进行用户名密码的提取,然后查询User所有信息进行返回
5.编写LoginServlet对其供求进行处理,获取到用户名和密码,然后封装成user对象,传入Userdao中处理,返回的结果进行判断是否为null,
否则跳转到登陆成功界面并展示登陆成功的信息!!!
6.编写Userdao中的register函数进行注册逻辑处理
7.编写registerServlet进行数据的收集,封装成user对象,传入Userdao的register函数中进行处理,对返回值进行判断处理
逻辑代码的结构目录:
各个部分的代码如下:
userDao.java
package com.caiden.Dao;
import com.caiden.Tools.ToolClass;
import com.caiden.User.UserClass;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
public class UserDao {
//创建Spring Template
static JdbcTemplate template = new JdbcTemplate(ToolClass.getDatasource());
public static UserClass login(UserClass user) {
try {
//查询用户数据并返回
String username = user.getUsername();
String password = user.getPassword();
//进行查询
String sql = "select * from user where username=? and password=?";
UserClass userClass = template.queryForObject(sql,
new BeanPropertyRowMapper<UserClass>(UserClass.class),
username, password);
return userClass;
} catch (Exception e) {
return null;
}
}
public static int register(UserClass user) {
/**
* INSERT INTO USER VALUES(
* DEFAULT,'李斯',16,FALSE,'lisi','123','156986659865',DEFAULT
* )
*/
try {
String sql = "insert into user values(DEFAULT,?,?,?,?,?,?,DEFAULT)";
int update = template.update(sql,
user.getName(),
user.getAge(),
user.isGender(),
user.getUsername(),
user.getPassword(),
user.getTel());
return update;
} catch (Exception e) {
return 0;
}
}
}
FaileServlet.java
package com.caiden.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("/faileServlet")
public class FaileServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("<h1>用户名或密码错误,登陆失败<h1>");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
LoginServlet.java
package com.caiden.Servlet;
import com.caiden.Dao.UserDao;
import com.caiden.User.UserClass;
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("/loginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
UserClass userClass = new UserClass();
userClass.setUsername(username);
userClass.setPassword(password);
UserClass login = UserDao.login(userClass);
if (login == null) {
request.getRequestDispatcher("/faileServlet").forward(request, response);
} else {
request.setAttribute("user", login);
request.getRequestDispatcher("/successServlet").forward(request, response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
RegisterServlet.java
package com.caiden.Servlet;
import com.caiden.Dao.UserDao;
import com.caiden.User.UserClass;
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("/registerServlet")
public class RegisterServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String tel = request.getParameter("tel");
String name = request.getParameter("name");
String age = request.getParameter("age");
String gender = request.getParameter("gender");
UserClass user = new UserClass();
System.out.println("username:" + username);
System.out.println("password:" + password);
System.out.println("tel:" + tel);
System.out.println("name:" + name);
System.out.println("age:" + age);
System.out.println("gender:" + gender);
//设置
user.setTel(tel);
user.setName(name);
user.setUsername(username);
user.setPassword(password);
user.setAge(Integer.valueOf(age));
user.setGender(Boolean.getBoolean(gender));
System.out.println(user);
//处理
int register = UserDao.register(user);
if (register == 1) {
request.getRequestDispatcher("/login.html").forward(request, response);
}else {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("<h1>注册失败,用户名已被注册或者信息填写错误</h1>");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
SuccessServlet.java
package com.caiden.Servlet;
import com.caiden.User.UserClass;
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 {
response.setContentType("text/html;charset=utf-8");
UserClass user = (UserClass) request.getAttribute("user");
response.getWriter().write("<h1>欢迎: "
+ user.getName() + " 的到来<br>你的号码是: " + user.getTel()
+ "<br>您的注册时间为: " + user.getLoginDay() + "<h1>");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
TestClass.java
package com.caiden.Test;
import com.caiden.Dao.UserDao;
import com.caiden.User.UserClass;
import org.junit.Test;
public class TestClass {
@Test
public void Dao() {
UserClass userClass = new UserClass();
userClass.setUsername("guanyu");
userClass.setPassword("123");
UserClass login = UserDao.login(userClass);
System.out.println(login);
}
@Test
public void register() {
UserClass user = new UserClass();
user.setPassword("123");
user.setUsername("456");
user.setAge(15);
user.setGender(false);
user.setName("皮卡丘");
user.setTel("153258963");
int register = UserDao.register(user);
System.out.println(register);
}
@Test
public void age() {
String gender = null;
boolean aBoolean = Boolean.getBoolean(gender);
System.out.println(aBoolean);
}
}
ToolClass.java
package com.caiden.Tools;
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 ToolClass {
static DataSource dataSource = null;
static Connection conn = null;
static {
//加载配置文件,获取DataSource
InputStream resourceAsStream = ToolClass.class.getClassLoader().getResourceAsStream("druid.properties");
Properties properties = new Properties();
try {
properties.load(resourceAsStream);
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//获取dataSource对象
public static DataSource getDatasource() {
return dataSource;
}
public static Connection getConnection() {
try {
conn = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
UserClass.java
package com.caiden.User;
import java.sql.Timestamp;
public class UserClass {
private int id;
private String name;
private int age;
private boolean gender;
private String username;
private String password;
private String tel;
private Timestamp loginDay;
@Override
public String toString() {
return "UserClass{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", gender=" + gender +
", username='" + username + '\'' +
", password='" + password + '\'' +
", tel='" + tel + '\'' +
", loginDay=" + loginDay +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isGender() {
return gender;
}
public void setGender(boolean gender) {
this.gender = gender;
}
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;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public Timestamp getLoginDay() {
return loginDay;
}
public void setLoginDay(Timestamp loginDay) {
this.loginDay = loginDay;
}
}
代码简化部分1:
代码简化部分2: