需求:通过服务端运行,用户可以在网页中进行账户,密码的登入,如果登入的账户密码正是我们提前添加在数据库中的数据一致,则网页提示登录成功,否则网页提示登入失败。
《1》、准备工作:
【1】使用的工具:i-dea linux虚拟机 SQLyog
【2】i_dea中准备以下几个jar包:
hamcrest-core-1.3.jar
junit-4.12.jar
mysql-connector-java-5.138.jar
Tomcat.8.5.45
【3】linux虚拟机中安装并配置好环境变量:
jdk-8u221-linux-64.tar.gz
MySQL-server-5.6.46-1.el7.x86
【4】SQLyog:
成功连接上linux虚拟机。
《2》、具体操作:
1.首先我这边在i-dea中新建工程下做的新建文件名如下:
2.在SQLyog中school库中创建了tb_user_info表,并且填入数据如下图
3.User.java 代码如下:
package cn.kgc;
public class User {
private int user_id;
private String username;
private String password;
@Override //to String 方法
public String toString() {
return "User{" +
"user_id=" + user_id +
", username='" + username + ''' +
", password='" + password + ''' +
'}';
}
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_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;
}
}
4.UserDao.java 代码如下:
package cn.kgc;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
private Connection conn;
private PreparedStatement pst;
public ResultSet rs; //只有查询才用到,增删改用不到这步
//下面4步为连接虚拟机中的MySQL
private final String DRIVER = "com.mysql.jdbc.Driver";
private final String URL = "jdbc:mysql://192.168.31.21:3306/school";//虚拟机IP地址
private final String USER = "root";//虚拟机中MySQL用户名
private final String PWD = "ok"; //虚拟机中MySQL密码
public void getConn() throws Exception { //1.获取连接
Class.forName(DRIVER);//加载驱动
conn = DriverManager.getConnection(URL, USER, PWD);//创建连接
}
//2.增删改
public void doUpdate(String sql, String... params) throws SQLException {
pst = conn.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
pst.setObject(i + 1, params[i]);
}
int rst = pst.executeUpdate();
System.out.println(rst > 0 ? "执行成功" : "执行失败");
}
//3.查
public void doSelect(String sql, String... params) throws SQLException {
pst = conn.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
pst.setObject(i + 1, params[i]);
}
rs = pst.executeQuery();
}
public List getUserList() throws Exception{
List userList=new ArrayList<>();
while(rs.next()){
User u=new User();
u.setUser_id(rs.getInt("user_id") );
u.setUsername(rs.getString("username"));
u.setPassword(rs.getString("password"));
userList.add(u);
}
return userList;
}
}
5.UserServlet.java 代码如下:
package cn.kgc;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class UserServlet extends HttpServlet {
//下面的@Override 用快捷键alt+回车,选择Create class 'HttpServlet'
//添加的是最上端我所添加的包
@Override //页面请求有两种类型,get请求会默认走到dgGet()方法
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
UserDao dao=new UserDao();
String user=req.getParameter("user");
String pwd=req.getParameter("pwd");
try {
dao.getConn();
String sql="select * from tb_user_info where username=? and password=?";
dao.doSelect(sql,user,pwd);
User u=dao.getUser();//根据用户输入的用户名和密码去数据库查询获取用户对象
//如果用户对象为空,则没有该用户,则无法登录,如果有,则可以登录
HttpSession session =req.getSession();
if(null==u){//用户名密码错误,不能登录
session.setAttribute("err","用户名密码错误,不能登录");
resp.sendRedirect("/logErr.jsp");//重定向
}else{//可以登录
session.setAttribute("msg","欢迎用户"+user+"登录!");
req.getRequestDispatcher("/logSuccess.jsp").forward(req,resp);
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override //post请求会默认走到doPost()方法
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.service(req, resp);
}
}
6.test.cn.kgc.UserDao Test.java 代码如下:
package cn.kgc;
import org.junit.Test;
import java.util.List;
public class UserDaoTest {
@Test
public void aaa() throws Exception { //查询并把结果放入用户对象
String sql="select * from tb_user_info";
UserDao dao=new UserDao();
dao.getConn();
dao.doSelect(sql) ;
List users=dao.getUserList();
System.out.println(users);
}
}
7.web.xml 代码如下:
userServlet cn.kgc.UserServlet userServlet /doLogin
8.index.jsp 代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
登录页面
9.logErr.jsp 代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
登录错误页面
${err}
10.logSuccess,jsp 代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
登录成功
${msg}
《3》、结果展示:



