![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiIXZ05WZj91YpB3I2EzX4xSZz91ZsAzNfRHLGZkRGZkRfJ3bs92YsAjMfVmepNHLYNkW1Y1TyVjdxRTNn1GT10mMhVTQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmLiRWYzEDM5cjZmRTZ4kTOihDZ1QTMiVjMwYTYyQGMwczLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
文章目录
- 前言
- 一、项目目录
- 二、配置
-
- 1.lib下 引入jar包
- 2、配置tomcat 及 部署项目到服务器
- 三、数据库的创建
- 四、后端代码
-
- 1、实体类User
- 2、数据库工具类
- 3、控制类UserDao
- 4、servlet类
- 四、前端代码
-
- 1、main主页面
- 2、登录界面
- 3、注册界面
- 五、界面展示
前言
话不多说,大家都很忙,就不讲废话了。
如果想用来练手的话最好直接在idea上建项目,配置tomcat,然后按下面顺序进行。我原本是在eclipse上搭的项目,搬迁之后配置又出了好多bug,配置麻烦的很。配置tomcat的方法放下面,需要的话可以参考。
IntelliJ idea中配置tomcat并部署应用
eclipse中tomcat的配置及web应用的部署
一、项目目录
二、配置
1.lib下 引入jar包
这里需要连接数据库所需的mysql-connector-java以及servlet-api,需要的可以在 CSDN直接搜索,应该有大善人上传了。
2、配置tomcat 及 部署项目到服务器
可以参考上面那两篇博客,只一步很重要的,事关能不能最终实现功能,需要细心,一遍配不好,就配两遍,最后肯定能配好,然后你就会发现这玩意好恶心,根本记不住,只好写一篇blog留着等以后忘了用。
三、数据库的创建
推荐使用Navicat直接创建数据库,以及user表
如图:
一定要记清楚数据库及表的名称
四、后端代码
1、实体类User
public class User {
private int id;
private String userName;
private String password;
public User() {}
public User(String userName,String password) {
this.userName = userName;
this.password = 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 [userName=" + userName + "]";
}
}
2、数据库工具类
数据库工具类可以批量的向我们提供数据库连接,省却了许多麻烦
public class JdbcUtils {
public static Connection getConnection () throws SQLException {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//一般只需要改数据库名和密码就可以了
String url = "jdbc:mysql://localhost:3306/kaikeba1?useUnicode=true&characterEncoding=UTF-8&useSSl=false&serverTimezone=Asia/Shanghai";
String user = "root";
String password = "hahaha";
Connection connection = DriverManager.getConnection(url,user,password);
return connection;
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
3、控制类UserDao
public class UserDao {
/**
* 登录方法
* @param userName
* @return
*/
public User findUserByName(String userName) {
User user = null;//创建对象,后续如果能查询到对应用户,则user就是这个用户信息的载体
//或者说它就是用户
try {
//从JDBC工具类获取连接
Connection connection = JdbcUtils.getConnection();
//定义sql查询语句
String sql = "select id,userName,password from user2 where userName=?";
//预处理,传入sql语句
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//1即第一个?处的值为后续传入的userName参数
preparedStatement.setString(1, userName);
//执行查询操作得到结果集
ResultSet resultset = preparedStatement.executeQuery();
//对结果集中的数据进行遍历
while (resultset.next()) {
//如果可以从数据库中查到人名,将其其它信息赋值给user
user = new User();
user.setId(resultset.getInt(1));
user.setUserName(resultset.getString(2));
user.setPassword(resultset.getString(3));
}
return user;//findUserByName方法的返回值
} catch (SQLException e) {
e.printStackTrace();
}
return null;//查不到就返回null
}
/**
* 注册方法
* @param userName
* @param password
* @return
*/
public int addUser(String userName,String password) {
Connection connection = null;
try {
connection = JdbcUtils.getConnection();
String sql = "insert into user2(userName,password) values(?,?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, userName);
preparedStatement.setString(2, password);
int row = preparedStatement.executeUpdate();//row是数据库受此次executeUpdate操作影响的行数,即更新了几行
//输入了一个user信息,肯定只有1行
return row;
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
}
4、servlet类
LoginServlet
@WebServlet("/login.do")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LoginServlet() {
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
//这两者是从前端界面传过来的用户名和密码
String userName = request.getParameter("userName");
String password = request.getParameter("password");
//调用UserDao 中的方法findUserByName,传入userName进行验证
User user = new UserDao().findUserByName(userName);
//如果返回了一个user且其userName,password与前端输入的一致,则登录成功,跳转到主页面main.html
if(user != null && userName.equals(user.getUserName()) && password.equals(user.getPassword())) {
response.sendRedirect("main.html");
}else if (user == null) {
//否则就不动
response.sendRedirect("login.html");
System.out.println("该用户不存在");
}else {
//要不就是有一者输错了
response.sendRedirect("login.html");
System.out.println("用户名或密码错误");
}
}
}
注册RegisterServlet
@WebServlet("/register.do")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String userName = request.getParameter("userName");
String password = request.getParameter("password");
int result = new UserDao().addUser(userName, password);
//如果返回的是 1 ,则说明注册成功
if (result == 1) {
response.sendRedirect("login.html");
System.out.println("注册成功!登录");
}else {
response.sendRedirect("register.html");
System.out.println("用户名或密码为空,请重新输入");
}
}
}
四、前端代码
1、main主页面
首页,比较简陋,凑活看吧
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>系统主页</h2>
<hr>
<h2>欢迎登录 ~\(^o^)/~ </h2>
</body>
</html>
2、登录界面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
<style type="text/css">
*{
margin:0px;
padding:0px;
}
body{
background-image: url("./img/52281162762922964531629890033675.jpg");
background-size: 100%;
background-size: cover;
}
#div1{
width: 500px;
height: 260px;
position: absolute;
left: 50%;
top: 50%;
margin: -160px 0 0 -235px;
background-color: rgba(240, 255, 255, 0.5);
border-radius: 10px;
text-align: center;
opacity:0.8;
}
button{
width:85px;
height:40px;
background-color: White;
font-size: 10px;
border: none;
color: Black;
border-radius: 8px;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
}
button:hover{
background-color: Black;
color: Gold;
}
a{
color:black;
font-family: 江西拙楷;
font-size:10px;
text-decoration: none;
}
a:hover{
color:Green;
}
input{
width:200px;
height:40px;
border-radius:8px;
background:transparent;
border:1px solid #ffffff;
border-color:black;
}
</style>
</head>
<body>
<form action="login.do" method="post">
<div id="div1">
<h1>登录</h1><br>
<p>姓名 <input type="text" placeholder="username" name="userName"></p><br>
<p>密码 <input type="password" placeholder="password" name="password"></p><br>
<p><button type="submit" id="btn1">登录</button>
<button type="reset" id="btn2">重置</button></p>
<a href="register.html">去注册</a>
</div>
</form>
</body>
</html>
3、注册界面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册</title>
<style type="text/css">
form{
text-align: center;
}
a{
text-decoration: underline;
}
</style>
</head>
<body>
<form action="register.do" method="post">
<h1>注册</h1>
<p>用户名:<input type="text" name="userName" placeholder="请输入心仪的用户名"></p>
<p>密码:<input type="text" name="password" placeholder="请输入密码"></p>
<p><input type="submit" value="注册">
<input type="reset" value="重置"></p>
</form>
</body>
</html>