1.在Navicat for Mysql中创建登录用户表格
2.接下来需要用到idea,创建相关项目
注意:这里Project template一定要选择web application
3.创建不同的用户层架构
4.定义User类,并编写User部分相关代码
package com.iflytek.experiment.domain;
public class User {
private String username;
private String password;
private String nickname;
private String gender;
private int role;
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 getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}
}
定义完之后,右键Generate生成getter()和setter()方法
5.创建用户相关的服务接口和实现类
接口中定义用户登录服务方法:
package com.iflytek.experiment.service;
import com.iflytek.experiment.domain.User;
public interface IUserService {
//登录
User login(String username, String password);
}
实现类中实现用户登录服务:
package com.iflytek.experiment.service.impl;
import com.iflytek.experiment.dao.IUserDao;
import com.iflytek.experiment.dao.impl.UserDaoImpl;
import com.iflytek.experiment.domain.User;
import com.iflytek.experiment.service.IUserService;
public class UserServiceImpl implements IUserService {
private IUserDao dao = new UserDaoImpl();
@Override
public User login(String username, String password) {
return dao.selectByUsernameAndPassword(username, password);
}
}
6.创建用户相关的数据访问接口和实现类
接口中定义数据操作的方法:
package com.iflytek.experiment.dao;
import com.iflytek.experiment.domain.User;
public interface IUserDao {
//根据用户名和密码查询用户
User selectByUsernameAndPassword(String username, String password);
}
7.在pom.xml中导入数据库访问相关依赖
需要的依赖可在网站Maven Repository: Search/Browse/Explore (mvnrepository.com)中找到
8.添加数据库配置文件,注意数据库名称和自己数据库密码要填写正确
9.创建数据库的工具类,获取数据库连接池
package com.iflytek.experiment.utils;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.util.Properties;
public class JdbcUtil {
private static DataSource dataSource;
static {
// 读取资源目录下的配置文件,以输入流的方式返回
InputStream is = JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties");
Properties p = new Properties();
try {
p.load(is);
dataSource = DruidDataSourceFactory.createDataSource(p);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static DataSource getDataSource(){
return dataSource;
}
}
10.dao层实现类中应用dbutils工具类
package com.iflytek.experiment.dao.impl;
import com.iflytek.experiment.dao.IUserDao;
import com.iflytek.experiment.domain.User;
import com.iflytek.experiment.utils.JdbcUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import java.sql.SQLException;
import java.util.jar.JarEntry;
public class UserDaoImpl implements IUserDao {
//创建dbutils工具类的操作方法
//1、对于查询,使用query方法
//2、对于增删改,使用update方法
private QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
@Override
public User selectByUsernameAndPassword(String username, String password) {
//1.写SQL语句
String sql ="SELECT * FROM user WHERE username=? AND `password`=?";
//2.通过runner执行SQL语句
try {
User user = runner.query(sql,new BeanHandler<>(User.class),username,password);
return user;
} catch (SQLException e) {
throw new RuntimeException("登录出现异常",e);
}
}
}
11.将登录页面放置/webapp/目录下,其他css文件等资源放入static目录
这里可根据个人需求,编写登录页面
12. 创建登录servlet
package com.iflytek.experiment.web;
import com.iflytek.experiment.domain.User;
import com.iflytek.experiment.service.IUserService;
import com.iflytek.experiment.service.impl.UserServiceImpl;
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.io.UnsupportedEncodingException;
@WebServlet(name = "LoginServlet",value = "/login")
public class LoginServlet extends HttpServlet {
//protected void doGet(HttpServletRequest request,HttpServletResponse response){
// System.out.println("doGet");
//}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//获取用户提交的用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username + " " + password);
//服务器检验用户的输入
//访问数据库 查询username和password对应的用户
IUserService userService = new UserServiceImpl();
//接口引用 = new 实现类()的对象
User user = userService.login(username, password);
if (user == null) {
doGet(request, response);
} else{
//根据用户的身份进行对应的跳转
if (user.getRole()== 1){
System.out.println("当前登录用户是管理员");
} else {
System.out.println("当前登录用户是普通用户");
}
}
}
}
13. 登录测试。运行服务器,打开登录页,输入用户名和密码进行测试
此时登录后无响应是正常的
观察idea输出即可
注意:需要修改配置内容
修改URL
修改Application context的内容
第一次编写,有所不足,欢迎大家修改指正。